Atheris, Pythoni koodide testimise tööriistakomplekt

Google avalikustas hiljuti Atherise projekt, mis on avatud lähtekoodiga tööriistade komplekt spetsialiseerunud Pythoni koodi fuzzing testide jaoks ja CPythoni laiendused, mis on kirjutatud C / C ++ keeles.

El proyecto kasutab libFuzzeril põhinevat mootorit ja seda saab kasutada koos aadressi desinfitseerija ja määratlemata käitumise desinfitseerimise tööriistadega täiendavate vigade tuvastamiseks. Kood on avatud Apache 2.0 litsentsi all.

Teave Google Atherise kohta

Google Atherise sõnadega on see tööriistakomplekt, mida saab kasutada Pythoni koodis ja kohalikes laiendustes automaatselt vigade leidmiseks. Atheris on kattega juhitav fuzzer, mis tähendab, et Atheris proovib korduvalt teie programmi erinevaid sisendeid, samal ajal kui ta töötab, ja püüab leida huvitavaid teid.

Toetatakse Python 2.7 ja Python 3.3+ koodide ülevaatamist, kuid täieliku, juhendatud leviala saamiseks soovitame kasutada Python 3.8 ja 3.9 harusid, mis toetavad nüüd opcode statistikat opcode järgi.

Selle käigus Atheris loetleb sisendandmete võimalikud kombinatsioonid ja loob aruande kõigi tuvastatud rikete ja avastamata erandite kohta.

Näiteks Atherises YAML-i sõelumisraamatukogu kontrollides leiti, et mõned YAML-i konstruktsioonid, näiteks täisarvu asemel "-_" määramine või võtme asemel loendi kasutamine, viskavad ootamatu erandi YAMLEvead standardviga.

Fuzz-test on programmeerimisvigade avastamiseks tuntud tehnika. Paljudel neist tuvastatavatest vigadest on tõsiseid tagajärgi turvalisusele. Google on selle tehnika kasutamisel leidnud tuhandeid turvaauke ja muid vigu. Fuzzingi kasutatakse traditsiooniliselt sellistes emakeeltes nagu C või C ++, kuid eelmisel aastal lõime uue Pythoni fuzzing-mootori. Täna avaldasime avatud lähtekoodina Atherise fuzzing mootori.

Atheris saab kasutada ka käitumuslike erinevuste tuvastamiseks raamatukogudest, mis on suunatud identsetele ülesannetele. Näiteks Pythoni paketi "idna" ja teegi "libidn2", mis täidavad rahvusvahelistunud domeeninimede dekodeerimise ülesannet, kokkuvõtlik kontroll näitas, et need ei anna alati sama tulemust.

Atherise üks parimaid kasutusviise on diferentsiaalhajutid. Need on fuzzerid, mis otsivad erinevusi kahe teegi käitumises, mis on mõeldud sama asja tegema. Üks Atherisega komplektis olevatest fuzzeritest teeb täpselt seda, et võrrelda Pythoni paketti "idna" paketiga C "libidn2".

Täpsemalt, kui domeen kasutas Unicode'i järjestusi, teisendasid "idna" ja "libidn2" rahvusvahelise domeeninime erinevateks hostideks.

Üldiselt on Atheris puhtas Pythoni koodis kasulik seni, kuni sellel on võimalus väljendada seda, mis on "õige" käitumine, või vähemalt väljendada, millised käitumised pole kindlasti õiged. See võib olla sama keeruline kui kohandatud kood fuzzeris, mis hindab raamatukogu väljundi täpsust, või sama lihtne kui kontrollida, kas ootamatuid erandeid ei tehta.

Oluline on sellega arvestada fuzzing-testid genereerivad igasuguseid juhuslikke sisendandmete kombinatsioone, tegelike andmete lähedal (nt juhuslike siltide parameetritega HTML-lehed, ebanormaalsete pealkirjadega failid või pildid jne) ja parandage protsessi võimalikud tõrked.

Kui mõni järjestus põhjustab erandi või ei vasta oodatud vastusele, viitab see käitumine tõenäoliselt veale või haavatavusele.

Lõpuks, nagu mainitud Atheris töötab Pythoni koodiga versioonides 2.7 ja 3.3+, kuigi Google soovitab tungivalt kasutada CPythoni jaoks kirjutatud 3.8+ ja kohalikke laiendeid.

Windows ei kuulu veel toetatud operatsioonisüsteemide hulka, seega pakub mootor praegu huvi ainult Linuxi ja Mac OS X-i kasutajatele.

Nendel platvormidel kasutamiseks peab arendajatel olema installitud Clangi kompilaatori esiosa versioon.

Kui soovite selle kohta rohkem teada saada, saate algset märkust kontrollida järgmine link.


Jäta oma kommentaar

Sinu e-postiaadressi ei avaldata. Kohustuslikud väljad on tähistatud *

*

*

  1. Andmete eest vastutab: Miguel Ángel Gatón
  2. Andmete eesmärk: Rämpsposti kontrollimine, kommentaaride haldamine.
  3. Seadustamine: teie nõusolek
  4. Andmete edastamine: andmeid ei edastata kolmandatele isikutele, välja arvatud juriidilise kohustuse alusel.
  5. Andmete salvestamine: andmebaas, mida haldab Occentus Networks (EL)
  6. Õigused: igal ajal saate oma teavet piirata, taastada ja kustutada.