2 puan yazan GN⁺ 2025-07-13 | 1 yorum | WhatsApp'ta paylaş
  • Yazar, Spigot adlı sahte bir web sayfası hiyerarşisi oluşturucusu işletiyor ve saldırgan web tarayıcılarına karşı rastgele üretilmiş sayfalar gösteriyor
  • Son dönemde, görsel tarayıcılarının jpg görseller bulmak için siteyi yoğun biçimde taradığını fark etti
  • Gerçek zamanlı görsel üretimini en az CPU kaynağıyla yapmak için, gerçek JPEG dosyalarının yalnızca yapılandırılmış kısımlarını toplayıp şablon olarak kullanmayı ve sıkıştırılmış kısımlara rastgele veri eklemeyi öneriyor
  • Deney sonuçlarına göre, bu yöntemle üretilen JPEG'ler hata içerse de çoğu görsel görüntüleyicide görüntülenebiliyor ve tarayıcılara da yeterince inandırıcı görünüyor
  • Bu yöntem sunucu kaynak tüketimini düşük tutarken, tarayıcılara yük bindiriyor ve Spigot'un sayfalarının yaklaşık %60'ında kullanılıyor

Spigot ve JPEG sahteciliğinin arka planı

  • Spigot, Markov Chain tabanlı olarak sahte web sayfası hiyerarşilerini gerçek zamanlı üretip saldırgan web tarayıcılarına anlamsız veriler sunuyor
  • Bazı tarayıcıların kimliğini gizlemek için rastgele tarayıcı imzaları ve IP'ler kullandığı, botnet üzerinden yasa dışı cihaz kötüye kullanımı olasılığının bulunduğu görüldü
  • Trafik analiziyle, yeni bir tarayıcı olan "ImageSiftBot"un görsel toplamak için Spigot sayfalarına yoğun şekilde istek gönderdiği doğrulandı
  • Spigot'un temel hedefi sunucu CPU kullanımını en aza indirmek ve verimli çalışmayı sürdürmek

Ucuz görsel üretme yöntemi üzerine düşünceler

  • Görselleri dinamik üretmek, sıkıştırma nedeniyle yüksek CPU tükettiğinden daha verimli bir yönteme ihtiyaç var
  • JPEG dosyalarının dosya yapısı (boyut, renk vb.) ile sıkıştırılmış piksel verisi bölgesinden oluştuğu fikrinden yola çıkılıyor
  • Birden çok JPEG'den yalnızca yapılandırılmış başlık bilgileri çıkarılıp, piksel veri alanı rastgele veriyle doldurulacak şekilde bir yöntem geliştirildi
  • Böylece her seferinde görsel sıkıştırmak gerekmiyor, anında üretim mümkün oluyor ve sunucu yükü en aza indiriliyor

JPEG dosya yapısı ve gerçek uygulama

  • JPEG dosyaları birden fazla chunk'tan oluşur (işaretleyici ve uzunluk içerir)
  • Başlık/meta verisi korunuyor, yalnızca sıkıştırılmış piksel verisinin uzunluğu kaydediliyor → rastgele veri sadece bu alana ekleniyor
  • 514 adet JPEG örneği kullanıldığında, tüm başlık bilgisi ve gerekli yapılandırılmış verinin boyutu yalnızca yaklaşık 500KB olduğundan bellek yükü yok denecek kadar az
  • Kod örneği: Her şablonun piksel veri chunk'ını rastgele verilerle doldurarak görsel üretme

Gerçek kullanım sonuçları ve açık kaynak yayını

  • Gerçek görsel görüntüleyiciler, piksel alanı tamamen rastgele olsa bile bir ölçüde görüntü gösterebiliyor
  • Web tarayıcıları hatayı ayırt etmekte zorlanıyor ve veri toplama maliyetleri artıyor
  • 1280x960, 200~300KB boyutlu JPEG'lerde saniyede yaklaşık 900 görsel üretilebiliyor; gerçek zamanlı işleme için yeterli
  • Bu yöntem Spigot'taki tüm sayfaların %60'ına uygulanmış durumda; URL tabanlı rastgelelik tohumu kullanılarak yeniden isteklerde aynı görsel döndürülüyor
  • ImageSiftBot, Meta, AmazonBot, GPTBot gibi istemcilerden yüksek istek hacmi gözlemlendi
  • Temel amaç, az sunucu kaynağıyla tarayıcılara yük bindirmek

Huffman kodları ve ek optimizasyon

  • JPEG'in piksel verisi Huffman kodlaması kullandığından, tamamen rastgele veri eklemek bazı görüntüleyicilerde hataya yol açabiliyor
  • Basit bir bit maskesi (0x6D) tekniği eklenerek art arda 3 veya daha fazla 1 oluşması engellendi ve hatalı Huffman kodu oluşma olasılığı %90'dan %4'ün altına indirildi
  • Tamamen geçerli bir Huffman akışı üretmek de mümkün, ancak sunucu kaynağı ve geliştirme süresi açısından getirisi düşük

Sonuç

  • Spigot'un sahte JPEG üretim yöntemi, son derece verimli biçimde sunucu kaynaklarını korurken tarayıcılarda kafa karışıklığı ve kaynak israfı yaratıyor
  • İlgili kod 100 satırın altında ve GitHub'da yayımlandı
  • Basit ama yaratıcı bir web trafiği savunma ve dağıtma tekniği

1 yorum

 
GN⁺ 2025-07-13
Hacker News yorumları
  • robots.txt dosyasının /spigot/ ağacına robot erişimini engelliyor olması beklenen bir şeydi, ancak URL'den yalnızca /spigot/ kısmını çıkarınca da hâlâ Spigot'a erişilebildiğini fark etmiş; /~auj ad alanı robots.txt ile engellenmediği için, iyi niyetli bir tarayıcı bile tesadüfen bu yola girerse sonsuz sayfa döngüsüne takılabilir, bu da pek hoş bir durum değil robots.txt referans bağlantısı

    • Daha önce yazarın bir yorumunda robots.txt'yi ayrıca yapılandırmadığını söylemişti; kendisi bu kadar uç bir tercih yapması hakkında, site yöneticisinin tarayıcılardan kaynaklanan DOS'u önlemek için özellikle ayar yapmak zorunda olması fikrini sevmediğini belirtiyor; meşru bir tarayıcının bir siteyi saniyede 15'ten fazla kez sürekli kazımaması gerektiğini düşünüyor

    • İyi niyetli tarayıcıların bile sonsuz sayfa döngüsüne düşebilmesi konusunda, site sahibinin sitesini kazıyanlara karşı "nazik olmak zorunda" olmasının ne anlama geldiğinden şüpheli; gerçekten böyle bir zorunluluk olup olmadığından emin değil

  • Tarayıcı robots.txt'yi görmezden geliyorsa bunu tespit ettiğinizde, ona 'çöp' bilgi fırlatmak yerine ağ bağlantısını meşgul edip öylece bırakmanın daha verimli olduğunu düşünüyor; uç noktada sonsuza kadar çöp sunmanın neden gerekli olduğundan pek emin değil

  • Yapay zeka girişi için çalışan scraper'ları şaşırtmak adına her görsele sahte açıklama ekleme fikri aklına gelmiş; örneğin yeşil bir leke görseline "kedi catnip topuyla oynuyor", mavi bir görsele ise "ardıç kuşu yuva yapıyor" gibi farklı açıklamalar eklemek

    • İyi yapılmış bir scraper, görselin kendisini CLIP modeli veya başka bir caption modeliyle analiz edip metin açıklamasıyla görselin gerçekten eşleşip eşleşmediğini yeniden kontrol edebilir
  • En kötü örnek meta'nın işlettiği facebookexternalhit botu; bu botun robots.txt'yi resmen yok saydığı belgelenmiş durumda; Facebook bunu kötü amaçlı bağlantıları tespit etmek için yaptığını söylese de, pratikte kötü niyetli bir kullanıcı Facebook'a pahalı bir endpoint'in URL'sini tekrar tekrar gönderirse Facebook sizin yerinize trafik bombardımanı yapmış oluyor, bu yüzden her ay birkaç gün boyunca siteye günde 10 r/s üzeri trafik yağıyor

    • Ama 10 r/s gerçekten bir "trafik bombardımanı" sayılır mı, bundan şüpheli; tek bir sunucuda bile neredeyse fark edilmez bir seviye
  • Spigot hakkındaki yazıyı okurken Project Honeypot aklına gelmiş; 20 yıl önce bu projenin betiği ve bağışladığı MX kaydı, sitemde e-posta hasatçılarını yakalamaya yardımcı olduğunda, her e-postada bunu öğrenmek oldukça heyecan vericiydi; örneğin benim MX'im sayesinde doğrulanmamış bir spam göndericisinin (IP: 172.180.164.102) yakalandığına dair bildirim almak gibi

    • Honeypot betiği havalı ama bugün için epey eski usul; (TOS nedeniyle değiştirilemiyor da) Python betiği varsayılan olarak yalnızca CGI ve Zope destekliyor, bu yüzden WSGI uygulaması yazan birinin bir wrapper ile dolaşması gerekebilir
  • JPEG'i sahtelemek, düzgün bir JPEG üretmekten CPU açısından çok daha hafif; üstelik bu süreç, karşı taraftaki kötü amaçlı yazılımın JPEG çözümlemesi özensizse çökmesine yol açabilecek bir tür fuzzing işlevi de görebilir

  • Son dönemde gelen trafiğin binlerce ev tipi IP'den geliyor olması bunun mutlaka klasik bir botnet olduğu anlamına gelmeyebilir; bunun yerine birçok insanın "ücretsiz VPN" ya da "pasif gelir üretme" araçlarına kaydolup cihazını başkalarının trafiği için çıkış düğümü haline getirdiği bir 'proxyware' yapısı da olabilir; bu durumda kişi farkında olmadan bir yapay zeka tarayıcısının trafik geçidi haline gelebilir, ilgili referans

    • Sonuçta bu tür proxyware de kullanıcının gönüllü olarak katıldığı bir botnet türevi; bu kullanıcıların HN gibi yerlerde kendi IP'lerinin sorunlu olduğunu öğrenmesi pek olası olmadığından, birilerinin bu IP'leri ayrıca 'sen bir botnetin parçasısın' uyarı sayfasına yönlendirmesinin fena olmayabileceğini düşünüyor; pratikte ise hepsini doğrudan engellemek en kolayı

    • Bunun da rahatlıkla botnet kategorisine girdiğini düşünen bir görüş var

  • Botları memnun etme yönteminden söz ediş biçimi etkileyici; eğlenceli bir yazıydı ve proje de ilginç

  • "Verilen görevi yerine getirmeye çalışan bota üzüldüğüm için onu nasıl eğlendirebilirim diye düşündüm" tavrı gerçekten taze ve eğlenceli geliyor; genelde öfke ve şikâyet dolu başlıklardan belirgin biçimde farklı

    • Bu kadar olumlu bir tavrın mümkün olmasında, kötü tarayıcılara acı ve çöp yaşatabilme rahatlığının da payı var
  • Bu bağlantıdaki sonucu (görseli) beğendim görseli görüntüle, içinde bir mesaj taşıyan bir sanat işi gibi duruyor

    • Gerçek Spigot deneyimini istiyorsanız, Firefox'ta F12 > Network > No Throttling'i GPRS olarak değiştirip, Chromium'da F12 > Network > Custom profile'ı 20kbps yaparak hız sınırlaması uygulayabilirsiniz; böylece daha hissedilir oluyor

    • Acaba burada Shakespeare ile ilgili içerik de var mı diye merak ediyor