Abstract
Buffer overflow vulnerabilities are program defects that can cause a buffer to overflow at runtime. Many security attacks exploit buffer overflow vulnerabilities to compromise critical data structures. In this paper, we present a black-box testing approach to detecting buffer overflow vulnerabilities. Our approach is motivated by a reflection on how buffer overflow vulnerabilities are exploited in practice. In most cases the attacker can influence the behavior of a target system only by controlling its external parameters. Therefore, launching a successful attack often amounts to a clever way of tweaking the values of external parameters. We simulate the process performed by the attacker, but in a more systematic manner. A novel aspect of our approach is that it adapts a general software testing technique called combinatorial testing to the domain of security testing. In particular, our approach exploits the fact that combinatorial testing often achieves a high level of code coverage. We have implemented our approach in a prototype tool called Tance. The results of applying Tance to five open-source programs show that our approach can be very effective in detecting buffer overflow vulnerabilities
چکیده
نقاط آسیب پذیر در سر ریزی بافر را میتوان معایبی برنامه ای دانست که میتواند منجر به سر ریزی بافر در زمان اجرا گردد. بسیاری از حملات امنیتی، از این نقاط آسیب پذیر سوء استفاده کرده تا ساختار های داده ای حساس را تحت کنترل خود در آورند. در این مقاله، قصد داریم روش تست جعبه سیاه را به منظور تشخیص این نقاط آسیب پذیر ارائه دهیم. روش ما برگرفته از این انعکاس بوده که چطور میتوان از این نقاط آسیب پذیر بهره برد. در بسیاری از موارد مهاجم میتواند به وسیله ی کنترل پارامتر های بیرونی یک سیستم، بر روی آن تأثیر بگذارد. ما این پروسه ای که توسط مهاجم صورت میگیرد را شبیه سازی کرده که البته روش ما بیشتر سیستماتیک میباشد. یک جنبه ی جدید از روش ما این بوده که از یک تکنیک تست نرم افزاری عام تحت عنوان تست ترکیبی استفاده میکند. به طور خاص، روش ما از این اصل بهره برده که تست ترکیبی میتواند به سطح بالایی از پوشش کد دست پیدا کند. ما روش خود را با یک ابزاری که Tance نام دارد پیاده سازی کرده ایم. نتایج بکار گیری این روش بر روی برنامه های متن باز نشان داده است که روش ما میتواند در تشخیص این نقاط آسیب پذیر بسیار کار آمد عمل کند.
واژگان کلیدی: سیستم عامل، سر ریزی بافر، مدیریت حافظه، زمانبندی پردازنده
1-مقدمه
امنیت نرم افزار را میتوان یکی از نگرانی های عمده در بسیاری از فعالیت های مرتبط با تضمین امنیت دانست[26]. روش های فعلی به منظور تضمین امنیت نرم افزار را میتوان به دو دسته تقسیم کرد. اولین دسته بندی، بر مبنای تحلیل ایستا بوده که مشخصه های امنیتی را به وسیله ی تحلیل کد منبع در یک برنامه چک میکند ولی برنامه را اجرا نمیکند. دومین دسته بندی نیز بر مبنای تحلیل پویا یا تست بوده که برنامه ی هدف را اجرا کرده و بررسی میکند که آیا رفتار برنامه در زمان اجرا میتواند بعضی از مشخصه های امنیتی را تضمین کند یا خیر. تحلیل ایستا روشی سریع بوده که میتواند برای اثبات مشخصه های برنامه بکار گرفته شود. اگرچه تحلیل ایستا ، دارای مسئله ی مثبت کاذب یا منفی کاذب نیز میباشد. از سوی دیگر، تست فقط مسائلی را تشخیص داده که در زمان اجرا اتفاق میافتند. اگرچه تست نیاز به انتخاب ورودی و اجرای برنامه داشته که این امر میتواند مشکل و زمان بر باشد. علاوه بر این، تست امری خسته کننده نیست....