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

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

نویسندگان

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

چکیده

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

کلیدواژه‌ها


عنوان مقاله [English]

Presenting an Intelligence Test Data Generation Method to Discover Software Vulnerabilities

نویسندگان [English]

  • taghi taghavi
  • Masoud Bagheri
Imam Hossein Comprehensive University
چکیده [English]

In this paper, a gray box fuzzer is presented to detect vulnerabilities in executable binary code. The literature surveys show that fuzz testing has three major problems. At first, the input space provided by the fuzzers to coverage execution paths in a binary program, can be very large. Secondly, most fuzzers can not support sufficient coverage of execution paths because of large input space. Finally, a large number of possible vulnerabilities can not reveal within an unseen execution path because of this unsufficient coverage. The proposed method, resolves the problem of large input space, in an evolutionary process, by conducting the test data generation towards suspicious paths in which one or more vulnerability patterns are observed. In the presented method, when a vulnerablility pattern is observed in an execution path by a test data, the next test data is generated revealing the vulnerablity. As a result, the number of detected vulnerabilities can increase. Our evaluations show better performance of presented method compared to other fuzz testing methods.

کلیدواژه‌ها [English]

  • Fuzz Testing
  • Test Data Generation
  • Dynamic Analysis
  • Path Coverage
[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.