Atheris, et værktøjssæt til test af Python-kode

Google afsløret for nylig frigivelsen af Atheris-projekt, som er en udvikling af et sæt open source-værktøjer specialiseret til uklar test af Python-kode og udvidelser til CPython skrevet i C / C ++.

Projektet bruger en libFuzzer-baseret motor og kan bruges sammen med værktøjet Adressesanitizer og Udefineret opførsel Sanitizer til at opdage yderligere fejl. Koden er åben under Apache 2.0-licensen.

Om Google Atheris

Med Google Atheris ord er det et værktøjssæt, der kan bruges til automatisk at finde fejl i Python-kode og native extensions. Atheris er en 'dækningsdrevet' fuzzer, hvilket betyder at Atheris gentagne gange vil prøve forskellige input til dit program, mens du ser det køre og forsøge at finde interessante stier.

Kodegennemgang for Python 2.7 og Python 3.3+ understøttes, men for fuld guidet dækning anbefales det at bruge Python 3.8 og 3.9 filialer, som nu understøtter opcode statistik efter opcode.

I processen, Atheris viser mulige kombinationer af inputdata og genererer en rapport på alle opdagede fejl og uopdagede undtagelser.

For eksempel, når man tjekker YAML-parseringsbiblioteket i Atheris, blev det fundet, at nogle YAML-konstruktioner, såsom at specificere "-_" i stedet for en heltalsværdi eller bruge en liste i stedet for en nøgle, kaste en uventet undtagelse i stedet for en YAMLErrors-standard fejl.

Fuzz-testen er en velkendt teknik til at opdage programmeringsfejl. Mange af disse påviselige fejl har alvorlige sikkerhedsimplikationer. Google har fundet tusindvis af sikkerhedssårbarheder og andre fejl, når de bruger denne teknik. Fuzzing bruges traditionelt på indfødte sprog som C eller C ++, men sidste år oprettede vi en ny Python fuzzing-motor. I dag frigav vi Atheris fuzzing-motoren som open source.

Atheris kan også bruges til at identificere forskelle i adfærd af biblioteker, der er målrettet mod identiske opgaver. For eksempel fandt en opsummeringskontrol af Python-pakken "idna" og biblioteket "libidn2", der udfører opgaven med at afkode internationaliserede domænenavne, at de ikke altid giver det samme resultat.

En af de bedste anvendelser til Atheris er til diffusordiffusorer. Disse er fuzzere, der ser efter forskelle i adfærd fra to biblioteker, der er beregnet til at gøre det samme. En af de eksempler på fuzzere, der er pakket med Atheris, gør netop dette for at sammenligne Pythons "idna" -pakke med C "libidn2" -pakken.

Især hvis domænet brugte Unicode-sekvenser, konverterede "idna" og "libidn2" det internationaliserede domænenavn til forskellige værter.

Generelt er Atheris nyttig i ren Python-kode, så længe du har en måde at udtrykke, hvad den "korrekte" adfærd er, eller i det mindste udtrykke, hvilken adfærd, der bestemt ikke er korrekt. Dette kan være så kompliceret som brugerdefineret kode i fuzzer, der vurderer nøjagtigheden af ​​et biblioteks output, eller så simpelt som at kontrollere, at der ikke er uventede undtagelser.

Det er vigtigt at tage højde for det fuzzing-tests genererer en strøm af alle slags tilfældige kombinationer af inputdata, tæt på de faktiske data (for eksempel html-sider med tilfældige tagparametre, filer eller billeder med unormale overskrifter osv.) og rette mulige fejl i processen.

Hvis en sekvens resulterer i en undtagelse eller ikke svarer til det forventede svar, indikerer denne adfærd sandsynligvis en fejl eller sårbarhed.

Endelig, som nævnt Atheris arbejder med Python-kode i version 2.7 og 3.3+, selvom Google kraftigt anbefaler at bruge 3.8+ og native-udvidelser skrevet til CPython.

Windows er endnu ikke blandt de understøttede operativsystemer, så motoren er kun af interesse for Linux- og Mac OS X-brugere indtil videre.

For at bruge det på disse platforme skal udviklere have en aktuel version af Clang compiler frontend installeret.

Hvis du vil vide mere om det, kan du kontrollere den originale note i følgende link.


Indholdet af artiklen overholder vores principper for redaktionel etik. Klik på for at rapportere en fejl her.

Vær den første til at kommentere

Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.