ارائه روشی هوشمند برای تولید داده آزمون به‌منظور کشف آسیب‌پذیری‌های نرم‌افزار

نوع مقاله : کامپیوتر - نرم افزار

نویسندگان

دانشگاه جامع امام حسین(ع)

چکیده

در این مقاله، یک فازر جعبه خاکستری، جهت کشف آسیب­پذیری­ در کدهای باینری اجرایی ارائه شده است. بررسی­ها نشان می­دهد که آزمون فازینگ دارای سه مشکل اساسی است. در ابتدا، فضای ورودی فراهم‌شده جهت پوشش مسیرهای اجرایی برنامه، توسط فازرها می­تواند بسیار بزرگ باشد. از سوی دیگر به‌واسطه بزرگی فضای ورودی، اغلب فازرها پوشش نامناسبی از مسیرهای اجرای کد را ارائه می­دهند. درنهایت، به دلیل این پوشش نامناسب، تعداد زیادی از آسیب‌پذیری‌های ممکن در مسیرهای نادیده گرفته شده، آشکار نمی­گردند. روش پیشنهادی این مقاله، مشکل بزرگی فضای ورودی را با محدود کردن تولید داده آزمون به پوشش مسیرهای مشکوکی که الگوهای آسیب‌پذیری در آن­ها بیشتر مشاهده شده، در طی یک فرایند تکاملی، حل نموده است. در راهکار ارائه شده، زمانی که یک داده آزمون یک آسیب‌پذیری را در یک مسیر اجرایی آشکار می­کند، داده آزمون بعدی به‌گونه‌ای تولید می­شود که باعث رخداد آن آسیب­پذیری ­شود. درنتیجه تعداد آسیب­پذیری­های شناسایی‌شده افزایش می­یابد. ارزیابی‌های انجام‌شده، کارایی برتر روش پیشنهادی را در مقایسه با سایر روش­های آزمون فازینگ نشان می­دهند.

کلیدواژه‌ها


[1]     Takanen, A.; Demott, J. D.; Miller, C. “Fuzzing for Software Security Testing and Quality Assurance”; Artech. House, 2008.
[2]     Godefroid, P.; Levin, M.; Molnar, Y. “Automated White Box Fuzz Testing”; Proceedings of Network and Distributed Systems Security 2008.
[3]     Marcellino, B. A.; Hsiao, M. S. “Dynamic Partitioning Strategy to Enhance Symbolic Execution”; Design, Automation & Test in Europe Conference & Exhibition 2016, 774-779.
[4]     Yang, S.; Man, T.; Xu, J.; Zeng, F.; Li, K. “RGA: A Lightweight and Effective Regeneration Genetic Algorithm for Coverage-oriented Software Test Data Generation”; Information and Software Technology 2016, 76, 19-30.
[5]     Chen, T. Y.; Kuo, F. C.; Merkel, R. G.; Tse, T. H. “Adaptive Random Testing: The Art of Test Case Diversity”; J. Systems and Software 2010, 83, 60-66.
[6]     Barus, A. C.; Chen, T. Y.; Kuo, F. C.; Liu, H.; Merkel, R.; Rothermel, G. “A Cost-Effective Random Testing Method for Programs with Non-Numeric Inputs”; IEEE Trans. Computers 2016, 99, 1-4.
[7]     Liu, B.; Shi, L.; Cai, Z.; Li, M. “Software Vulnerability Discovery Techniques: A Survey”; Fourth International Conference on Multimedia Information Networking and Security 2012, 152-156.
[8]     Nouman, M.; Pervez, U.; Hasan, O.; Saghar, K. “Software Testing: A Survey and Tutorial on White and Black-Box Testing of C/C++ Programs”; Region 10 Symposium IEEE 2016, 225-230.
[9]     McNally, R.; Yiu, K.; Grove, D.; Gerhardy, D. “Fuzzing: The State of the Art”; Defense Science and Technology Organization Edinburgh (Australia), 2012.
[10]  Mouzarani, M.; Sadeghiyan, B.; Zolfaghari, M. “A Smart Fuzzing Method for Detecting Stack-based Buffer Overflow in Binary Codes”; IET Software 2016, 10, 96-107.
[11]  Chen, T.; Zhang, X. S.; Guo, S. Z.; Li, H. Y.; Wu, Y. “State of the Art: Dynamic Symbolic Execution for Automated Test Generation”; Future Generation Computer Systems 2013, 29, 1758-1773.
[12]  Mouzarani, M.; Sadeghiyan, B.; Zolfaghari, M. “A Smart Fuzzing Method for Detecting Heap-Based Buffer Overflow in Executable Codes”; IEEE 21st Pacific Rim Int. Symposium Dependable Computing 2015, 42-49.
[13]  Fangquan, D.; Chaoqun, D.; Yao, Z.; Teng, L. “Binary-Oriented Hybrid Fuzz Testing”; I6th IEEE Int. Conf. Software Engineering and Service Science 2015, 345-348,.
[14]  Pham, V. T.; Ng, W. B.; Rubinov, K.; Roychoudhury, A. “Hercules: Reproducing Crashes in Real-World Application Binaries”; 37th Int. Conf. Software Eng. 2015, 891-901.
[15]  Khatun, S.; Rabbi, K. F.; Yaakub, C. Y.; Klaib, M. J. “A Random Search Based Effective Algorithm for Pairwise Test Data Generation”; Int. Conf. Electrical, Control and Computer Engineering 2011, 293-297.
[16]  Huang, R.; Xie, X.; Chen, T. Y.; Lu, Y. “Adaptive Random Test Case Generation for Combinatorial Testing”; IEEE 36th Annual Computer Software and Applications Conference 2012, 52-61.
[17]  Chen, T. Y.; Kuo, F. C.; Merkel, R. G.; Ng, S .P. “Mirror Adaptive Random Testing”; In Information and Software Technology 2004, 46, 1001-1010.
[18]  Huang, R.; Liu, H.; Xie, X. “Enhancing Mirror Adaptive Random Testing Through Dynamic Partitioning”; Information and Software Technology 2015, 67, 13-29.
[19]  Shuai, B.; Li, M.; Li, H.; Zhang, Q. “Test Case Generation for Vulnerability Detection Using Genetic Algorithm”; 4rd Int. Conf. Consumer Electronics, Communications and Networks 2015, 1198-1203.
[20]  Shuai, B.; Li, M.; Li, H.; Zhang, Q. “Software Vulnerability Detection Using Genetic Algorithm and Dynamic Taint Analysis”; 3rd Int. Conf. Consumer Electronics, Communications and Networks 2013, 589-593.
 [21]  Shuai, B.; Li, H.; Zhang, L.; Zhang, Q. “Software Vulnerability Detection Based on Code Coverage and Test Cost”; 11th Int. Conf. Comput. Intelligence and Security 2015, 317-321.
[22]  Yi, M. “The Research of Path-Oriented Test Data Generation Based on a Mixed Ant Colony System Algorithm and Genetic algorithm”; 8th Int. Conf. Wireless Communications, Networking and Mobile Computing 2012, 1-4.
[23]  Aleti, A.; Grunske, L. “Test Data Generation with a Kalman Filter-Based Adaptive Genetic Algorithm”; J. Systems and Software 2015, 103, 343-352.
 [24]  Mann, M.; Sangwan, O. P.; Singh, S. “Automatic Goal-Oriented Test Data Generation Using a Genetic Algorithm and Simulated Annealing”; 6th Int. Conf. Cloud System and Big Data Engineering 2016, 83-87.
[25]  Kun, W.; Yichen, W. “Software Test Case Generation Based on the Fault Propagation Path Coverage”; Annual Reliability and Maintainability Symposium 2016, 1-4.