Google diumumkeun nembé sékrési Proyék Atheris, anu mangrupikeun pamekaran sakumpulan alat open source spesialis pikeun uji coba kode Python sareng ekstensi pikeun CPython ditulis dina C / C ++.
proyék nu ngagunakeun mesin dumasar libFuzzer sareng tiasa dianggo sasarengan sareng alamat Sanitizer sareng alat-alat Sanitizer Anu Teu Ditetepkeun pikeun ngadeteksi kasalahan tambahan. Kodeu na kabuka dina lisénsi Apache 2.0.
Ngeunaan Google Atheris
Dina kecap Google Atheris, éta mangrupikeun toolkit anu tiasa dianggo pikeun sacara otomatis mendakan kasalahan dina kode Python sareng ekstensi asli. Atheris mangrupikeun fuzzer 'driven driven', anu hartosna Atheris bakal sababaraha kali ngusahakeun sababaraha input pikeun acara anjeun nalika ningali éta ngajalankeun sareng nyobian milarian jalur anu pikaresepeun.
Tinjauan kode pikeun Python 2.7 sareng Python 3.3+ dirojong, tapi pikeun sinyalna anu lengkep, disarankeun nganggo cabang Python 3.8 sareng 3.9, anu ayeuna ngadukung statistik opcode ku opcode.
Dina prosés, Atheris daptar kamungkinan kombinasi data input sareng ngahasilkeun laporan dina sadaya kasalahan anu dideteksi sareng pengecualian anu teu dideteksi.
Salaku conto, nalika mariksa perpustakaan parsing YAML di Atheris, mendakan yén sababaraha konstruksi YAML, sapertos ngahususkeun "-_" tibatan nilai integer atanapi nganggo daptar tibatan konci, buang pengecualian anu teu kaduga tibatan YAMLError kasalahan standar.
Tes fuzz mangrupikeun teknik anu terkenal pikeun mendakan kasalahan pemrograman. Seueur kasalahan anu tiasa dideteksi ieu ngagaduhan implikasi kaamanan anu serius. Google parantos mendakan rébuan kerentanan kaamanan sareng bug sanés nalika nganggo téhnik ieu. Fuzzing biasana dipaké dina basa asli sapertos C atanapi C ++, tapi taun kamari urang nyiptakeun mesin pembakaran Python énggal. Dinten ayeuna, kami ngaleupaskeun mesin pembakaran Atheris salaku sumber terbuka.
Atheris ogé tiasa dianggo pikeun ngaidentipikasi béda-béda tingkah laku perpustakaan anu nargétkeun tugas anu sami. Salaku conto, cek kasimpulan pakét Python "idna" sareng perpustakaan "libidn2", anu ngalaksanakeun tugas ngadékode nami domain internasionalisasi, mendakan yén aranjeunna henteu teras-terasan ngahasilkeun hasil anu sami.
Salah sahiji kagunaan pangsaéna pikeun Atheris nyaéta pikeun diffusers diferensial. Ieu mangrupikeun bahan bakar anu milari bédana paripolah dua perpustakaan anu dimaksad pikeun ngalakukeun hal anu sami. Salah sahiji conto fuzzers dibuntel sareng Atheris ngalakukeun persis ieu pikeun ngabandingkeun paket "idna" Python sareng paket C "libidn2".
Khususna, upami domain nganggo urutan Unicode, maka "idna" sareng "libidn2" ngarobih nami domain internasionalisasi janten host anu béda.
Sacara umum, Atheris gunana dina kode Python murni salami éta ngagaduhan cara pikeun nganyatakeun naon perilaku "bener", atanapi sahenteuna nunjukkeun paripolah mana anu pasti henteu leres. Ieu tiasa janten rumit sapertos kode khusus dina fuzzer anu nganilai akurasi kaluaran perpustakaan, atanapi saderhana mariksa yén teu aya pengecualian anu didugikeun.
Penting pikeun tumut kana éta hal tés fuzzing ngahasilkeun aliran sagala jinis kombinasi acak data input, caket kana data anu saleresna (mis. halaman html kalayan parameter tag acak, file atanapi gambar anu judulna teu normal, sareng sajabana) sareng ngalereskeun gangguan anu mungkin dina prosés.
Upami sekuen naon waé ngahasilkeun pengecualian atanapi henteu cocog sareng réspon anu diarepkeun, kabiasaan ieu sigana nunjukkeun bug atanapi kerentanan.
Tungtungna, sakumaha anu kasebut Atheris damel sareng kode Python dina versi 2.7 sareng 3.3+, sanaos Google nyarankeun pisan ngagunakeun 3.8+ sareng ekstensi asli anu ditulis pikeun CPython.
Windows teu acan aya diantara sistem operasi anu didukung, janten mesinna ngan ukur dipikaresep ku pangguna Linux sareng Mac OS X kanggo ayeuna.
Pikeun ngagunakeunana dina platform ieu, pamekar kedah gaduh versi ayeuna tina frontend compiler Clang anu dipasang.
Upami anjeun hoyong terang langkung seueur perkawis éta, anjeun tiasa mariksa catetan aslina dina link ieu.
Janten kahiji komen