Atheris, bir Python Kod Testi Araç Seti

Google açıkladı son zamanlarda piyasaya sürüldü Atheris projesi, bir gelişme olan bir dizi açık kaynak araç ihtisas Python kodunun fuzzing testleri için ve C / C ++ ile yazılmış CPython için uzantılar.

proje libFuzzer tabanlı bir motor kullanır ek hataları tespit etmek için Address Sanitizer ve Undefined Behavior Sanitizer araçlarıyla birlikte kullanılabilir. Kod, Apache 2.0 lisansı altında açıktır.

Google Atheris hakkında

Google Atheris'in sözleriyle, Python kodundaki ve yerel uzantılardaki hataları otomatik olarak bulmak için kullanılabilecek bir araç setidir. Atheris, 'kapsama odaklı' bir fuzzerdir, yani Atheris programınızın çalışmasını izlerken çeşitli girdileri tekrar tekrar test edecek ve ilginç yollar bulmaya çalışacaktır.

Python 2.7 ve Python 3.3+ için kod incelemesi desteklenmektedir, ancak tam kılavuzlu kapsam için, artık opcode ile opcode istatistiklerini destekleyen Python 3.8 ve 3.9 dallarının kullanılması önerilir.

Süreç içerisinde, Atheris, olası giriş verisi kombinasyonlarını listeler ve bir rapor oluşturur tespit edilen tüm hatalar ve tespit edilmeyen istisnalar hakkında.

Örneğin, Atheris'te YAML ayrıştırma kitaplığını kontrol ederken, bir tamsayı değeri yerine "-_" belirtmek veya anahtar yerine bir liste kullanmak gibi bazı YAML yapılarının, bir anahtar yerine beklenmeyen bir istisna attığı bulundu. YAMLE standart hatasını yansıtır.

Fuzz testi, programlama hatalarını keşfetmek için iyi bilinen bir tekniktir. Bu tespit edilebilir hataların çoğunun ciddi güvenlik sonuçları vardır. Google, bu tekniği kullanırken binlerce güvenlik açığı ve başka hatalar buldu. Fuzzing geleneksel olarak C veya C ++ gibi yerel dillerde kullanılır, ancak geçen yıl yeni bir Python fuzzing motoru oluşturduk. Bugün, Atheris fuzzing motorunu açık kaynak olarak yayınladık.

ateris davranış farklılıklarını belirlemek için de kullanılabilir aynı görevleri hedefleyen kitaplıklar. Örneğin, uluslararasılaştırılmış alan adlarının kodunu çözme görevini yerine getiren Python paketi "idna" ve "libidn2" kitaplığının bir özet kontrolü, her zaman aynı sonucu vermediklerini buldu.

Atheris'in en iyi kullanımlarından biri diferansiyel difüzörler içindir. Bunlar, aynı şeyi yapması amaçlanan iki kütüphanenin davranışındaki farklılıkları arayan bulanıklaştırıcılardır. Atheris ile birlikte verilen örnek fuzzer'lardan biri, Python'un "idna" paketini C "libidn2" paketiyle karşılaştırmak için tam olarak bunu yapar.

Özellikle, alan Unicode dizileri kullanıyorsa, "idna" ve "libidn2" uluslararasılaştırılmış alan adını farklı ana bilgisayarlara dönüştürdü.

Genel olarak Atheris, "doğru" davranışın ne olduğunu ifade etmenin veya en azından hangi davranışların kesinlikle doğru olmadığını ifade etmenin bir yoluna sahip olduğunuz sürece saf Python kodunda kullanışlıdır. Bu, bir kitaplığın çıktısının doğruluğunu değerlendiren fuzzer'daki özel kod kadar karmaşık veya beklenmedik istisnaların ortaya çıkmadığını kontrol etmek kadar basit olabilir.

Dikkate almak önemlidir fuzzing testleri, her türlü rastgele girdi verisi kombinasyonlarından oluşan bir akış üretir, gerçek verilere yakın (örneğin rastgele etiket parametreleri olan html sayfaları, anormal başlıklara sahip dosyalar veya resimler, vb.) ve süreçteki olası aksaklıkları giderin.

Herhangi bir sıra bir istisna ile sonuçlanırsa veya beklenen yanıtla eşleşmezse, bu davranış büyük olasılıkla bir hata veya güvenlik açığını gösterir.

Son olarak, belirtildiği gibi Atheris, 2.7 ve 3.3+ sürümlerinde Python koduyla çalışır, Google 3.8+ ve CPython için yazılmış yerel uzantıları kullanmanızı şiddetle tavsiye etse de.

Windows henüz desteklenen işletim sistemleri arasında değil, bu nedenle motor şimdilik yalnızca Linux ve Mac OS X kullanıcılarının ilgisini çekiyor.

Bu platformlarda kullanmak için, geliştiricilerin Clang derleyicisinin güncel bir sürümünün kurulu olması gerekir.

Onun hakkında daha fazla bilgi edinmek istiyorsanızorijinal notu şuradan kontrol edebilirsiniz: aşağıdaki bağlantı.


İlk yorumu siz

Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: Miguel Ángel Gatón
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.