Fuzzing är en populär dynamisk programanalys teknik som används för att hitta sårbarheter i komplex programvara. Fuzzing innebär att presentera ett målprogram med skapade skadliga indata utformad för att orsaka krascher, buffertspill, minnesfel och undantag. Att tillverka skadliga indata på ett effektivt sätt är ett svårt öppet problem och ofta är det bästa sättet att generera sådana indata genom att tillämpa enhetliga slumpmässiga mutationer på redan befintliga giltiga indata (såddfiler). Vi presenterar en inlärningsteknik som använder neurala nätverk för att lära sig mönster i inmatningsfiler från tidigare fuzzing utforskningar för att vägleda framtida fuzzing utforskningar. I synnerhet, neural modeller lär sig en funktion för att förutsäga bra (och dåliga) platser i inmatningsfiler för att utföra fuzzing mutationer baserat på tidigare mutationer och motsvarande kod täckning information. Vi implementerar flera neurala modeller inklusive LSTMs och sekvens-till-sekvens modeller som kan koda variabel längd ingångsfiler. Vi införlivar våra modeller i den toppmoderna AFL (American Fuzzy Lop) fuzzer och visa betydande förbättringar när det gäller kodtäckning, unika kodvägar, och kraschar för olika inmatningsformat inklusive ELF, PNG, PDF och XML.
REF har föreslagit LSTM- och följande-seq-baserad modell för att skapa en funktion för att förutsäga de bra platserna i inmatningsfilerna för att vägleda ytterligare mutationer.
Not all bytes are equal: Neural byte sieve for fuzzing
{'venue': 'ArXiv', 'journal': 'ArXiv', 'mag_field_of_study': ['Computer Science']}