Atheris, in Python Code Testing Toolkit

Google ûntbleate koartlyn de frijlitting fan Atheris-projekt, dat is in ûntjouwing fan in set fan iepen boarne-ark spesjalisearre foar fuzzing tests fan Python koade en tafoegings foar CPython skreaun yn C / C ++.

It projekt brûkt in libFuzzer-basearre motor en kin brûkt wurde yn kombinaasje mei de tools Sanitizer Address Sanitizer en Undefined Behavior Sanitizer om ekstra flaters op te spoaren. De koade is iepen ûnder de Apache 2.0-lisinsje.

Oer Google Atheris

Yn 'e wurden fan Google Atheris is it in toolkit dy't kin wurde brûkt om automatysk fouten te finen yn Python-koade en native extensions. Atheris is in 'dekking oandreaune' fuzzer, wat betsjut dat Atheris ferskate ynputen nei jo programma sil besykje wylst se it sjen rinne en besykje ynteressante paden te finen.

Koade-oersjoch foar Python 2.7 en Python 3.3+ wurdt stipe, mar foar folsleine, begelaat dekking, advisearje wy de Python 3.8- en 3.9-tûken te brûken, dy't no opcode-statistiken stypje troch opcode.

Yn it proses, Atheris listet mooglike kombinaasjes fan ynfiergegevens en genereart in rapport op alle ûntdekte flaters en net ûntdekte útsûnderingen.

Bygelyks by it kontrolearjen fan de YAML-parsebibleteek yn Atheris, waard fûn dat guon YAML-konstruksjes, lykas "-_" ynstee fan in heule getal of it brûken fan in list ynstee fan in kaai, in unferwachte útsûndering goaie ynstee fan in YAMLErrors-standert fersin.

De fuzz-test is in bekende technyk foar it ûntdekken fan programmearfouten. In protte fan dizze detektearbere flaters hawwe serieuze befeiligingsimplikaasjes. Google hat tûzenen feiligens kwetsberens en oare bugs fûn by it brûken fan dizze technyk. Fuzzing wurdt tradisjoneel brûkt yn native talen lykas C of C ++, mar ferline jier hawwe wy in nije Python fuzzing-motor makke. Hjoed hawwe wy de fuzzingmotor fan Atheris frijjûn as iepen boarne.

Atheris kin ek brûkt wurde om ferskillen yn gedrach te identifisearjen fan biblioteken rjochte op identike taken. Bygelyks, in gearfettingskontrôle fan it Python-pakket "idna" en de biblioteek "libidn2", dy't de taak útfiere om ynternasjonalisearre domeinnammen te dekodearjen, fûnen dat se net altyd itselde resultaat produsearje.

Ien fan 'e bêste gebrûk foar Atheris is foar differinsjaal diffusers. Dit binne fuzzers dy't ferskillen sykje yn it gedrach fan twa biblioteken dy't bedoeld binne itselde te dwaan. Ien fan 'e foarbyldfuzzers bondele mei Atheris docht dit krekt om Python's "idna" pakket te fergelykjen mei it C "libidn2" pakket.

Benammen as it domein Unicode-sekwinsjes brûkte, konvertearren "idna" en "libidn2" de ynternasjonalisearre domeinnamme nei ferskate hosts.

Yn 't algemien is Atheris nuttich yn pure Python-koade, salang't it in manier hat om út te drukken wat it "krekte" gedrach is, of op syn minst útdrukke hokker gedrach perfoarst net korrekt binne. Dit kin sa kompleks wêze as oanpaste koade yn 'e fuzzer dy't de krektens fan' e útfier fan in bibleteek beoardielet, of sa simpel as kontrolearje dat gjin unferwachte útsûnderingen wurde ferhege.

It is wichtich om dêr rekken mei te hâlden fuzzing tests generearje in stream fan alle soarten willekeurige kombinaasjes fan ynfiergegevens, tichtby de werklike gegevens (bgl. html-siden mei willekeurige tagparameters, bestannen of ôfbyldings mei abnormale kopkes, ensfh.) en mooglike flaters yn it proses oplosse.

As in sekwinsje resulteart yn in útsûndering of net oerienkomt mei it ferwachte antwurd, wiist dit gedrach wierskynlik op in bug of kwetsberens.

Uteinlik, lykas neamd Atheris wurket mei Python-koade yn ferzje 2.7 en 3.3+, hoewol Google riedt it sterk oan om 3.8+ te brûken en native ekstinsjes skreaun foar CPython.

Windows is noch net ûnder de stipe bestjoeringssystemen, sadat de motor foar no allinich ynteressant is foar Linux- en Mac OS X-brûkers.

Om it op dizze platfoarms te brûken, moatte ûntwikkelders in aktuele ferzje fan 'e Clang-kompilearingsfrontend hawwe ynstalleare.

As jo ​​der mear oer witte wolle, kinne jo de orizjinele notysje kontrolearje yn 'e folgjende link.


De ynhâld fan it artikel hâldt him oan ús prinsipes fan redaksje etyk, Om in flater te melden klikje hjir.

Wês de earste om kommentaar

Lit jo reaksje efter

Jo e-mailadres wurdt net publisearre.

*

*

  1. Ferantwurdlik foar de gegevens: Miguel Ángel Gatón
  2. Doel fan 'e gegevens: Control SPAM, kommentaarbehear.
  3. Legitimaasje: jo tastimming
  4. Kommunikaasje fan 'e gegevens: De gegevens wurde net oan tredden kommunisearre, útsein troch wetlike ferplichting.
  5. Gegevensopslach: Databank hoste troch Occentus Networks (EU)
  6. Rjochten: Op elk momint kinne jo jo ynformaasje beheine, herstelle en wiskje.