Atheris, egy Python kódtesztelő eszközkészlet

A Google bemutatta nemrégiben megjelent Atheris projekt, amely a nyílt forráskódú eszközök halmaza specializált a Python kód fuzzing tesztjeihez és a CPython kiterjesztései C / C ++ nyelven írva.

A projekt libFuzzer alapú motort használ és a Cím-fertőtlenítő és a Meghatározatlan viselkedés-fertőtlenítő eszközökkel együtt használható további hibák felderítésére. A kód az Apache 2.0 licenc alatt van megnyitva.

A Google Atherisről

A Google Atheris szavaival élve, ez egy olyan eszköztár, amellyel automatikusan megtalálhatók a hibák a Python-kódban és a natív kiterjesztésekben. Az Atheris egy „lefedettség által vezérelt” fuzzer, ami azt jelenti, hogy Atheris többször is kipróbálja a műsor különböző bemeneteit, miközben nézi a futást, és megpróbál érdekes utakat találni.

A Python 2.7 és a Python 3.3+ kódok felülvizsgálata támogatott, de a teljes irányított lefedettség érdekében ajánlott a Python 3.8 és 3.9 elágazások használata, amelyek most opcode alapján támogatják az opcode statisztikákat.

A folyamat, Az Atheris felsorolja a bemeneti adatok lehetséges kombinációit, és jelentést készít minden észlelt hibáról és észrevétlen kivételről.

Például az Atheris-ben a YAML-elemző könyvtár ellenőrzésekor kiderült, hogy egyes YAML-konstrukciók, például egész szám helyett "-_" -t adnak meg, vagy kulcs helyett listát használnak, váratlan kivételt dobnak egy YAMLEhiba a standard hiba.

A fuzz teszt egy jól ismert technika a programozási hibák feltárására. Ezen észlelhető hibák közül sok komoly biztonsági következményekkel jár. A Google több ezer biztonsági rést és egyéb hibát talált a technika alkalmazásakor. A Fuzzing-et hagyományosan olyan anyanyelveken használják, mint a C vagy a C ++, de tavaly létrehoztunk egy új Python fuzzing motort. Ma nyílt forráskódként adtuk ki az Atheris fuzzing motorját.

atheris a viselkedésbeli különbségek azonosítására is használható az azonos feladatokat megcélzó könyvtárak közül. Például az "idna" Python csomag és a "libidn2" könyvtár összefoglaló ellenőrzése, amelyek a nemzetközivé vált tartománynevek dekódolását végzik, megállapították, hogy ezek nem mindig eredményezik ugyanazt az eredményt.

Az Atheris egyik legjobb felhasználási területe a differenciál diffúzorok. Ezek olyan fuzzerek, amelyek különbségeket keresnek két könyvtár viselkedésében, amelyek ugyanazt a célt szolgálják. Az Atheris-szel összekapcsolt egyik fuzzer pontosan ezt teszi, hogy összehasonlítsa a Python "idna" csomagját a C "libidn2" csomaggal.

Különösen, ha a tartomány Unicode szekvenciákat használt, akkor az "idna" és a "libidn2" a nemzetközivé vált tartománynevet különböző gazdagé alakította.

Általánosságban elmondható, hogy az Atheris tiszta Python-kódban hasznos, amennyiben képes kifejezni a "helyes" viselkedést, vagy legalábbis kifejezni, hogy melyik viselkedés biztosan nem helyes. Ez lehet olyan bonyolult, mint az egyedi kód a fuzzerben, amely értékeli a könyvtár kimenetének pontosságát, vagy olyan egyszerű, mint annak ellenőrzése, hogy nincsenek-e váratlan kivételek.

Fontos ezt figyelembe venni a fuzzing tesztek a bemenő adatok mindenféle véletlenszerű kombinációjának áramát generálják, közel a tényleges adatokhoz (pl. véletlenszerű címkeparaméterekkel rendelkező HTML-oldalak, rendellenes fejlécű fájlok vagy képek stb.), és javítsák ki a folyamat lehetséges hibáit.

Ha bármelyik szekvencia kivételt eredményez, vagy nem felel meg a várt válasznak, akkor ez a viselkedés valószínűleg hibát vagy sebezhetőséget jelez.

Végül, mint említettük Az Atheris Python kóddal működik a 2.7 és 3.3+ verziókban, bár a Google határozottan javasolja a 3.8+ és a CPython számára írt natív kiterjesztések használatát.

A Windows még nem tartozik a támogatott operációs rendszerek közé, így a motor egyelőre csak a Linux és a Mac OS X felhasználóit érdekli.

Ezen platformokon történő használatához a fejlesztőknek telepíteniük kell a Clang fordító frontendjének aktuális verzióját.

Ha többet szeretne tudni róla, ellenőrizheti az eredeti jegyzetet a következő link.


Hagyja megjegyzését

E-mail címed nem kerül nyilvánosságra. Kötelező mezők vannak jelölve *

*

*

  1. Az adatokért felelős: Miguel Ángel Gatón
  2. Az adatok célja: A SPAM ellenőrzése, a megjegyzések kezelése.
  3. Legitimáció: Az Ön beleegyezése
  4. Az adatok közlése: Az adatokat csak jogi kötelezettség alapján továbbítjuk harmadik felekkel.
  5. Adattárolás: Az Occentus Networks (EU) által üzemeltetett adatbázis
  6. Jogok: Bármikor korlátozhatja, helyreállíthatja és törölheti adatait.