شماره ركورد
19838
شماره راهنما(اين فيلد مربوط به كارشناس ميباشد لطفا آن را خالي بگذاريد)
۱۹۸۳۸
پديد آورنده
مرتضي ذاكري نصرابادي
عنوان
توليد خودكار داده آزمون در فازرهاي قالب فايل
مقطع تحصيلي
كارشناسي ارشد
رشته تحصيلي
مهندسي كامپيوتر
سال تحصيل
۱۳۹۷-۹۸
تاريخ دفاع
۱۳۹۷/۰۶/۳۱
استاد راهنما
دكتر سعيد پارسا
دانشكده
كامپيوتر
چكيده
آزمون فازي (فازينگ) يك فن آزمون پوياي نرمافزار است. در اين فن با توليد و تزريق مكرر دادههاي آزمون بدشكل به نرمافزار تحت آزمون (SUT)، بهدنبال يافتن خطاها و آسيبپذيريهاي احتمالي موجود در آن هستيم. براي نيل به اين هدف، آزمون فازي نيازمند دادههاي آزمون متنوع است. مشكل اساسي، پيچيده بودن ساختار ورودي برنامههايي است كه فايل را بهعنوان ورودي ميپذيرند. بررسيها نشان ميدهد بسياري از دادههاي آزمون توليدي در اين موارد، مسيرهاي محدود و سطحي را ميپيمايند؛ زيرا در همان مراحل اوليه بهعلت بدشكل، بودن توسط تجزيهگرِ SUT رد ميشوند. استفاده از ساختار گرامري فايلها براي توليد دادهها، منجربه افزايش پوشش كد ميشود؛ اما، استخراج گرامر براي ساختار فايل، اغلب، دستي صورت ميپذيرد كه مستلزم صرف هزينه و زمان زياد و مستعد خطاي فراوان است. در اين پاياننامه، روشي خودكار براي توليد داده آزمون بهصورت تركيبي ارائه ميدهيم. در روش خود، از مدلهاي زباني عصبي NLM)) كه با شبكههاي عصبي مكرر RNN)) ساخته ميشوند، استفاده ميكنيم. مدلهاي پيشنهادي با فنون يادگيري ژرف، قادر به يادگيري آماري ساختار فايلهاي پيچيده و سپس توليد دادههاي جديد متني، بهصورت مبتني بر گرامر و دادههاي دودويي بهصورت مبتني بر جابهجايي، هستند. فاز (بدشكلسازي) دادههاي آزمون، نيز توسط دو الگوريتم فاز جديد، تحت عنوان الگوريتمهاي فاز عصبي، كه از اين مدلها استفاده ميكنند، صورت ميپذيرد. از روش پيشنهادي خود، براي توليد داده و سپس آزمون فازي نرمافزار پيچيده MuPDF كه فايلهاي قالبِ سندِ حملپذير (PDF) را بهعنوان ورودي ميپذيرد، استفاده نموديم. براي آموزش مدلهاي مولد، يك پيكره بزرگ از فايلهاي PDF را گردآوري كرديم. آزمايشهاي ما نشان ميدهد كه دادههاي توليد شده با اين روش، منجربه افزايش ميزان پوشش كد اجرايي SUT و بهبود بيش از 7 درصدي آن، در مقايسه با فازرهاي قالب فايل مشهور، مثل AFL، ميشود. آزمايشها همچنين، بيانگر دقت يادگيري بهترِ NLMهاي سادهتر در قياس با مدل پيچيدهتر كدگذار-كدگشا و نيز شكست اين مدل، در ميزان پوشش كد SUT، حين آزمون فازي، هستند.
تاريخ ورود اطلاعات
1397/09/06
عنوان به انگليسي
Automatic Test Data Generation in File Format Fuzzers
تاريخ بهره برداري
9/22/2018 12:00:00 AM
دانشجوي وارد كننده اطلاعات
مرتضي ذاكري نصرابادي
چكيده به لاتين
Fuzz testing (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 faults and vulnerabilities. To this goal, fuzz testing requires varieties of test data. The most critical challenge is to handle the complexity of the file structures as program input. Surveys have revealed that many of the generated test data in these cases follow restricted numbers and superficial paths, because of being rejected by the parser of SUT in the initial stages of parsing. Using the grammatical structure of input files to generate test data lead to increase code coverage. However, often, the grammar extraction is performed manually, which is a time consuming, costly and error-prone task. In this thesis, we proposed an automated method for hybrid test data generation. To this aim, we apply neural language models (NLMs) that are constructed by recurrent neural networks (RNNs). The proposed models by using deep learning techniques can learn the statistical structure of complex files and then generate new textual test data, based on the grammar, and binary data, based on mutations. Fuzzing the generated data is done by two newly introduced algorithms, called neural fuzz algorithms that use these models. We use our proposed method to generate test data, and then fuzz testing of MuPDF complicated software which takes portable document format (PDF) files as input. To train our generative models, we gathered a large corpus of PDF files. Our experiments demonstrate that the data generated by this method leads to an increase in the code coverage, more than 7%, compared to state-of-the-art file format fuzzers such as American fuzzy lop (AFL). Experiments also indicate a better learning accuracy of simpler NLMS in comparison with the more complicated encoder-decoder model and confirm that our proposed models can outperform the encoder-decoder model in code coverage when fuzzing the SUT.