Atheris, një Paketë e Testimit të Kodit Python

Google zbuloi së fundmi lirimin e Projekti Atheris, e cila është një zhvillim i një grup mjetesh me burim të hapur të specializuara për provat fuzzing të kodit Python dhe shtesat për CPython të shkruara në C / C ++.

El Proyecto përdor një motor të bazuar në libFuzzer dhe mund të përdoret së bashku me mjetet e Sanitizerit të Adresimit dhe Saktësimit të Pafunduar të Sanitizerit për të zbuluar gabime shtesë. Kodi është i hapur nën licencën Apache 2.0.

Rreth Google Atheris

Sipas fjalëve të Google Atheris, është një paketë mjetesh që mund të përdoret për të gjetur automatikisht gabimet në kodin Python dhe shtesat vendase. Atheris është një hutues 'i drejtuar nga mbulimi', që do të thotë që Atheris do të testojë vazhdimisht hyrje të ndryshme në programin tuaj ndërsa e shikon atë të ekzekutohet dhe do të përpiqet të gjejë shtigje interesante.

Rishikimi i kodit për Python 2.7 dhe Python 3.3+ është i mbështetur, por për një mbulim të plotë dhe të drejtuar, ne rekomandojmë përdorimin e degëve Python 3.8 dhe 3.9, të cilat tani mbështesin statistikat e kodeve sipas kodeve.

Në proces, Atheris rendit kombinimet e mundshme të të dhënave hyrëse dhe gjeneron një raport në të gjitha defektet e zbuluara dhe përjashtimet e pazbuluara.

Për shembull, kur kontrolloni bibliotekën e analizimit të YAML në Atheris, u zbulua se disa konstrukte YAML, të tilla si specifikimi "-_" në vend të një vlere të plotë ose përdorimi i një liste në vend të një çelësi, hedhin një përjashtim të papritur në vend të një YAMLE gabimet standarde.

Testi fuzz është një teknikë e njohur për zbulimin e gabimeve të programimit. Shumë nga këto gabime të zbulueshme kanë implikime serioze të sigurisë. Google ka gjetur mijëra dobësi të sigurisë dhe gabime të tjera kur përdorni këtë teknikë. Fuzzing përdoret tradicionalisht në gjuhët amtare si C ose C ++, por vitin e kaluar kemi krijuar një motor të ri Python. Sot, ne lëshuam motorin fuzzing Atheris si burim të hapur.

Atheris gjithashtu mund të përdoret për të identifikuar ndryshimet në sjellje të bibliotekave që synojnë detyra identike. Për shembull, një kontroll përmbledhës i paketës Python "idna" dhe bibliotekës "libidn2", të cilat kryejnë detyrën e dekodimit të emrave të domain të ndërkombëtarizuar, zbuluan se ato nuk japin gjithmonë të njëjtin rezultat.

Një nga përdorimet më të mira për Atheris është për shpërndarësit diferenciale. Këto janë fuzzer që kërkojnë ndryshime në sjelljen e dy bibliotekave që kanë për qëllim të bëjnë të njëjtën gjë. Një nga shembujt e paketuar me Atheris bën pikërisht këtë për të krahasuar paketën "idna" të Python me paketën C "libidn2".

Në veçanti, nëse domeni përdor sekuenca Unicode, atëherë "idna" dhe "libidn2" shndërrojnë emrin e domain-it të ndërkombëtarizuar në host të ndryshëm.

Në përgjithësi, Atheris është i dobishëm në kodin e pastër Python për sa kohë që ju keni një mënyrë për të shprehur atë që është sjellja "e saktë", ose të paktën të shprehni se cilat sjellje nuk janë përfundimisht të sakta. Kjo mund të jetë aq komplekse sa kodi i personalizuar në fuzzer që vlerëson saktësinë e rezultateve të bibliotekës, ose aq i thjeshtë sa të kontrollosh që të mos krijohen përjashtime të papritura.

Shtë e rëndësishme të merret parasysh kjo testet fuzzing gjenerojnë një rrjedhë të të gjitha llojeve të kombinimeve të rastësishme të të dhënave hyrëse, afër të dhënave aktuale (p.sh. faqet html me parametra të etiketave të rastit, skedarët ose imazhet me tituj anormalë, etj.) dhe rregulloni problemet e mundshme në proces.

Nëse ndonjë sekuencë rezulton në një përjashtim ose nuk përputhet me përgjigjen e pritur, kjo sjellje ka shumë të ngjarë të tregojë një defekt ose dobësi.

Më në fund, siç u përmend Atheris punon me kodin Python në versionin 2.7 dhe 3.3+, megjithëse Google rekomandon fuqimisht përdorimin e 3.8+ dhe shtesave vendase të shkruara për CPython.

Windows nuk është akoma në mesin e sistemeve operative të mbështetura, kështu që motori është tani me interes vetëm për përdoruesit e Linux dhe Mac OS X.

Për ta përdorur atë në këto platforma, zhvilluesit duhet të kenë të instaluar një version aktual të përpiluesit të Clang.

Nëse doni të dini më shumë rreth kësaj, mund të kontrolloni shënimin origjinal në lidhja vijuese.


Përmbajtja e artikullit i përmbahet parimeve tona të etika editoriale. Për të raportuar një gabim klikoni këtu.

Bëhu i pari që komenton

Lini komentin tuaj

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar me *

*

*

  1. Përgjegjës për të dhënat: Miguel Ángel Gatón
  2. Qëllimi i të dhënave: Kontrolloni SPAM, menaxhimin e komenteve.
  3. Legjitimimi: Pëlqimi juaj
  4. Komunikimi i të dhënave: Të dhënat nuk do t'u komunikohen palëve të treta përveç me detyrim ligjor.
  5. Ruajtja e të dhënave: Baza e të dhënave e organizuar nga Occentus Networks (BE)
  6. Të drejtat: Në çdo kohë mund të kufizoni, rikuperoni dhe fshini informacionin tuaj.