بهبود معیار پوشش کد برای کشف آسیب پذیری در پروتکلهای شبکه دارای حالت توسط فازینگ ترکیبی
محورهای موضوعی : ICT
حمید رضایی رهورد
1
,
مهدی سالخورده حقیقی
2
1 - دانشکده مهندسی کامپیوتر و فناوری اطلاعات، دانشگاه سجاد، مشهد
2 - دانشکده مهندسی کامپیوتر و فناوری اطلاعات ، دانشگاه سجاد مشهد
کلید واژه: آزمون نرم افزار, آزمون فازینگ, آزمون پروتکل های شبکه, آسیب پذیری, اجرای نمادین, اجرای پویا-نمادین,
چکیده مقاله :
فازینگ نرمافزار، روشی برای یافتن آسیبپذیریهای امنیتی در برنامههای کاربردی است. در این روش با ارسال دادههای تصادفی به برنامه، سعی میشود مواردی پیدا شود که منجر به رفتارهای نامطلوب و خطاهایی همچون خرابی حافظه یا دسترسیهای غیرمجاز شود. یکی از روشهای پیشنهادی برای بهبود و اثربخشی فازینگ، استفاده از تحلیل نمادین و اجرای پویا-نمادین است. در این روش علاوه بر تولید دادههای تصادفی، از تحلیل منطقی برنامه و اجرای نمادین آن برای تولید دادههایی استفاده میشود که بتوانند مسیرهای جدیدی از اجرای برنامه را پوشش دهند. در این پژوهش نشان دادهایم که میتوان از روش اجرای پویا-نمادین برای فازینگ پروتکلهای شبکه استفاده نمود و همچنین این فرایند را بهبود بخشید. بدین منظور اولین چارچوب برای فازینگ ترکیبی پروتکلهای شبکه طراحی و پیادهسازی شده است. نتایج بر روی دو سرویس dcmtk و dnsmasq نشان میدهند که فازینگ ترکیبی در معیار پوشش کد نسبت به فازینگ سنتی عملکرد بهتری دارد. پوشش شاخه در سرویس dcmtk مقدار 2.71 درصد نسبت به AFLNet بهبود داشته است که توانسته عملکرد منفی NyxNet نسبت به AFLNet را مثبت نماید. همچنین پوشش شاخه در سرویس dnsmasq نسبت به AFLNet مقدار 37.72 درصد و نسبت به NyxNet مقدار 11.82 درصد بهبود داشته است.
Fuzzing software is a method for finding security vulnerabilities in applications. In this method, by sending random data to the program, attempts are made to find cases that lead to undesirable behaviors and errors such as memory corruption or unauthorized access. One of the proposed methods for improving and enhancing fuzzing is the use of symbolic analysis and dynamic-symbolic execution. In this method, in addition to generating random data, logical analysis of the program and its symbolic execution are used to generate data that can cover new paths in program execution. In this research, we have shown that the dynamic-symbolic execution method can be used for fuzzing network protocols and also improve this process. For this purpose, the first framework for hybrid fuzzing of network protocols has been designed and implemented. The results on two services dcmtk and dnsmasq show that hybrid fuzzing performs better in terms of code coverage compared to traditional fuzzing. Branch coverage in the dcmtk service improved by 2.71 percent compared to AFLNet, which was able to make the negative performance of NyxNet compared to AFLNet positive. Also, branch coverage in the dnsmasq service improved by 37.72 percent compared to AFLNet and by 11.82 percent compared to NyxNet.