Fuzzing har blivit de facto standard teknik för att hitta programvara sårbarheter. Men även state-of-theart fuzzers är inte särskilt effektiva på att hitta svårt att trigga programvara buggar. De flesta populära fuzzers använder evolutionsvägledning för att generera ingångar som kan utlösa olika buggar. Sådana evolutionära algoritmer, samtidigt som de är snabba och enkla att implementera, fastnar ofta i fruktlösa sekvenser av slumpmässiga mutationer. Gradientstyrd optimering är ett lovande alternativ till evolutionär vägledning. Gradientstyrda tekniker har visat sig avsevärt överträffa evolutionära algoritmer vid lösning av högdimensionella strukturerade optimeringsproblem i domäner som maskininlärning genom att effektivt utnyttja gradienter eller högre orderderivat av den underliggande funktionen. Dock är gradientstyrda tillvägagångssätt inte direkt tillämpliga på fuzzing som verkliga program beteenden innehåller många diskontinuiteter, platåer och åsar där gradientbaserade metoder ofta fastnar. Vi observerar att detta problem kan åtgärdas genom att skapa en smidig surrogatfunktion som approximerar målprogrammets diskreta förgreningsbeteende. I detta papper föreslår vi en ny program utjämning teknik med surrogat neurala nätverk modeller som kan gradvis lära sig smidig approximationer av ett komplext, real-world programs förgreningsbeteenden. Vi visar vidare att sådana neurala nätverk modeller kan användas tillsammans med gradientstyrda inmatningssystem för att avsevärt öka effektiviteten i fuzzing processen. Våra omfattande utvärderingar visar att NEUZZ avsevärt överträffar 10 toppmoderna gråboxsfuzzers på 10 populära real-world-program både på att hitta nya buggar och uppnå högre kanttäckning. NEUZZ hittade 31 tidigare okända fel (inklusive två CVE) som andra fuzzers inte hittade i 10 verkliga program och uppnådde 3X mer kanttäckning än alla testade gråbox fuzzers under 24 timmars körningar. Dessutom överträffade NEUZZ även befintliga fuzzers på både LAVA-M och DARPA CGC feldatauppsättningar.
NEUZZ REF använder gradient-guide ingångsgenerering metod för att öka effektiviteten i fuzzing processen baserad på surrogat neurala nätverk.
NEUZZ: Efficient Fuzzing with Neural Program Smoothing
{'venue': '2019 IEEE Symposium on Security and Privacy (SP)', 'journal': '2019 IEEE Symposium on Security and Privacy (SP)', 'mag_field_of_study': ['Computer Science']}