Atheris, e Python Code Testing Toolkit

Google presentéiert kuerzem der Verëffentlechung vun Atheris Projet, wat eng Entwécklung vu e Set vun Open Source Tools spezialiséiert fir fuzzing Tester vu Python Code an Extensiounen fir CPython geschriwwen an C / C ++.

De Projet benotzt e libFuzzer baséiert Motor a kënnen a Verbindung mat den Adress Sanitizer an Undefined Behaviour Sanitizer Tools benotzt ginn fir zousätzlech Feeler z'entdecken. De Code ass ënner der Apache 2.0 Lizenz op.

Iwwer Google Atheris

An de Wierder vu Google Atheris ass et en Toolkit deen benotzt ka ginn fir automatesch Feeler am Python Code an natierlechen Extensiounen ze fannen. Atheris ass e 'Coverage driven' Fuzzer, dat heescht datt Atheris verschidden Inputen op Äre Programm wärend testen wärend se kucken a probéieren interessant Weeër ze fannen.

Code Review fir Python 2.7 a Python 3.3+ gëtt ënnerstëtzt, awer fir voll, guidéiert Ofdeckung, empfeele mir d'Python 3.8 an 3.9 Filialen ze benotzen, déi elo Opcode Statistiken duerch Opcode ënnerstëtzen.

Am Prozess, Atheris weist méiglech Kombinatioune vun Inputdaten a generéiert e Bericht op all detektéierte Feeler an net detektéierten Ausnamen.

Zum Beispill, wann d'YAML Parsingbibliothéik zu Atheris kontrolléiert gouf, gouf festgestallt datt verschidde YAML Konstrukten, wéi zum Beispill "-_" amplaz vun engem ganzzuelege Wäert oder eng Lëscht amplaz vun engem Schlëssel benotzen, eng onerwaart Ausnam werfen amplaz vun engem YAMLE Feeler Standardfehler.

De Fuzz Test ass eng bekannt Technik fir Programméierungsfeeler z'entdecken. Vill vun dësen erkennbare Feeler hunn eescht Sécherheetsimplikatiounen. Google huet Dausende vu Sécherheetsschwachstelle fonnt an aner Bugs wann Dir dës Technik benotzt. Fuzzing gëtt traditionell a gebierteg Sprooche wéi C oder C ++ benotzt, awer d'lescht Joer hu mir en neie Python fuzzing Motor erstallt. Haut hu mir den Atheris fuzzing Motor als Open Source verëffentlecht.

Atheris kann och benotzt ginn fir Differenzen am Verhalen z'identifizéieren vu Bibliothéiken déi op identesch Aufgaben zielen. Zum Beispill, e Resumécheck vum Python Package "idna" an der Bibliothéik "libidn2", déi d'Aufgab vun der Entschlësselung vun internationaliséierten Domainennamen ausféieren, hu festgestallt datt se net ëmmer datselwecht Resultat produzéieren.

Ee vun de beschten Utilisatioune fir Atheris ass fir Differentialdiffusoren. Dëst sinn Fuzzers déi no Differenzen am Verhalen vun zwou Bibliothéiken sichen déi d'selwecht sinn. Ee vun de Beispill Fuzzers, déi mam Atheris gebündelt sinn, mécht genau dëst fir dem Python säi "idna" Package mam C "libidn2" Package ze vergläichen.

Besonnesch wann d'Domain Unicode Sequenzen benotzt, da "idna" a "libidn2" hunn den internationaliséierten Domain Numm zu verschiddenen Hosten ëmgewandelt.

Am Allgemengen ass Atheris nëtzlech am pure Python Code soulaang et e Wee huet fir auszedrécken wat dat "korrekt" Verhalen ass, oder op d'mannst ausdrécken wéi ee Verhalen definitiv net korrekt ass. Dëst kéint sou komplex wéi de personaliséierte Code am Fuzzer sinn, deen d'Genauegkeet vun der Ausgab vun enger Bibliothéik beurteelt, oder sou einfach wéi ze kontrolléieren datt keng onerwaart Ausnamen opgeworf ginn.

Et ass wichteg dat ze berécksiichtegen fuzzing Tester generéieren e Stroum vun all méiglechen zoufällege Kombinatioune vun Input Daten, no bei den aktuellen Donnéeën (zB HTML Säiten mat zoufällegen Tagparameteren, Dateien oder Biller mat anormalen Iwwerschrëften, asw.) a fixéiert méiglech Feeler am Prozess.

Wann eng Sequenz zu enger Ausnam resultéiert oder net mat der erwaarter Äntwert entsprécht, weist dëst Verhalen héchstwahrscheinlech op e Feeler oder eng Schwachstelle.

Endlech, wéi gesot Den Atheris schafft mam Python Code an der Versioun 2.7 an 3.3+, obwuel Google staark recommandéiert 3.8+ ze benotzen an natierlech Extensiounen déi fir CPython geschriwwe sinn.

Windows gehéiert nach net zu den ënnerstëtzt Betribssystemer, also de Motor ass just fir Linux a Mac OS X Benotzer interesséiert fir elo.

Fir et op dëse Plattformen ze benotzen, mussen Entwéckler eng aktuell Versioun vum Clang Compiler Frontend installéiert hunn.

Wann Dir méi doriwwer wësse wëllt, kënnt Dir déi originell Notiz an der folgenden Link.


Den Inhalt vum Artikel hält sech un eis Prinzipie vun redaktionnell Ethik. Fir e Feeler ze mellen klickt hei.

Gitt d'éischt fir ze kommentéieren

Gitt Äre Kommentar

Är Email Adress gëtt net publizéiert ginn. Néideg Felder sinn markéiert mat *

*

*

  1. Responsabel fir d'Daten: Miguel Ángel Gatón
  2. Zweck vun den Donnéeën: Kontroll SPAM, Kommentarmanagement.
  3. Legitimatioun: Är Zoustëmmung
  4. Kommunikatioun vun den Donnéeën: D'Donnéeë ginn net un Drëttubidder matgedeelt ausser duerch legal Verpflichtung.
  5. Datenspeicher: Datebank gehost vun Occentus Networks (EU)
  6. Rechter: Zu all Moment kënnt Dir Är Informatioun limitéieren, recuperéieren an läschen.