Atheris, sada nástrojov na testovanie kódu Pythonu

Google predstavený nedávno vydanie Projekt Atheris, čo je vývoj súbor nástrojov otvoreného zdroja zvláštny na fuzzing testy kódu Pythonu a rozšírenia pre CPython napísané v C / C ++.

Projekt používa motor založený na libFuzzer a môžu byť použité v spojení s nástrojmi Address Sanitizer a Undefined Behavior Sanitizer na detekciu ďalších chýb. Tento kód je otvorený pod licenciou Apache 2.0.

O spoločnosti Google Atheris

Podľa slov Google Atheris ide o sadu nástrojov, pomocou ktorej je možné automaticky vyhľadávať chyby v kóde Python a natívnych rozšíreniach. Atheris je fuzzer založený na pokrytí, čo znamená, že Atheris opakovane skúša rôzne vstupy do vašej šou pri sledovaní jej priebehu a snaží sa nájsť zaujímavé cesty.

Je podporovaná kontrola kódu pre Python 2.7 a Python 3.3+, ale pre úplné riadené pokrytie sa odporúča použiť vetvy Python 3.8 a 3.9, ktoré teraz podporujú štatistiku opcode podľa opcode.

V procese, Atheris uvádza zoznam možných kombinácií vstupných údajov a generuje správu na všetky zistené chyby a nezistené výnimky.

Napríklad pri kontrole knižnice YAML syntaktickej analýzy v Atherise sa zistilo, že niektoré konštrukty YAML, ako napríklad špecifikácia „-_“ namiesto celočíselnej hodnoty alebo použitie zoznamu namiesto kľúča, namiesto neočakávanej výnimky vrhajú neočakávanú výnimku. YAMLE chyby štandardná chyba.

Fuzz test je dobre známa technika na zisťovanie programovacích chýb. Mnoho z týchto zistiteľných chýb má vážne bezpečnostné dôsledky. Google pri použití tejto techniky našiel tisíce bezpečnostných chýb a ďalších chýb. Fuzzing sa tradične používa v rodných jazykoch, ako je C alebo C ++, ale minulý rok sme vytvorili nový fuzzovací modul Python. Dnes sme vydali fuzzing engine Atheris ako open source.

Atheris možno tiež použiť na identifikáciu rozdielov v správaní knižníc zameraných na identické úlohy. Napríklad pri súhrnnej kontrole balíka Python „idna“ a knižnice „libidn2“, ktoré vykonávajú úlohu dekódovania internacionalizovaných názvov domén, sa zistilo, že výsledky nie sú vždy rovnaké.

Jedným z najlepších použití Atherisu je použitie diferenciálnych difúzorov. Jedná sa o fuzzery, ktoré hľadajú rozdiely v správaní dvoch knižníc, ktoré majú robiť to isté. Jeden z príkladov fuzzerov dodávaných s Atherisom robí práve toto, aby porovnal Pythonov „idna“ balíček s C „libidn2“ balíkom.

Najmä ak doména používala sekvencie Unicode, potom „idna“ a „libidn2“ konvertovali internacionalizovaný názov domény na rôznych hostiteľov.

Všeobecne je Atheris užitočný v čistom kóde Pythonu, pokiaľ má spôsob vyjadrenia toho, čo je „správne“ chovanie, alebo aspoň vyjadrenie toho, ktoré chovanie rozhodne nie je správne. Môže to byť rovnako zložité ako vlastný kód vo fuzzeri, ktorý hodnotí presnosť výstupu knižnice, alebo rovnako jednoduchý ako kontrola, či nedošlo k neočakávaným výnimkám.

Je dôležité vziať do úvahy, že fuzzing testy generujú prúd všetkých druhov náhodných kombinácií vstupných údajov, blízko k skutočným údajom (napr. html stránky s náhodnými parametrami značiek, súbory alebo obrázky s neobvyklými hlavičkami atď.) a opraviť možné závady v procese.

Ak ktorákoľvek sekvencia vedie k výnimke alebo sa nezhoduje s očakávanou odpoveďou, toto správanie s najväčšou pravdepodobnosťou naznačuje chybu alebo zraniteľnosť.

Nakoniec, ako už bolo spomenuté Atheris pracuje s kódom Python vo verzii 2.7 a 3.3+, aj keď Google dôrazne odporúča používať 3.8+ a natívne rozšírenia napísané pre CPython.

Windows zatiaľ nepatria medzi podporované operačné systémy, takže tento motor je zatiaľ zaujímavý iba pre používateľov systémov Linux a Mac OS X.

Aby ho mohli vývojári používať na týchto platformách, musia mať nainštalovanú aktuálnu verziu frontendu kompilátora Clang.

Ak o tom chcete vedieť viac, pôvodnú poznámku môžete skontrolovať v priečinku nasledujúci odkaz.


Buďte prvý komentár

Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Zodpovedný za údaje: Miguel Ángel Gatón
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.