Atheris, et Python Code Testing Toolkit

Google avduket nylig utgivelsen av Atheris-prosjekt, som er en utvikling av et sett med åpen kildekodeverktøy dyktig for fuzzing tester av Python-kode og utvidelser for CPython skrevet i C / C ++.

Prosjektet bruker en libFuzzer-basert motor og kan brukes sammen med verktøyene Address Sanitizer og Undefined Behavior Sanitizer for å oppdage flere feil. Koden er åpen under Apache 2.0-lisensen.

Om Google Atheris

Med Google Atheris ord er det et verktøysett som kan brukes til å automatisk finne feil i Python-kode og innfødte utvidelser. Atheris er en 'dekningsdrevet' fuzzer, noe som betyr at Atheris gjentatte ganger vil prøve forskjellige innganger til programmet ditt mens du ser det kjøre og prøve å finne interessante stier.

Kodegjennomgang for Python 2.7 og Python 3.3+ støttes, men for full, guidet dekning, anbefaler vi å bruke Python 3.8 og 3.9 grenene, som nå støtter opcode-statistikk etter opcode.

I prosessen, Atheris lister opp mulige kombinasjoner av inndata og genererer en rapport på alle oppdagede feil og uoppdagede unntak.

Når du for eksempel sjekker YAML-parseringsbiblioteket i Atheris, ble det funnet at noen YAML-konstruksjoner, for eksempel å spesifisere "-_" i stedet for en heltall eller bruke en liste i stedet for en nøkkel, kaster et uventet unntak i stedet for en YAMLEfeil standardfeil.

Fuzz-testen er en kjent teknikk for å oppdage programmeringsfeil. Mange av disse påvisbare feilene har alvorlige sikkerhetsimplikasjoner. Google har funnet tusenvis av sikkerhetsproblemer og andre feil når de bruker denne teknikken. Fuzzing brukes tradisjonelt på morsmål som C eller C ++, men i fjor opprettet vi en ny Python-fuzzing-motor. I dag slapp vi Atheris fuzzing-motoren som åpen kildekode.

Atheris kan også brukes til å identifisere forskjeller i atferd av biblioteker som er målrettet mot identiske oppgaver. For eksempel fant en sammendragskontroll av Python-pakken "idna" og biblioteket "libidn2", som utfører oppgaven med å dekode internasjonaliserte domenenavn, at de ikke alltid gir det samme resultatet.

En av de beste bruksområdene for Atheris er for differensialdiffusorer. Dette er fuzzere som ser etter forskjeller i oppførselen til to biblioteker som er ment å gjøre det samme. En av eksemplene på fuzzere som følger med Atheris, gjør akkurat dette for å sammenligne Pythons "idna" -pakke med C "libidn2" -pakken.

Spesielt hvis domenet brukte Unicode-sekvenser, konverterte "idna" og "libidn2" det internasjonaliserte domenenavnet til forskjellige verter.

Generelt er Atheris nyttig i ren Python-kode så lenge den har en måte å uttrykke hva som er "riktig" oppførsel, eller i det minste uttrykke hvilken oppførsel som definitivt ikke er riktig. Dette kan være så komplisert som tilpasset kode i fuzzer som vurderer nøyaktigheten til bibliotekets utdata, eller så enkelt som å kontrollere at ingen uventede unntak heves.

Det er viktig å ta hensyn til det fuzzing tester genererer en strøm av alle slags tilfeldige kombinasjoner av inndata, nær de faktiske dataene (f.eks. html-sider med tilfeldige tagparametere, filer eller bilder med unormale overskrifter osv.) og fikse mulige feil i prosessen.

Hvis en sekvens resulterer i et unntak eller ikke samsvarer med forventet respons, indikerer denne oppførselen sannsynligvis en feil eller et sårbarhet.

Endelig, som nevnt Atheris jobber med Python-kode i versjon 2.7 og 3.3+, selv om Google sterkt anbefaler å bruke 3.8+ og native extensions skrevet for CPython.

Windows er ennå ikke blant de støttede operativsystemene, så motoren er bare av interesse for Linux- og Mac OS X-brukere foreløpig.

For å bruke den på disse plattformene, må utviklere ha en oppdatert versjon av Clang compiler frontend installert.

Hvis du vil vite mer om det, kan du sjekke det originale notatet i følgende lenke.


Innholdet i artikkelen følger våre prinsipper for redaksjonell etikk. Klikk på for å rapportere en feil her.

Bli den første til å kommentere

Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.