تولید خودکار داده آزمون در فازرهای قالب فایل

نوع مقاله : مقاله پژوهشی

نویسندگان

1 گروه نرم‌افزار، دانشکده مهندسی کامپیوتر، دانشگاه علم و صنعت ایران، تهران، ایران.

2 تهران، اتوبان رسالت، خیابان هنگام، دانشگاه علم و صنعت ایران

چکیده

 آزمون فازی یک فن آزمون پویای نرم‌افزار است. در این فن با تولید ورودی‌های بدشکل و تزریق پی‌در‌پی آن‌ها به نرم‌افزار تحت آزمون، دنبال یافتن خطا‌ها و آسیب‌پذیری‌های احتمالی آن هستیم. ورودی اصلی بسیاری از نرم‌افزارهای دنیای واقعی فایل‌ است. تعداد زیادی از داده‌های آزمون که برای آزمون فازی این نرم‌افزارها تولید می‌شوند در همان مراحل اوّلیه به‌علّت نداشتن قالب مورد قبول، توسط پویش‌گر فایل برنامه رد می‌شوند. در نتیجه شاهد پوشش کم کد برنامه در روند آزمون فازی هستیم. استفاده از گرامرِ ساختار فایل برای تولید داده آزمون، منجربه افزایش پوشش کد می‌گردد، اما این گرامر معمولاً به‌صورت دستی تهیه می‌شود که کاری زمان‌بر، پرهزینه و مستعد خطا است. در این مقاله روشی نو با استفاده از مدل‌های زبانی عصبی ژرف برای یادگیری خودکار ساختار فایل و سپس تولید و فاز داده‌های آزمون ارائه شده است. آزمایش‌های ما بهبود پوشش کد روش پیشنهادی را در مقایسه با دیگر روش‌های تولید داده آزمون نشان می‌دهد. برای نرم‌افزار MuPDF که قالب فایل‌ پیچیده PDF را به‌عنوان ورودی می‌پذیرد، بیش از 30/1 تا 12 درصد بهبود پوشش کد را نسبت به روش‌های هوشمند و روش تصادفی داشته‌ایم.

کلیدواژه‌ها


[1]          B. P. Miller, L. Fredriksen, and B. So, “An empirical study of the reliability of unix utilities,” Commun. ACM, vol. 33, no. 12, pp. 32–44, 1990.##
[2]          B. P. Miller et al., “Fuzz revisited: a  re-examination of the reliability of unix utilities and services,” 1995.#3
[3]          J. E. Forrester and B. P. Miller, “An empirical study of the robustness of  Windows NT applications using random testing,” Proc. 4th USENIX Wind. Syst. Symp., no. August, pp.   59–68, 2000.##
[4]          B. P. Miller, G. Cooksey, and F. Moore, “An empirical study of the robustness of MacOS applications using random testing,” Proc. 1st Int. Work. Random Testing, RT’06, vol. 2006, no. March 2017, pp. 46–54, 2006.##
[5]          G. Evron and N. Rathaus, “Open source fuzzing tools,” 2007.##
[6]          S. Rawat, V. Jain, A. Kumar, L. Cojocar, C. Giuffrida, and H. Bos, “VUzzer: application-aware evolutionary fuzzing,” In Proceedings of the Network and Distributed System Security Symposium (NDSS), 2017.##
[7]          M. Zalewsky, “American fuzzy lop,” [Online]. Available: http://lcamtuf.coredump.cx/afl/. [Accessed: 11-Oct-2017]. 2013.##
[8]          P. Godefroid, H. Peleg, and R. Singh, “Learn&Fuzz: machine learning for input fuzzing,” In Proceedings of the 32Nd IEEE/ACM International Conference on Automated Software Engineering, pp. 50–59, 2017.##
[9]          I. Sutskever, O. Vinyals, and Q. V Le, “Sequence to sequence learning with neural networks,” In Advances in Neural Information Processing Systems 27, Z. Ghahramani, M. Welling, C. Cortes, N. D. Lawrence, and K. Q. Weinberger, Eds. Curran Associates, Inc., pp. 3104–3112, 2014.##
[10]        K. Cho et al., “Learning phrase representations using RNN encoder-decoder for statistical machine translation,” In Proceedings of the 2014 Conference on Empirical Methods in Natural Language Processing (EMNLP), pp. 1724–1734, 2014.##
[11]        D. Jurafsky and J. H. Martin, “Speech and language processing (second edition),” Upper Saddle River, NJ, USA: Prentice-Hall, Inc., 2009.##
[12]        T. Mikolov, M. Karafiát, L. Burget, J. Cernocký, and S. Khudanpur, “Recurrent neural network based language model,” In Proceedings of the 11th Annual Conference of the International Speech Communication Association, INTERSPEECH 2010, vol. 2, pp. 1045–1048, 2010.##
[13]        M. Sutton, A. Greene, and P. Amini, “Fuzzing brute force vulnerability discovery,” 1st ed. Addison-Wesley, 2007.##
[14]        A. S. Incorporated, “PDF reference, version 1.7,” no. November, Adobe, 2006.##
[15]        “MuPDF,” [Online]. Available: https://mupdf.com/. [Accessed: 27-Jul-2018]. 2018.##
[16]        A. Takanen, J. D. Demott, and C. Miller, “Fuzzing for Software Security Testing and Quality Assurance,” 2nd ed. Norwood, MA, USA: Artech House, Inc., 2018.##
[17]        C. Chen, B. Cui, J. Ma, R. Wu, J. Guo, and W. Liu, “A systematic review of fuzzing techniques,” Comput. Secur., vol. 75, pp. 118–137, 2018.##
[18]        A. Kettunen, “Test harness for web browser fuzz testing,” University of Oulu, 2014.##
[19]        R. Mcnally, K. Yiu, and D. Grove, “Fuzzing : the state of the art,” DSTO Def. Sci. Technol. Organ., p. 55, 2012.##
[20]        P. Godefroid, A. Kiezun, and M. Y. Levin, “Grammar-based whitebox fuzzing,” ACM SIGPLAN Not., vol. 43, no. 6, p. 206, 2008.##
[21]        S. M. Yaghoubi, “Design and implementation fuzzer to determine web browser vulnerabilities,” Iran University of Science and Technology, School of Computer Engineering, 2013. (In Persian)##
[22]        S. Amini, “Design and implementation of test data generation method for software vulnerability detection,” Iran University of Science and Technology, School of Computer Engineering, 2016. (In Persian)##
[23]