Atheris, Python-koodin testaustyökalu

Google paljasti äskettäin Atheris-projekti, joka on joukko avoimen lähdekoodin työkaluja erikoistunut Python-koodin fuusiointitestejä varten ja CPythonin laajennukset kirjoitettuna C / C ++: lla.

El proyecto käyttää libFuzzer-pohjaista moottoria ja sitä voidaan käyttää yhdessä Address Sanitizer- ja Undefined Behavior Sanitizer -työkalujen kanssa lisävirheiden havaitsemiseksi. Koodi on avoinna Apache 2.0 -lisenssillä.

Tietoja Google Atherisista

Google Atheriksen sanoin, se on työkalupakki, jota voidaan käyttää automaattisten virheiden löytämiseen Python-koodista ja natiivilaajennuksista. Atheris on "peittoohjattu" fuzzer, mikä tarkoittaa, että Atheris testaa toistuvasti erilaisia ​​syötteitä ohjelmallesi katsellessasi sen suoritusta ja yrittää löytää mielenkiintoisia polkuja.

Python 2.7- ja Python 3.3+ -koodien tarkistusta tuetaan, mutta täydellisen, ohjatun kattavuuden saavuttamiseksi suosittelemme Python 3.8- ja 3.9-haarojen käyttöä, jotka nyt tukevat opcode-tilastoja opcode-koodien mukaan.

Työn alla, Atheris listaa mahdolliset syötetietojen yhdistelmät ja luo raportin kaikista havaituista vikoista ja huomaamattomista poikkeuksista.

Esimerkiksi tarkistettaessa YAML-jäsentökirjastoa Atheriksessä havaittiin, että jotkut YAML-rakenteet, kuten määrittelemällä "-_" kokonaislukuarvon sijaan tai käyttämällä luetteloa avaimen sijasta, heittävät odottamattoman poikkeuksen YAMLEvirhe standardivirheessä.

Fuzz-testi on tunnettu tekniikka ohjelmointivirheiden löytämiseksi. Monilla näistä havaittavissa olevista virheistä on vakavia turvallisuusvaikutuksia. Google on havainnut tuhansia tietoturva-aukkoja ja muita virheitä käyttäessään tätä tekniikkaa. Fuzzingia käytetään perinteisesti äidinkielillä, kuten C tai C ++, mutta viime vuonna loimme uuden Python-fuzzing-moottorin. Tänään julkaisimme Atherisin fuzzing-moottorin avoimena lähdekoodina.

atheris voidaan käyttää myös käyttäytymiserojen tunnistamiseen kirjastoista, jotka kohdistavat samanlaisia ​​tehtäviä. Esimerkiksi Python-paketin "idna" ja kirjaston "libidn2", jotka suorittavat kansainvälistettyjen verkkotunnusten purkamisen, yhteenvetotarkistus osoitti, että ne eivät aina tuota samaa tulosta.

Yksi parhaista Atheriksen käyttötavoista on differentiaalidiffuusorit. Nämä ovat fuzzereita, jotka etsivät eroja kahden kirjaston käyttäytymisessä, joiden on tarkoitus tehdä sama asia. Yksi Atheriksen mukana toimitetuista fuzzereista tekee juuri tämän verrata Pythonin "idna" -pakettia C "libidn2" -pakettiin.

Erityisesti, jos toimialue käytti Unicode-sekvenssejä, niin "idna" ja "libidn2" muuntivat kansainvälistetyn toimialueen nimen eri isänteiksi.

Yleensä Atheris on hyödyllinen puhtaassa Python-koodissa, kunhan sinulla on tapa ilmaista mikä on "oikea" käyttäytyminen, tai ainakin ilmaista mikä käyttäytyminen ei todellakaan ole oikea. Tämä voi olla yhtä monimutkaista kuin mukautettu koodi fuzzerissa, joka arvioi kirjaston tuotoksen tarkkuuden, tai yhtä yksinkertaista kuin tarkistaa, ettei odottamattomia poikkeuksia esiinny.

On tärkeää ottaa tämä huomioon fuzzing-testit tuottavat virran kaikenlaisista satunnaisista syötetietojen yhdistelmistä, lähellä todellisia tietoja (esim. html-sivut, joissa on satunnaisia ​​tunnisteparametreja, tiedostoja tai kuvia, joiden otsikot ovat epänormaalit, jne.) ja korjaa mahdolliset häiriöt prosessissa.

Jos jokin sekvenssi johtaa poikkeukseen tai ei vastaa odotettua vastausta, tämä käyttäytyminen osoittaa todennäköisesti virheen tai haavoittuvuuden.

Lopuksi, kuten mainittiin Atheris toimii Python-koodin kanssa versioissa 2.7 ja 3.3+, vaikka Google suosittelee voimakkaasti CPythonille kirjoitettujen 3.8+ ja alkuperäisten laajennusten käyttöä.

Windows ei ole vielä tuettujen käyttöjärjestelmien joukossa, joten moottori kiinnostaa toistaiseksi vain Linux- ja Mac OS X -käyttäjiä.

Voidakseen käyttää sitä näillä alustoilla kehittäjillä on oltava asennettuna Clang-kääntäjän käyttöliittymän nykyinen versio.

Jos haluat tietää enemmän siitä, voit tarkistaa alkuperäisen muistiinpanon seuraava linkki.


Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

*

*

  1. Vastuussa tiedoista: Miguel Ángel Gatón
  2. Tietojen tarkoitus: Roskapostin hallinta, kommenttien hallinta.
  3. Laillistaminen: Suostumuksesi
  4. Tietojen välittäminen: Tietoja ei luovuteta kolmansille osapuolille muutoin kuin lain nojalla.
  5. Tietojen varastointi: Occentus Networks (EU) isännöi tietokantaa
  6. Oikeudet: Voit milloin tahansa rajoittaa, palauttaa ja poistaa tietojasi.