Ang Atheris, isang Toolkit sa Pagsubok ng Python Code

Inilantad ng Google kamakailan ang paglabas ng Proyekto ng Atheris, na kung saan ay isang pag-unlad ng isang hanay ng mga tool na bukas na mapagkukunan dalubhasa para sa mga pagsusulit ng code ng Python at mga extension para sa CPython na nakasulat sa C / C ++.

Ang proyekto gumagamit ng isang libFuzzer based engine at maaaring magamit kasabay ng mga tool sa Address Sanitizer at Undefined behavior Sanitizer upang makita ang mga karagdagang error. Ang code ay bukas sa ilalim ng lisensya ng Apache 2.0.

Tungkol sa Google Atheris

Sa mga salita ng Google Atheris, ito ay isang toolkit na maaaring magamit upang awtomatikong makahanap ng mga error sa Python code at mga katutubong extension. Ang Atheris ay isang fuzzer na 'driven driven', nangangahulugang paulit-ulit na susubukan ng Atheris ang iba't ibang mga input sa iyong programa habang pinapanood ang pagpapatakbo nito at subukang maghanap ng mga kawili-wiling landas.

Sinusuportahan ang pagsusuri ng code para sa Python 2.7 at Python 3.3+, ngunit para sa buong gabay na sakop, inirerekumenda na gamitin ang mga sangay ng Python 3.8 at 3.9, na sumusuporta ngayon sa mga istatistika ng opcode ng opcode.

Nasa proseso, Inililista ng Atheris ang mga posibleng kumbinasyon ng data ng pag-input at bumubuo ng isang ulat sa lahat ng napansin na mga pagkakamali at hindi napansin na mga pagbubukod.

Halimbawa YAMLErrors standard error.

Ang pagsubok na fuzz ay isang kilalang pamamaraan para sa pagtuklas ng mga error sa programa. Marami sa mga natukoy na error na ito ay may malubhang implikasyon sa seguridad. Natagpuan ng Google ang libu-libong mga kahinaan sa seguridad at iba pang mga bug kapag ginagamit ang diskarteng ito. Tradisyonal na ginamit ang Fuzzing sa mga katutubong wika tulad ng C o C ++, ngunit noong nakaraang taon lumikha kami ng isang bagong Python fuzzing engine. Ngayon, inilabas namin ang Atheris fuzzing engine bilang bukas na mapagkukunan.

Atheris maaari ring magamit upang makilala ang mga pagkakaiba sa pag-uugali ng mga aklatan na nagta-target ng magkatulad na gawain. Halimbawa

Ang isa sa mga pinakamahusay na gamit para sa Atheris ay para sa diffusers ng kaugalian. Ito ang mga fuzzer na naghahanap ng mga pagkakaiba sa pag-uugali ng dalawang silid-aklatan na nilalayong gawin ang parehong bagay. Ang isa sa mga halimbawang fuzzer na naka-bundle sa Atheris ay eksaktong ginagawa nito upang ihambing ang pakete na "idna" ni Python sa C "libidn2" na pakete.

Sa partikular, kung ang domain ay gumagamit ng mga pagkakasunud-sunod ng Unicode, pagkatapos na "idna" at "libidn2" ay na-convert ang internationalized domain name sa iba't ibang mga host.

Sa pangkalahatan, ang Atheris ay kapaki-pakinabang sa purong Python code hangga't mayroon kang paraan ng pagpapahayag kung ano ang "tamang" pag-uugali, o hindi bababa sa pagpapahayag kung aling mga pag-uugali ang tiyak na hindi tama. Maaari itong maging kasing kumplikado ng pasadyang code sa fuzzer na tinatasa ang kawastuhan ng output ng isang library, o kasing simple ng pagsuri na walang inaasahang mga pagbubukod na naitaas.

Mahalagang isaalang-alang iyan ang mga pagsusulit sa pag-burn ay bumubuo ng isang stream ng lahat ng mga uri ng mga random na kumbinasyon ng input data, malapit sa aktwal na data (hal. mga pahina ng html na may mga random na parameter ng tag, mga file o larawan na may mga hindi normal na heading, atbp.) at ayusin ang mga posibleng glitches sa proseso.

Kung ang anumang pagkakasunud-sunod ay nagreresulta sa isang pagbubukod o hindi tumutugma sa inaasahang tugon, ang pag-uugali na ito ay malamang na nagpapahiwatig ng isang bug o kahinaan.

Panghuli, tulad ng nabanggit Gumagana ang Atheris kasama ang Python code sa bersyon 2.7 at 3.3+, bagaman masidhing inirerekomenda ng Google ang paggamit ng 3.8+ at mga katutubong extension na nakasulat para sa CPython.

Ang Windows ay wala pa sa mga suportadong operating system, kaya ang engine ay interesado lamang sa mga gumagamit ng Linux at Mac OS X sa ngayon.

Upang magamit ito sa mga platform na ito, ang mga developer ay dapat magkaroon ng isang kasalukuyang bersyon ng Clang compiler frontend na naka-install.

Kung nais mong malaman ang tungkol dito, maaari mong suriin ang orihinal na tala sa sumusunod na link.


Ang nilalaman ng artikulo ay sumusunod sa aming mga prinsipyo ng etika ng editoryal. Upang mag-ulat ng isang pag-click sa error dito.

Maging una sa komento

Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: Miguel Ángel Gatón
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.