1 puan yazan GN⁺ 2024-03-17 | 1 yorum | WhatsApp'ta paylaş

Google Project Zero araçlarıyla Ladybird fuzzing’i

  • Domato, Google Project Zero tarafından geliştirilen bir DOM fuzzer’ı ve büyük miktarda, çoğunlukla geçerli ama tuhaf HTML, CSS ve JavaScript içeren web sayfaları üretiyor.
  • Üretilen web sayfaları yaklaşık 500 KiB boyutunda ve tarayıcı motorunu şaşırtacak kadar “ilginç” JS, CSS ve HTML ile dolu.
  • Domato’nun büyük tarayıcılarda birçok hata bulduğu belirtiliyor; bu araç Ladybird’e uygulanarak sorunlar bulunup düzeltildi.

Sorun #1: <th> etiketi <mfrac> içindeyken

  • Domato’nun ürettiği çıktıda <mfrac> içine <th> yerleştiren bir durum bulundu.
  • UBSAN (Undefined Behavior SANitizer) ile derlenen Ladybird’de null pointer dereference hatası oluştu.
  • <th> ve <td> öğeleri, DOM ağacında üst tarafta her zaman bir <table> bulunduğu varsayımıyla uygulanmıştı; ancak DOM düğümleri JavaScript API’siyle elle oluşturulduğunda bu kurallar ihlal edilebiliyor.
  • Sorunu çözmek için, <th> ve <td> öğelerinin her zaman bir <table> içerdiği varsayılmadı ve first_ancestor_of_type<HTMLTableElement>() kullanılarak düzeltme yapıldı.

Sorun #2: Ayrılmış DOM’da window olay işleyicisi ataması

  • Fuzzer çalıştırılırken kısa sürede başka bir sorunla da karşılaşıldı.
  • DOMParser üzerinden oluşturulan belgelerde window nesnesi bulunmuyor ve bu da soruna yol açıyordu.
  • Document::window() nullable bir değer döndürecek şekilde değiştirildi ve birçok yerde null kontrolü eklendi.
  • Window’suz belgelerde document.body.onblur atandığında hiçbir şey yapmaması sağlandı.

Sorun #3: SVG <linearGradient> içinde sonsuz özyineleme

  • SVG, başka gradyanları referans alarak renkleri miras alan gradyanlar tanımlayabiliyor.
  • Bir gradyanın kendisini referans aldığı durum hesaba katılmadığı için sonsuz döngü oluşuyordu.
  • Referans döngülerinin birden fazla adım üzerinden oluştuğu durumları ele almak için ziyaret edilen tüm gradyanlar izlenmeye başlandı; daha önce ziyaret edilmiş bir gradyan görüldüğünde zinciri takip etme durduruldu.

Sorun #4: Kaldırılmış iframe’in window özelliklerine erişim

  • iframe DOM’dan kaldırıldığında ilgili içerik belgesi browsing context’ten ayrılıyor.
  • Window nesnesinin özelliklerine erişirken browsing context’in varlığını varsayan HTML spesifikasyonundaki bir hata keşfedildi.
  • HTML spesifikasyonu için bir issue açıldı ve Ladybird tarafında null kontrolü eklenerek sorun çözüldü.

Sorun #5: Element.before() içinde sonsuz döngü

  • Sayfa yüklenmiyor ve CPU kullanımı %100’de kalıyordu.
  • before() uygulamasındaki bir hata nedeniyle sonsuz döngü oluşuyordu.
  • Kardeş zinciri, node->previous_sibling yerine previous_sibling->previous_sibling üzerinden takip edilecek şekilde düzeltildi.

Sonuç

  • Bir gün içinde 5 gerçek hata bulundu ve hepsi düzeltildi.
  • Fuzzer gibi araçlar, yazılımlarını daha sağlam hale getirmek isteyenler için olağanüstü bir kaynak.
  • Ladybird, sürekli fuzzing girdilerini işleyebilecek kadar kararlı hale geldiğinde, bulutta otomatik çalıştırılarak daha fazla sorun bulunabilecek.

GN⁺ görüşü

  • Bu yazı, Ladybird tarayıcı motorunda Google Project Zero’nun Domato fuzzer’ı kullanılarak bulunan hataların nasıl düzeltildiğini anlatıyor.
  • Fuzzing, yazılımdaki güvenlik açıklarını bulmada çok etkili bir teknik ve geliştiriciler bunu kendi kodlarını daha sağlam hale getirmek için kullanabiliyor.
  • Yazı, geliştiricilere fuzzing’in önemini hatırlatıyor ve bunun pratikte nasıl uygulandığına dair içgörü sunuyor.
  • Eleştirel açıdan bakıldığında fuzzing, yazılımın beklenmedik girdilere verdiği tepkiyi test ettiği için gerçek kullanıcı kullanım kalıplarını tamamen yansıtmayabilir.
  • Benzer işlev sunan diğer fuzzing araçları arasında AFL (American Fuzzy Lop) ve LibFuzzer bulunuyor; geliştiriciler bu araçlarla kendi projelerini test edebilir.
  • Ladybird geliştiricileri bu tekniği benimseyerek bulunan hataları düzeltebilir, böylece tarayıcının kararlılığını artırabilir; bu da kullanıcı deneyimini iyileştirmeye ve güvenliği güçlendirmeye yardımcı olur.

1 yorum

 
GN⁺ 2024-03-17
Hacker News görüşleri
  • Farklı uygulamalar sayesinde spesifikasyonun değeri kanıtlanıyor

    Bu yazı, bir spesifikasyon için farklı uygulamaların neden önemli olduğunu gösteriyor. Şimdiden bir sorun bulundu ve daha fazlasının da olması bekleniyor.

  • Küçük bir grubun da şaşırtıcı şeyler yapabilme ihtimali

    Küçük bir grubun etkileyici bir proje yürütmesine duyulan heyecan ifade ediliyor. Bunun, paydaşları olan şirketlerde yapılmasının zor olduğu belirtiliyor.

  • SVG uygulamasıyla projenin hızlı ilerleyişine duyulan şaşkınlık

    Projenin beklenenden daha hızlı ilerlediği ve SVG uygulamasının tamamlandığı haberinin büyüleyici olduğu ifade ediliyor.

  • Yazılım geliştirmede sorun çözümüne derinlemesine yaklaşma gerekliliği

    Geliştiricilerin yalnızca sorunları bulup düzeltmekle kalmaması, sorunun kök nedenini anlaması ve tüm kod tabanında benzer hataları araması gerektiği savunuluyor. Modern yazılımın kırılganlığı ve hata sorunlarının kapitalizmin kısıtlarından kaynaklandığı, ancak daha iyi yazılım geliştirmenin mümkün olduğu vurgulanıyor.

  • Ladybird'ün web motoru hackerfest'ine katılıp katılmayacağına dair merak

    Ladybird'ün bu yıl web motoru hackerfest'ine katılıp katılmayacağına dair ilgi ifade ediliyor.

  • Hackingle ilgili YouTube videolarının yokluğuna dair soru işareti

    Hackingle ilgili YouTube videolarının artık güncellenmemesine dair üzüntü ifade ediliyor.

  • "fuzzing ladybird" kelime kombinasyonuna verilen eğlenceli tepki

    "fuzzing ladybird" ifadesinin komik ve vahşi duyulduğu görüşü dile getiriliyor.

  • Ladybird'ün dünyayı ele geçirmesini gizlice ummak

    Ladybird'ün bir gün dünyayı ele geçirebileceğine dair gizli bir umut dile getiriliyor ve bunun kimseye söylenmemesi isteniyor.

  • [silinmiş yorum]

    Belirli bir yorumun silinmiş olduğu belirtiliyor.