Atheris, 'n toolkit vir die toets van Python-kode

Google onthul onlangs die vrystelling van Atheris-projek, wat 'n ontwikkeling is van 'n stel oopbron-instrumente gespesialiseerde vir fuzzing toetse van Python-kode en uitbreidings vir CPython geskryf in C / C ++.

El proyecto gebruik 'n libFuzzer-gebaseerde enjin en kan saam met die Address Sanitizer en Undefined Behavior Sanitizer-instrumente gebruik word om addisionele foute op te spoor. Die kode is oop onder die Apache 2.0-lisensie.

Oor Google Atheris

In die woorde van Google Atheris is dit 'n gereedskapstel wat gebruik kan word om foute in Python-kode en inheemse uitbreidings outomaties op te spoor. Atheris is 'n 'dekkingsgedrewe' fuzzer, wat beteken dat Atheris herhaaldelik verskillende insette vir u program sal toets terwyl hy daarna kyk en interessante paaie probeer vind.

Kodeoorsig vir Python 2.7 en Python 3.3+ word ondersteun, maar vir 'n volledige, begeleide dekking, beveel ons aan om die Python 3.8- en 3.9-takke te gebruik, wat nou opcode-statistieke volgens opcode ondersteun.

In die proses, Atheris lys moontlike kombinasies van insetdata en genereer 'n verslag op alle bespeurde foute en ongemerkte uitsonderings.

Byvoorbeeld, wanneer u die YAML-ontleedbiblioteek in Atheris nagegaan het, is gevind dat sommige YAML-konstruksies, soos om "-_" in plaas van 'n heelgetal op te gee of 'n lys in plaas van 'n sleutel te gebruik, 'n onverwagte uitsondering in plaas van 'n YAMLEfoute standaardfout.

Die fuzz-toets is 'n bekende tegniek vir die ontdekking van programmeringsfoute. Baie van hierdie waarneembare foute hou ernstige veiligheidsimplikasies in. Google het duisende veiligheidsprobleme en ander foute gevind wanneer hierdie tegniek gebruik word. Fuzzing word tradisioneel in moedertale soos C of C ++ gebruik, maar verlede jaar het ons 'n nuwe Python fuzzing-enjin geskep. Vandag het ons die Atheris fuzzing-enjin as open source vrygestel.

Atheris kan ook gebruik word om verskille in gedrag te identifiseer biblioteke wat op dieselfde take teiken. 'N Opsommingskontrole van die Python-pakket' idna 'en die biblioteek' libidn2 ', wat die taak dekodeer om internasionaliseerde domeinname te dekodeer, het byvoorbeeld bevind dat dit nie altyd dieselfde resultaat lewer nie.

Een van die beste gebruike vir Atheris is vir differensiaalverspreiders. Dit is fuzzers wat op soek is na verskille in die gedrag van twee biblioteke wat bedoel is om dieselfde te doen. Een van die voorbeeldfuzzers saam met Atheris doen presies dit om Python se "idna" pakket met die C "libidn2" pakket te vergelyk.

In die besonder, as die domein Unicode-reekse gebruik het, het "idna" en "libidn2" die geïnternasionaliseerde domeinnaam omgeskakel na verskillende gashere.

Oor die algemeen is Atheris nuttig in suiwer Python-kode, solank u 'n manier het om uit te druk wat die "regte" gedrag is, of om ten minste uit te druk watter gedrag beslis nie korrek is nie. Dit kan so ingewikkeld wees as die aangepaste kode in die fuzzer wat die akkuraatheid van die uitvoer van 'n biblioteek beoordeel, of so eenvoudig soos om te kyk dat daar geen onverwagte uitsonderings gemaak word nie.

Dit is belangrik om dit in ag te neem fuzzing toetse genereer 'n stroom van alle soorte ewekansige kombinasies van insetdata, naby die werklike data (bv. html-bladsye met ewekansige tagparameters, lêers of beelde met abnormale opskrifte, ens.) en stel moontlike foute in die proses reg.

As 'n reeks 'n uitsondering tot gevolg het of nie ooreenstem met die verwagte antwoord nie, dui hierdie gedrag waarskynlik op 'n fout of kwesbaarheid.

Laastens, soos genoem Atheris werk met Python-kode in weergawe 2.7 en 3.3+, hoewel Google dit sterk aanbeveel om 3.8+ en native uitbreidings te gebruik wat vir CPython geskryf is.

Windows is nog nie een van die ondersteunde bedryfstelsels nie, so die enjin is vir eers net vir Linux- en Mac OS X-gebruikers van belang.

Om dit op hierdie platforms te gebruik, moet ontwikkelaars 'n huidige weergawe van die Clang-samesteller-frontend hê.

As u meer daaroor wil weet, kan u die oorspronklike aantekening in die volgende skakel.


Die inhoud van die artikel voldoen aan ons beginsels van redaksionele etiek. Klik op om 'n fout te rapporteer hier.

Wees die eerste om te kommentaar lewer

Laat u kommentaar

Jou e-posadres sal nie gepubliseer word nie. Verpligte velde gemerk met *

*

*

  1. Verantwoordelik vir die data: Miguel Ángel Gatón
  2. Doel van die data: Beheer SPAM, bestuur van kommentaar.
  3. Wettiging: U toestemming
  4. Kommunikasie van die data: Die data sal nie aan derde partye oorgedra word nie, behalwe deur wettige verpligtinge.
  5. Datastoor: databasis aangebied deur Occentus Networks (EU)
  6. Regte: U kan u inligting te alle tye beperk, herstel en verwyder.