fuzz testing
در نشریات گروه پدافند غیرعامل-
فازرها می توانند از طریق تولید ورودی های آزمون و اجرای نرم افزار با این ورودی ها، آسیب پذیری ها را در نرم افزار آشکار کنند. رویکرد فازرهای مبتنی بر گرامر، جستجو در دامنه داده های قابل تولید توسط گرامر به منظور یافتن یک بردار حمله با قابلیت بهره برداری از آسیب پذیری است. چالش این فازرها، دامنه جستجوی بسیار بزرگ یا نامحدود هست و یافتن پاسخ در این دامنه یک مسئله سخت است. تکامل گرامری یکی از الگوریتم های تکاملی است که می تواند برای حل مسئله جستجو از گرامر استفاده نماید. در این تحقیق با استفاده از تکامل گرامری یک رویکرد جدید جهت تولید داده ورودی آزمون فاز به منظور بهره برداری از آسیب پذیری تزریق اسکریپت معرفی شده است. به این منظور یک روش استنتاج گرامر تزریق اسکریپت از روی بردارهای حمله ارایه شده است و یک تابع محاسبه برازندگی جهت هدایت تکامل گرامری برای جستجوی بهره برداری نیز ارایه گردیده است. این روش، بهره برداری خودکار از آسیب پذیری تزریق اسکریپت را با رویکرد جعبه سیاه محقق ساخته است. با روش این تحقیق 19% بهبود در تعداد اکسپلویت های کشف شده نسبت به روش جعبه سفید ناوکس و ابزار جعبه سیاه زپ و بدون هیچ اتهام غلط، به دست آمده است.کلید واژگان: آسیب پذیری، بهره برداری از آسیب پذیری، تزریق اسکریپت یا XSS، تکامل گرامری، فازر، آزمون فازFuzzers can reveal vulnerabilities in the software by generating test input data and feeding inputs to software under test. The approach of grammar-based fuzzers is to search in the domain of test data which can be generated by grammar in order to find an attack vector with the ability to exploit the vulnerability. The challenge of fuzzers is a very large or infinite search domain and finding the answer in this domain is a hard problem. Grammatical Evolution(GE) is one of the evolutionary algorithms that can utilize grammar to solve the search problem. In this research, a new approach for generation of fuzz test input data by using grammatical evolution is introduced to exploit the cross-site scripting vulnerabilities. For this purpose, a grammar for generating of XSS attack vectors is presented and a fitness calculation function is proposed to guide the GE in search for exploitation. This method has realized the automatic exploitation of vulnerability with black-box approach. In the results of this research, 19% improvement achieved in the number of vulnerabilities discovered compared to the white-box method of NAVEX and black-box ZAP tool, and without any false positives.Keywords: Vulnerability, Exploitation, Cross Site Scripting (XSS), Grammatical Evolution, Fuzzer, Fuzz Testing
-
آزمون فازی یک فن آزمون پویای نرم افزار است. در این فن با تولید ورودی های بدشکل و تزریق پی در پی آن ها به نرم افزار تحت آزمون، دنبال یافتن خطا ها و آسیب پذیری های احتمالی آن هستیم. ورودی اصلی بسیاری از نرم افزارهای دنیای واقعی فایل است. تعداد زیادی از داده های آزمون که برای آزمون فازی این نرم افزارها تولید می شوند در همان مراحل اولیه به علت نداشتن قالب مورد قبول، توسط پویش گر فایل برنامه رد می شوند. در نتیجه شاهد پوشش کم کد برنامه در روند آزمون فازی هستیم. استفاده از گرامر ساختار فایل برای تولید داده آزمون، منجربه افزایش پوشش کد می گردد، اما این گرامر معمولا به صورت دستی تهیه می شود که کاری زمان بر، پرهزینه و مستعد خطا است. در این مقاله روشی نو با استفاده از مدل های زبانی عصبی ژرف برای یادگیری خودکار ساختار فایل و سپس تولید و فاز داده های آزمون ارایه شده است. آزمایش های ما بهبود پوشش کد روش پیشنهادی را در مقایسه با دیگر روش های تولید داده آزمون نشان می دهد. برای نرم افزار MuPDF که قالب فایل پیچیده PDF را به عنوان ورودی می پذیرد، بیش از 30/1 تا 12 درصد بهبود پوشش کد را نسبت به روش های هوشمند و روش تصادفی داشته ایم.کلید واژگان: آزمون فازی، داده آزمون، پوشش کد، شبکه عصبی مکرر، مدل زبانی، یادگیری ژرفFuzzing is a dynamic software testing technique. In this technique with repeated generation and injection of malformed test data to the software under test (SUT), we are looking for the possible errors and vulnerabilities. Files are significant inputs to most real-world applications. Many of test data which are generated for fuzzing such programs are rejected by the parser because they are not in the acceptable format and this results in a low code coverage in the process of fuzz testing. Using the grammatical structure of input files to generate test data leads to increase code coverage. However, often, the grammar extraction is performed manually, which is a time consuming, costly and error-prone task. In this paper, a new method, based on deep neural language models (NLMs), is proposed for automatically learning the file structure and then generating and fuzzing test data. Our experiments demonstrate that the data produced by this method leads to an increase in the code coverage compared to previous test data generation methods. For MuPDF software, which accepts the PDF complex file format as an input, we have more than 1.30 to 12 percent improvement in code coverage than both the intelligence and random methods.Keywords: Fuzz Testing, test data, code coverage, recurrent neural network, language model, deep learning
-
در این مقاله، یک فازر جعبه خاکستری، جهت کشف آسیب پذیری در کدهای باینری اجرایی ارائه شده است. بررسی ها نشان می دهد که آزمون فازینگ دارای سه مشکل اساسی است. در ابتدا، فضای ورودی فراهم شده جهت پوشش مسیرهای اجرایی برنامه، توسط فازرها می تواند بسیار بزرگ باشد. از سوی دیگر به واسطه بزرگی فضای ورودی، اغلب فازرها پوشش نامناسبی از مسیرهای اجرای کد را ارائه می دهند. درنهایت، به دلیل این پوشش نامناسب، تعداد زیادی از آسیب پذیری های ممکن در مسیرهای نادیده گرفته شده، آشکار نمی گردند. روش پیشنهادی این مقاله، مشکل بزرگی فضای ورودی را با محدود کردن تولید داده آزمون به پوشش مسیرهای مشکوکی که الگوهای آسیب پذیری در آن ها بیشتر مشاهده شده، در طی یک فرایند تکاملی، حل نموده است. در راهکار ارائه شده، زمانی که یک داده آزمون یک آسیب پذیری را در یک مسیر اجرایی آشکار می کند، داده آزمون بعدی به گونه ای تولید می شود که باعث رخداد آن آسیب پذیری شود. درنتیجه تعداد آسیب پذیری های شناسایی شده افزایش می یابد. ارزیابی های انجام شده، کارایی برتر روش پیشنهادی را در مقایسه با سایر روش های آزمون فازینگ نشان می دهند.
کلید واژگان: آزمون فازینگ، تولید داده آزمون، تحلیل رفتاری، پوشش مسیر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.
Keywords: Fuzz Testing, Test Data Generation, Dynamic Analysis, Path Coverage
- نتایج بر اساس تاریخ انتشار مرتب شدهاند.
- کلیدواژه مورد نظر شما تنها در فیلد کلیدواژگان مقالات جستجو شدهاست. به منظور حذف نتایج غیر مرتبط، جستجو تنها در مقالات مجلاتی انجام شده که با مجله ماخذ هم موضوع هستند.
- در صورتی که میخواهید جستجو را در همه موضوعات و با شرایط دیگر تکرار کنید به صفحه جستجوی پیشرفته مجلات مراجعه کنید.