Atheris, Python kodu testēšanas rīku komplekts

Google atklāja nesen atbrīvošana Atheris projekts, kas ir atvērtā pirmkoda rīku komplekts specializēta par Python koda fuzzing testiem un CPython paplašinājumi, kas rakstīti C / C ++.

Projekts izmanto uz libFuzzer balstītu motoru un to var izmantot kopā ar rīku Address Sanitizer un Undefined Behavior Sanitizer rīkiem, lai atklātu papildu kļūdas. Kods ir atvērts ar Apache 2.0 licenci.

Par Google Atheris

Google Atheris vārdiem sakot, tas ir rīku komplekts, ko var izmantot, lai automātiski atrastu kļūdas Python kodā un vietējos paplašinājumos. Atheris ir “pārklājuma vadīts” fuzers, kas nozīmē, ka Atheris atkārtoti izmēģinās dažādas ievades jūsu programmā, skatoties, kā tā darbojas, un mēģinās atrast interesantus ceļus.

Kodu pārskatīšana tiek atbalstīta Python 2.7 un Python 3.3+, bet pilnīgai vadībai ir ieteicams izmantot Python 3.8 un 3.9 atzarus, kas tagad atbalsta opcode statistiku pēc opcode.

Procesā, Atheris uzskaita iespējamās ievades datu kombinācijas un ģenerē pārskatu par visām konstatētajām kļūdām un neatklātajiem izņēmumiem.

Piemēram, pārbaudot YAML parsēšanas bibliotēku Atheris, tika konstatēts, ka daži YAML komponenti, piemēram, vesela skaitļa vērtības vietā norādot "-_" vai atslēgas vietā sarakstu, meta negaidītu izņēmumu YAMLEkļūda standarta kļūda.

Fuzz tests ir labi pazīstams paņēmiens, kā atklāt programmēšanas kļūdas. Daudzām no šīm atklājamajām kļūdām ir nopietna ietekme uz drošību. Izmantojot šo paņēmienu, Google ir atradis tūkstošiem drošības ievainojamību un citas kļūdas. Fuzzing tradicionāli tiek izmantots tādās dzimtajās valodās kā C vai C ++, taču pagājušajā gadā mēs izveidojām jaunu Python fuzzing dzinēju. Šodien mēs izlaidām Atheris fuzzing dzinēju kā atvērto avotu.

atheris var izmantot arī, lai identificētu uzvedības atšķirības bibliotēku, kuru mērķis ir identiski uzdevumi. Piemēram, Python paketes "idna" un bibliotēkas "libidn2", kas veic starptautisko domēnu vārdu dekodēšanas uzdevumu, kopsavilkuma pārbaude atklāja, ka tie ne vienmēr rada vienādu rezultātu.

Viens no labākajiem Atheris izmantošanas veidiem ir diferenciālie difuzori. Tie ir fuzzeri, kas meklē atšķirības divu bibliotēku uzvedībā, kuras ir paredzētas darīt vienu un to pašu. Viens no fazeriem, kas apvienoti ar Atheris, tieši to dara, lai salīdzinātu Python paketi "idna" ar paketi C "libidn2".

Jo īpaši, ja domēnā tika izmantotas Unicode sekvences, tad "idna" un "libidn2" pārveidoja internacionalizēto domēna vārdu par dažādiem resursdatoriem.

Kopumā Atheris ir noderīgs tīrā Python kodā, ja vien tam ir veids, kā izteikt "pareizo" uzvedību, vai vismaz izteikt, kura uzvedība noteikti nav pareiza. Tas var būt tikpat sarežģīts kā pielāgotais kods fuzzerā, kas novērtē bibliotēkas izejas precizitāti, vai vienkārši pārbaudīt, vai netiek izvirzīti negaidīti izņēmumi.

Ir svarīgi to ņemt vērā sakausētie testi ģenerē visu veidu nejaušu ievades datu kombināciju plūsmu, tuvu faktiskajiem datiem (piemēram, html lapas ar izlases tagu parametriem, faili vai attēli ar neparastām virsrakstiem utt.) un novērš iespējamos procesa traucējumus.

Ja kāda secība rada izņēmumu vai neatbilst gaidītajai atbildei, šī rīcība, visticamāk, norāda uz kļūdu vai ievainojamību.

Visbeidzot, kā jau minēts Atheris darbojas ar Python kodu versijā 2.7 un 3.3+, lai gan Google stingri iesaka izmantot 3.8+ un vietējos paplašinājumus, kas rakstīti CPython.

Windows vēl nav starp atbalstītajām operētājsistēmām, tāpēc dzinējs pagaidām interesē tikai Linux un Mac OS X lietotājus.

Lai to izmantotu šajās platformās, izstrādātājiem jābūt instalētai Clang kompilatora priekšējās versijas versijai.

Ja vēlaties uzzināt vairāk par to, sākotnējo piezīmi varat pārbaudīt šī saite.


Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti ar *

*

*

  1. Atbildīgais par datiem: Migels Ángels Gatóns
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.