Atheris, sada nástrojů pro testování kódu v Pythonu

Google představen nedávno vydání Projekt Atheris, což je vývoj soubor nástrojů open source specializované pro fuzzing testy kódu Pythonu a rozšíření pro CPython napsaná v C / C ++.

El Proyecto používá motor založený na libFuzzer a lze je použít ve spojení s nástroji Address Sanitizer a Undefined Behavior Sanitizer k detekci dalších chyb. Tento kód je otevřen pod licencí Apache 2.0.

O Google Atheris

Slovy Google Atheris je to sada nástrojů, kterou lze použít k automatickému vyhledání chyb v kódu Pythonu a nativních rozšířeních. Atheris je fuzzer založený na pokrytí, což znamená, že Atheris opakovaně zkouší různé vstupy do vaší show, zatímco sleduje její běh, a pokusí se najít zajímavé cesty.

Je podporována kontrola kódu pro Python 2.7 a Python 3.3+, ale pro úplné pokrytí se doporučuje použít větve Pythonu 3.8 a 3.9, které nyní podporují statistiky opcode podle opcode.

V průběhu, Atheris uvádí možné kombinace vstupních dat a generuje zprávu na všechny zjištěné chyby a nezjištěné výjimky.

Například při kontrole knihovny pro analýzu YAML v Atheris bylo zjištěno, že některé konstrukty YAML, například zadání „-_“ namísto celočíselné hodnoty nebo použití seznamu místo klíče, vyvolá nečekanou výjimku namísto Standardní chyba YAMLErrors.

Test fuzz je známá technika pro zjišťování programovacích chyb. Mnoho z těchto zjistitelných chyb má vážné bezpečnostní důsledky. Google při použití této techniky našel tisíce bezpečnostních chyb a dalších chyb. Fuzzing se tradičně používá v rodných jazycích, jako je C nebo C ++, ale loni jsme vytvořili nový fuzzovací modul Pythonu. Dnes jsme vydali fuzzing engine Atheris jako open source.

Atheris lze také použít k identifikaci rozdílů v chování knihoven, které se zaměřují na identické úkoly. Například při souhrnné kontrole balíčku Python „idna“ a knihovny „libidn2“, které provádějí dekódování internacionalizovaných názvů domén, bylo zjištěno, že ne vždy přinášejí stejný výsledek.

Jedno z nejlepších použití pro Atheris je pro diferenciální difuzory. Jedná se o fuzzery, které hledají rozdíly v chování dvou knihoven, které mají dělat totéž. Jeden z příkladů fuzzerů dodávaných s Atherisem dělá přesně tohle, aby porovnal Pythonův balíček „idna“ s balíkem C „libidn2“.

Zejména pokud doména používala sekvence Unicode, pak „idna“ a „libidn2“ převedly internacionalizovaný název domény na různé hostitele.

Obecně je Atheris užitečný v čistém kódu Pythonu, pokud má způsob, jak vyjádřit, co je „správné“ chování, nebo alespoň vyjádřit, které chování rozhodně není správné. To může být stejně složité jako vlastní kód ve fuzzeru, který posuzuje přesnost výstupu knihovny, nebo stejně jednoduchý jako kontrola, že nejsou vyvolány žádné neočekávané výjimky.

Je důležité to vzít v úvahu fuzzing testy generují proud všech druhů náhodných kombinací vstupních dat, blízko k aktuálním údajům (např. html stránky s náhodnými parametry značek, soubory nebo obrázky s neobvyklými záhlavími atd.) a opravit případné závady v procesu.

Pokud jakákoli sekvence vede k výjimce nebo neodpovídá očekávané odpovědi, toto chování s největší pravděpodobností naznačuje chybu nebo zranitelnost.

Nakonec, jak již bylo zmíněno Atheris pracuje s kódem Pythonu ve verzi 2.7 a 3.3+, i když Google důrazně doporučuje používat 3.8+ a nativní rozšíření napsaná pro CPython.

Windows zatím nepatří mezi podporované operační systémy, takže tento motor je prozatím zajímavý pouze pro uživatele systémů Linux a Mac OS X.

Chcete-li jej použít na těchto platformách, musí mít vývojáři nainstalovanou aktuální verzi front-endu kompilátoru Clang.

Pokud se o tom chcete dozvědět více, můžete zkontrolovat původní poznámku v následující odkaz.


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Odpovědný za údaje: Miguel Ángel Gatón
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.