Atheris, Toolkit Pengujian Kode Python

Google meluncurkan baru-baru ini rilis Proyek Atheris, yang merupakan pengembangan dari satu set alat open source terspesialisasi untuk pengujian fuzzing kode Python dan ekstensi untuk CPython yang ditulis dalam C / C ++.

Proyek menggunakan mesin berbasis libFuzzer dan dapat digunakan bersama alat Address Sanitizer dan Undefined Behavior Sanitizer untuk mendeteksi kesalahan tambahan. Kode terbuka di bawah lisensi Apache 2.0.

Tentang Google Atheris

Dalam kata-kata Google Atheris, ini adalah toolkit yang dapat digunakan untuk secara otomatis menemukan kesalahan dalam kode Python dan ekstensi asli. Atheris adalah fuzzer 'yang dikendalikan oleh cakupan', yang berarti bahwa Atheris akan berulang kali mencoba berbagai masukan ke program Anda sambil menontonnya berjalan dan mencoba menemukan jalur yang menarik.

Tinjauan kode didukung untuk Python 2.7 dan Python 3.3+, tetapi untuk cakupan terpandu penuh, kami merekomendasikan menggunakan cabang Python 3.8 dan 3.9, yang sekarang mendukung statistik opcode dengan opcode.

Dalam proses, Atheris mencantumkan kemungkinan kombinasi data masukan dan menghasilkan laporan pada semua kesalahan yang terdeteksi dan pengecualian yang tidak terdeteksi.

Misalnya, saat memeriksa pustaka penguraian YAML di Atheris, ditemukan bahwa beberapa konstruksi YAML, seperti menentukan "-_", bukan nilai integer, atau menggunakan daftar, bukan kunci, memunculkan pengecualian yang tidak terduga, bukan YAMLE salah kesalahan standar.

Tes fuzz adalah teknik terkenal untuk menemukan kesalahan pemrograman. Banyak dari kesalahan yang dapat dideteksi ini memiliki implikasi keamanan yang serius. Google telah menemukan ribuan kerentanan keamanan dan bug lainnya saat menggunakan teknik ini. Fuzzing secara tradisional digunakan dalam bahasa asli seperti C atau C ++, tetapi tahun lalu kami membuat mesin fuzzing Python baru. Hari ini, kami merilis mesin fuzzing Atheris sebagai open source.

atheris juga dapat digunakan untuk mengidentifikasi perbedaan perilaku perpustakaan yang menargetkan tugas-tugas yang identik. Misalnya, pemeriksaan ringkasan paket Python "idna" dan pustaka "libidn2", yang melakukan tugas mendekode nama domain internasional, menemukan bahwa keduanya tidak selalu menghasilkan hasil yang sama.

Salah satu kegunaan terbaik Atheris adalah untuk diffuser diferensial. Ini adalah fuzzer yang mencari perbedaan perilaku dua perpustakaan yang dimaksudkan untuk melakukan hal yang sama. Salah satu contoh fuzzers yang dikemas dengan Atheris melakukan hal ini dengan tepat untuk membandingkan paket "idna" Python dengan paket C "libidn2".

Secara khusus, jika domain menggunakan urutan Unicode, maka "idna" dan "libidn2" mengonversi nama domain internasional ke host yang berbeda.

Secara umum, Atheris berguna dalam kode Python murni selama ia memiliki cara untuk mengekspresikan perilaku "benar", atau setidaknya mengungkapkan perilaku mana yang pasti tidak benar. Ini bisa serumit kode khusus di fuzzer yang menilai keakuratan keluaran perpustakaan, atau sesederhana memeriksa bahwa tidak ada pengecualian tak terduga yang dimunculkan.

Penting untuk diperhatikan tes fuzzing menghasilkan aliran semua jenis kombinasi acak dari data masukan, dekat dengan data sebenarnya (misalnya halaman html dengan parameter tag acak, file atau gambar dengan judul tidak normal, dll.) dan perbaiki kemungkinan gangguan dalam prosesnya.

Jika urutan apa pun menghasilkan pengecualian atau tidak cocok dengan respons yang diharapkan, perilaku ini kemungkinan besar menunjukkan bug atau kerentanan.

Akhirnya, seperti yang disebutkan Atheris bekerja dengan kode Python di versi 2.7 dan 3.3+, meskipun Google sangat merekomendasikan penggunaan 3.8+ dan ekstensi asli yang ditulis untuk CPython.

Windows belum termasuk di antara sistem operasi yang didukung, jadi mesin ini hanya menarik bagi pengguna Linux dan Mac OS X untuk saat ini.

Untuk menggunakannya di platform ini, pengembang harus menginstal versi terkini dari frontend compiler Clang.

Jika Anda ingin tahu lebih banyak tentang itu, Anda dapat memeriksa catatan asli di link berikut.


tinggalkan Komentar Anda

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai dengan *

*

*

  1. Penanggung jawab data: Miguel Ángel Gatón
  2. Tujuan data: Mengontrol SPAM, manajemen komentar.
  3. Legitimasi: Persetujuan Anda
  4. Komunikasi data: Data tidak akan dikomunikasikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Basis data dihosting oleh Occentus Networks (UE)
  6. Hak: Anda dapat membatasi, memulihkan, dan menghapus informasi Anda kapan saja.