Abstract:
فازینگ به معنی اجرای مکرر برنامه تحت آزمون با ورودیهای تغییر یافته، با هدف یافتن آسیبپذیری است. در صورتی که ورودیهای برنامه تحت آزمون دارای ساختار پیچیدهای باشند، تولید ورودیهای تغییر یافته برای انجام فازینگ کار راحتی نیست. بهترین راه حل در این موارد، استفاده از ساختار ورودی برنامه تحت آزمون به منظور تولید دقیق داده آزمون است. مشکلی که وجود دارد این است که ممکن است مستندات ساختار ورودی برنامه تحت آزمون در دسترس نباشد. همچنین درک انسانی چنین ساختارهای پیچیدهای نیز بسیار مشکل، پرهزینه، زمانبر و مستعد خطای انسانی است. برای غلبه بر مشکلات فوق، استفاده از یادگیری ماشین و شبکههای عصبی عمیق به منظور یادگیری خودکار ساختارهای پیچیده ورودیهای برنامه و تولید داده آزمون متناسب با این ساختار پیشنهاد شده است. یکی از چالشهای اصلی در این زمینه، استفاده از مدل یادگیری متناسب با کاربرد مورد نظر است. در این مقاله، مدلهای یادگیری عمیق مناسب برای یادگیری و تولید داده آزمون در فازرهای مبتنی بر فایل مورد بررسی قرار گرفته است. همچنین با معرفی پارامترهای مناسب برای بررسی کارایی، ارزیابی مدلهای یادگیری عمیق انجام شده است. بر این اساس، شبکههای عصبی بازرخداد و مشتقات آن به عنوان بهترین مدلهای یادگیری عمیق برای دادههای متنی انتخاب شده است. همچنین پارامترهای موثر برای ارزیابی کارایی مدلهای یادگیری عمیق شامل زمان آموزش، میزان خطای مدلها در زمان آموزش و و زمان ارزیابی در نظر گرفته شده است. پارامتر میزان خطا به عنوان پارامتر اصلی، یکبار در مدلهای یادگیری عمیق مختلف با ساختار یکسان و یکبار در مدلهای یادگیری عمیق یکسان با ساختار متفاوت مورد ارزیابی قرار گرفته و بهترین مدل یادگیری عمیق انتخاب و معرفی شده است.
Fuzzing means repeatedly running program under test by modified inputs, with the aim of finding vulnerabilities in it. If program inputs under test have a complex structure, generating modified inputs for fuzzing is not an easy task. Best solution in these cases is to use the input structure of the program under test to produce accurate test data. The problem is that maybe the input structure documentation of program under test not be available. Human understanding of such complex structures is also very difficult, costly, time consuming, and prone to human errors. To overcome to above problems, use of machine learning and deep neural networks to automatically learn the complex structures of program inputs and generate test data tailored to this structure has been proposed. One of main challenges in this field is using appropriate deep learning model to intended usage. In this paper, suitable deep learning models for learning and test data generation in file-based fuzzers are studied. Also by introducing appropriate parameters to performance evaluation, the evaluation has performed. So recurrent neural networks and its derivations introduced as best deep learning models for text data. Also, effective parameters to performance evalution include training time, loss value in training and evaluate time. Loss value as main parameter once used in various deep learning models with same structure and again in same deep learning models with various structures to select best deep learning model.