PofoliaPofolia ile paylaşıldı

· 2017

Skyfire: Fuzzing İçin Veriye Dayalı Tohum Üretimi

Skyfire: Data-Driven Seed Generation for Fuzzing

Junjie Wang, Bihuan Chen, Lei Wei, Yang Liu

Kısa özet

Skyfire, veriye dayalı yeni bir yaklaşım, yapılandırılmış dosyaları işleyen programlar için iyi dağıtılmış tohum girdileri üreterek ortalama %20 satır ve %15 fonksiyon kapsamı iyileştirmeleri sağlıyor.

Yapay zekâ ile başlık ve abstract'tan üretildi; tam metin okunmaz.

Ana noktalar

  • Skyfire, sözdizimi ve anlamsal kuralları belirtmek için mevcut örneklerden ve bir dilbilgisinden olasılıklı bir bağlam-duyarlı dilbilgisi (PCSG) öğrenir.
  • Öğrenilmiş PCSG, sözdizimi ve anlamsal kontrolleri aşma olasılığı daha yüksek olan tohum girdileri üretmek için kullanılır.
  • Skyfire tarafından üretilen tohumlarla XSLT ve XML motorlarının (Sablotron, libxslt, libxml2) fuzzedilmesi, ortalama %20 satır ve %15 fonksiyon kapsamını iyileştirdi.
  • Internet Explorer 11'in JavaScript ve işleme motorunun fuzzedilmesi, 19 yeni bellek bozulması hatası (16 güvenlik açığı) ve 32 hizmet reddi hatası keşfetti.

Yapay zekâ ile başlık ve abstract'tan üretildi; tam metin okunmaz.

Özet (abstract)

Programs that take highly-structured files as inputs normally process inputs in stages: syntax parsing, semantic checking, and application execution. Deep bugs are often hidden in the application execution stage, and it is non-trivial to automatically generate test inputs to trigger them. Mutation-based fuzzing generates test inputs by modifying well-formed seed inputs randomly or heuristically. Most inputs are rejected at the early syntax parsing stage. Differently, generation-based fuzzing generates inputs from a specification (e.g., grammar). They can quickly carry the fuzzing beyond the syntax parsing stage. However, most inputs fail to pass the semantic checking (e.g., violating semantic rules), which restricts their capability of discovering deep bugs. In this paper, we propose a novel data-driven seed generation approach, named Skyfire, which leverages the knowledge in the vast amount of existing samples to generate well-distributed seed inputs for fuzzing programs that process highly-structured inputs. Skyfire takes as inputs a corpus and a grammar, and consists of two steps. The first step of Skyfire learns a probabilistic context-sensitive grammar (PCSG) to specify both syntax features and semantic rules, and then the second step leverages the learned PCSG to generate seed inputs. We fed the collected samples and the inputs generated by Skyfire as seeds of AFL to fuzz several open-source XSLT and XML engines (i.e., Sablotron, libxslt, and libxml2). The results have demonstrated that Skyfire can generate well-distributed inputs and thus significantly improve the code coverage (i.e., 20% for line coverage and 15% for function coverage on average) and the bug-finding capability of fuzzers. We also used the inputs generated by Skyfire to fuzz the closed-source JavaScript and rendering engine of Internet Explorer 11. Altogether, we discovered 19 new memory corruption bugs (among which there are 16 new vulnerabilities and received 33.5k USD bug bounty rewards) and 32 denial-of-service bugs.

Yazarların özeti; kaynağından alınmıştır., 2017 · DOI ↗

ÇıkarımlarPremium
Makaleye SorÜcretsiz hesapla

Ücretsiz hesapla devam et

Makaleye Sor ile bu makaleye günde 3 soru ücretsiz; makaleyi kaydet, kaynakçasını al, ilgi alanına göre her gün yeni özetler. Çıkarımlar Premium.

Web'de ücretsiz devam et

Google ya da Apple hesabınla giriş; kart istemez. Bu makaleye geri dönersin.

Telefonda:

Alan: Yazılım

SoftwareComputer Science