Ti ṣafihan Google laipe awọn Tu ti Atheris ise agbese, eyiti o jẹ idagbasoke ti ṣeto ti awọn irinṣẹ orisun ṣiṣi amọja fun awọn idanwo fuzzing ti koodu Python ati awọn amugbooro fun CPython ti a kọ sinu C / C ++.
Ise agbese na nlo ẹrọ orisun libFuzzer ati pe a le lo ni apapo pẹlu Adirẹsi Sanitizer ati Awọn irinṣẹ Iwa mimọ ti a ko Ṣalaye lati ṣawari awọn aṣiṣe afikun. Koodu naa ṣii labẹ iwe-aṣẹ Apache 2.0.
Nipa Google Atheris
Ninu awọn ọrọ ti Google Atheris, o jẹ ohun elo irinṣẹ ti o le lo lati wa awọn aṣiṣe laifọwọyi ni koodu Python ati awọn amugbooro abinibi. Atheris jẹ 'fuzzer' ti iṣakoso agbegbe, eyiti o tumọ si pe Atheris yoo ṣe igbidanwo ọpọlọpọ awọn igbewọle si ifihan rẹ lakoko wiwo o n ṣiṣẹ ki o gbiyanju lati wa awọn ọna ti o nifẹ.
Atunyẹwo koodu fun Python 2.7 ati Python 3.3 + ni atilẹyin, ṣugbọn fun agbegbe itọnisọna ni kikun, o ni iṣeduro lati lo awọn ẹka Python 3.8 ati 3.9, eyiti o ṣe atilẹyin bayi awọn iṣiro opcode nipasẹ opcode.
Ninu ilana, Atheris ṣe atokọ awọn akojọpọ ti o ṣee ṣe ti data titẹ sii ati ipilẹṣẹ ijabọ kan lori gbogbo awọn aṣiṣe ti a ri ati awọn imukuro ti a ko rii.
Fun apẹẹrẹ, nigba ti o n ṣayẹwo ile-ikawe itupalẹ YAML ni Atheris, a rii pe diẹ ninu awọn itumọ YAML, gẹgẹbi sisọ “-_” dipo iye odidi tabi lilo atokọ dipo bọtini kan, ju iyasilẹ airotẹlẹ kan dipo YAMLErrors aṣiṣe boṣewa.
Idanwo fuzz jẹ ilana ti o mọ daradara fun wiwa awọn aṣiṣe siseto. Pupọ ninu awọn aṣiṣe ti o ṣee ṣawari ni awọn ipa aabo to ṣe pataki. Google ti rii ẹgbẹẹgbẹrun awọn ailagbara aabo ati awọn idun miiran nigba lilo ilana yii. Fuzzing ti lo ni aṣa ni awọn ede abinibi bi C tabi C ++, ṣugbọn ni ọdun to kọja a ṣẹda ẹrọ oniho Python tuntun kan. Loni, a ṣe agbejade ẹrọ fuzzing Atheris gẹgẹbi orisun ṣiṣi.
Atheris tun le ṣee lo lati ṣe idanimọ awọn iyatọ ninu ihuwasi ti awọn ile-ikawe ti o fojusi awọn iṣẹ kanna. Fun apẹẹrẹ, ayẹwo akopọ ti package “idna” Python ati ile-ikawe “libidn2”, eyiti o ṣe iṣẹ ṣiṣe ti ṣiṣatunṣe awọn orukọ ìkápá agbaye, ri pe wọn kii ṣe abajade kanna nigbagbogbo.
Ọkan ninu awọn lilo ti o dara julọ fun Atheris jẹ fun awọn kaakiri iyatọ. Iwọnyi jẹ fuzzers ti o wa awọn iyatọ ninu ihuwasi ti awọn ile ikawe meji ti o tumọ lati ṣe ohun kanna. Ọkan ninu apẹẹrẹ fuzzers ti a ṣajọ pẹlu Atheris ṣe deede eyi lati ṣe afiwe package “idna” Python pẹlu package C “libidn2”.
Ni pataki, ti agbegbe naa ba lo awọn itẹlera Unicode, lẹhinna “idna” ati “libidn2” yipada orukọ ašẹ ti kariaye si awọn ogun oriṣiriṣi.
Ni gbogbogbo, Atheris wulo ni koodu Python mimọ niwọn igba ti o ni ọna ti ṣalaye kini ihuwasi “tọ”, tabi o kere ju ṣalaye iru awọn ihuwasi wo ni ko daju. Eyi le jẹ idiju bi koodu aṣa ni fuzzer ti o ṣe ayẹwo išedede ti iṣelọpọ ti ile-ikawe kan, tabi bi irọrun bi ṣayẹwo pe ko si awọn imukuro airotẹlẹ ti o dide.
O ṣe pataki lati ṣe akiyesi pe awọn idanwo fuzzing ṣe agbewọle ṣiṣan ti gbogbo iru awọn akojọpọ laileto ti data titẹ sii, sunmo data gangan (fun apẹẹrẹ awọn oju-iwe html pẹlu awọn idasilẹ aami laileto, awọn faili tabi awọn aworan pẹlu awọn akọle ajeji, ati bẹbẹ lọ) ati ṣatunṣe awọn didanu ti o le ṣe ninu ilana naa.
Ti eyikeyi abajade ba jẹ abajade kan tabi ko baamu esi ti a reti, ihuwasi yii ni o ṣeese tọka kokoro tabi ailagbara.
Lakotan, bi a ti mẹnuba Atheris n ṣiṣẹ pẹlu koodu Python ni ẹya 2.7 ati 3.3 +, botilẹjẹpe Google ṣe iṣeduro ni iṣeduro lilo 3.8 + ati awọn amugbooro abinibi ti a kọ fun CPython.
Windows ko iti wa laarin awọn ọna ṣiṣe atilẹyin, nitorinaa ẹnjini naa jẹ anfani nikan si Lainos ati awọn olumulo Mac OS X fun bayi.
Lati lo o lori awọn iru ẹrọ wọnyi, awọn olupilẹṣẹ gbọdọ ni ẹya lọwọlọwọ ti iwaju iwaju alakojo Clang ti a fi sii.
Ti o ba fẹ lati mọ diẹ sii nipa rẹ, o le ṣayẹwo akọsilẹ atilẹba ninu atẹle ọna asopọ.
Jẹ akọkọ lati sọ ọrọ