Fuzzing används i stor utsträckning för sårbarhetsdetektering av programvara. Det finns olika typer av fuzzers med olika fuzzing strategier, och de flesta av dem presterar bra på sina mål. Men i branschpraktik och empirisk studie, prestanda och generalisering förmåga av dessa väl utformade fuzzing strategier utmanas av komplexiteten och mångfalden av verkliga tillämpningar. I denna uppsats, inspirerad av idén om ensemble lärande, föreslår vi först en ensemble fuzzing strategi EnFuzz, som integrerar flera fuzzing strategier för att få bättre prestanda och generalisering förmåga än någon beståndsdel fuzzer ensam. Först definierar vi mångfalden av bas fuzzers och väljer de senaste och väl utformade fuzzers som bas fuzzers. Sedan, EnFuzz ensembler dessa bas fuzzers med frösynkronisering och resultat integrationsmekanismer. För utvärdering implementerar vi EnFuzz, en prototyp baserad på fyra starka opensource fuzzers (AFL, AFLFast, AFLGo, FairFuzz), och testa dem på Googles fuzzing testsvit, som består av allmänt använda verkliga applikationer. 24-timmarsexperimentet visar att med samma resursanvändning, dessa fyra bas fuzzers utför olika på olika program, medan EnFuzz visar bättre generalisering förmåga och alltid överträffar andra när det gäller sökväg täckning, gren täckning och krasch upptäckt. Även jämfört med de bästa fallen av AFL, AFLFast, AFLGo och FairFuzz upptäcker EnFuzz 26,8%, 117%, 38,8% och 39,5% mer unika krascher, kör 9.16%, 39,2%, 19,9% och 20,0% fler vägar och täcker 5,96%, 12,0%, 21,4% respektive 11,1% fler filialer.
Till exempel, EnFuzz Ref integrerar flera fuzzing strategier för att få bättre prestanda och generalisering förmåga än någon beståndsdel fuzzer ensam.
EnFuzz: From Ensemble Learning to Ensemble Fuzzing
{'venue': 'ArXiv', 'journal': 'ArXiv', 'mag_field_of_study': ['Computer Science']}