2 puan yazan GN⁺ 2023-09-24 | 1 yorum | WhatsApp'ta paylaş
  • Ücretsiz blog platformu Bear, düşük kayıt eşiği nedeniyle backlink çiftlikleri, phishing, yasa dışı uyuşturucu satışı, çevrim içi casino reklamları ve kripto tanıtım spam’lerinin hedefi oldu
  • no-index·no-follow ve feed’den hariç tutma ile görünürlük azaltılabildi, ancak spam içeriklerin platforma yüklenmesini engellemek zordu
  • Akismet tabanlı engelleme etkiliydi, fakat engelleme mesajlarının spam gönderenlere aşma ipuçları vermesi gibi bir sorun ortaya çıktı
  • “Frustration Loop”, engellemek yerine formu sıfırlama, yapıştırmayı devre dışı bırakma, odağı taşıma ve tekrarlayan hatalarla spam gönderenlerin zamanını boşa harcatma yöntemi
  • Uygulandıktan sonra yeni bloglardaki spam oranı yaklaşık %30’dan %5’in altına düştü; 3 ay boyunca sorun bildiren tek kullanıcı ise çevrim içi casino reklamı yapan 1 kişiydi

Bear neden spam hedefi oldu?

  • Bear ücretsiz kullanılabildiği için kayıt olmak kolay; bu da platformu kötüye kullanmak isteyen spam gönderenleri çekiyor
  • Spam, basit bot trafiğinden çok Fiverr’da “100 backlink” satın almak gibi spam çiftliklerine daha yakın
    • Yüzlerce düşük ücretli çalışan, web’in dört bir yanına içerik gönderiyor
    • Amaç SEO sıralamasını yükseltmek olsa da, bunun gerçekte etkili olmadığını düşünüyor
  • Bear, spam yayımlansa bile daha geniş internette görünmemesi için temel savunmalar koyuyor
    • İncelenmemiş bloglara no-index ve no-follow etiketleri ekleniyor
    • Site haritasında ve keşif feed’inde de görünmüyorlar
    • Kullanıcı inceleme talebini seçerse bu durum kaldırılabiliyor
  • Ancak görünürlüğü engellemekten ayrı olarak, spam içeriğin platformun içinde var olma durumunu da azaltmak istiyor

Engellemektense aşmayı yavaşlatma yöntemi

  • Spam tespiti için WordPress ekosisteminden bir araç olan Akismet kullanılıyor
    • GPT4 ile kendi tespit sistemini yapmaya çalıştı, ancak doğruluğu Akismet’ten düşüktü ve maliyeti de daha yüksekti
    • Daha sonra Akismet aboneliğine geçildi
  • Kayıt anında engelleme kısmen etkiliydi, fakat zamanla spam gönderenler buna karşılık vermeyi öğrendi
    • Engelleme, hangi içeriğin yakalandığını gösteren bir sinyal hâline geliyor
    • Spam gönderenler meşru bir blog gibi göründükten sonra denetimin zayıf olduğu alanlara spam yüklüyor
    • Sonunda bunları elle bulup işaretlemek gerekti
  • IP engellemenin de pratik etkisi düşük
    • Spam gönderenler Nord gibi ticari VPN’ler kullanıyor
    • Sadece Nord VPN’in bile dünya çapında yüzlerce sunucusu olduğu için IP engelleme ile bunu durdurmak neredeyse imkânsız
    • Belirli IP’lerden gönderi paylaşmayı engellerseniz normal kullanıcılar da engellenebilir

“Frustration Loop” nasıl çalışıyor?

  • The Frustration Loop, spam tespit edildiğinde blogu hemen engellemek yerine bunu bir sistem hatası ya da başarısızlık gibi göstererek kullanıcıyı bezdiriyor
    • Fikir The Password Game’den alınmış
    • Spam tespit edilirse formu temizleyip “Our servers are bearly managing. Try again later.” gibi bir hata gösteriyor
    • Tüm metin alanlarında yapıştırmayı devre dışı bırakıyor
    • Her 5–10 saniyede bir giriş odağını başka bir alana taşıyarak, yazarken metnin yanlış yere girilmesine yol açabiliyor
    • Tekrar gönderildiğinde “Ensure content contains necessary parameters.” gibi başka bir hata gösteriyor
    • Bu süreci tekrarlayarak yazılımın bozuk olduğuna karar verip vazgeçmelerini sağlıyor
  • Normal kullanıcılar için tetiklenme olasılığının düşük olduğu düşünülüyor
    • Testlerde açıkça şüpheli davranışlarda bulunmadan tetiklenemedi
    • Prodüksiyonda 3 ay çalıştı ve sorun bildiren yalnızca 1 kullanıcı oldu
    • O kullanıcı çevrim içi casino reklamı yapıyordu

Uygulama sonuçları ve kalan açıklar

  • Uygulamadan sonra yeni bloglar arasındaki spam oranı yaklaşık %30’dan %5’in altına düştü
  • Mükemmel bir çözüm değil; geliştirilecek noktalar ve kapatılması gereken açıklar hâlâ var
  • Yöntemin açıklanması durumunda potansiyel spam gönderenlerin bunu aşabileceğine dair bir endişe var, ancak spam gönderenlerin bu blogu okuyacağı düşünülmüyor

1 yorum

 
GN⁺ 2023-09-24
Hacker News yorumları
  • Eski ESPN çalışma arkadaşım Mike Davidson’ın[1] 2006’da kurduğu erken dönem topluluk haber sitesi Newsvine[2] aklıma geldi.
    Newsvine’da yorumlar, oylamalar, bağlantı gönderimi ve yazı yazma vardı; haber odaklı bir Reddit gibiydi. Spam gönderenlerle ve trollerle başa çıkmak için backend’de bir kullanıcı trol olarak işaretlendiğinde, o hesabın her sayfa yüklemesine rastgele 10–60 saniyelik gecikme ekleniyordu; hatırladığım kadarıyla sorunu epey etkili biçimde azaltmıştı.
    1- http://mikeindustries.com/blog/
    2- https://en.wikipedia.org/wiki/Newsvine

    • Bu ölçüte göre yeni Reddit mobil arayüzü herkesi trol sanıyor gibi.
    • Twitter/X gibi servislerde ABD hükümet yetkilileriyle iletişim kuran bireyleri de düşünürsek bunun nasıl uygulanacağını merak ediyorum.
      Tamamen farklı bir nedenle backend’de trol olarak işaretlenen biri, bir kamu görevlisiyle iletişim kurarken gecikme yaşayabilir. Gecikme engelleme ile aynı şey değil ama federal bir yargıcın gözünde kullanıcı deneyimini bozması yeterince benzer sayılır mı, emin değilim.
    • Newsvine’ı severdim. Gerçekten yenilikçi ve hoş karşılanmış hissettiriyordu.
    • Spam ve trolleme basılı gazetelerde, radyoda, TV’de, kitaplarda ve dergilerde de olur. Sadece oralarda bunu yapabilmek için para ödemek gerekir.
      Tarihsel olarak zenginler, protokol çevreleri ve rantiye sınıfı daha fazla ilgiyi satın alabildiği için akıllarına gelen her türlü gürültüyü durmadan yaydı. Şimdi ise içerik üretimi tüketimi ezip geçiyor; hiçbir şeye yeterli dikkat kalmıyor.
      HN’deki yorumların ve bağlantıların %99’unu kimse okumuyorsa, HN’yi işleten parlak dahiler bunu bize söyler mi? Platformlar ne inşa ettiklerini bilmeden herkese ücretsiz yayın hakkı verdi; artık yalnızca zenginler değil, herkes ücretsiz spam ve trolleme yapıyor. Geriye sadece gürültü kalıyor; UN’in dikkat ekonomisi raporunu okuyabilirsiniz.
      Tek boyutlu yazılım mühendislerinin sistemleri hızlı kurup ölçekleyebilmesi, herkesin zamanını ve enerjisini boşa harcayan bu anlamsız sistemlerin ortaya çıkmasının tek nedeni gibi görünüyor.
  • Akismet’in içinde 6 yıldan fazla çalıştım.
    Akismet yorum spam’i tespiti konusunda çok iyidir; ama kayıt spam’ini iyi tespit edebilseydi wordpress.com’da bu kadar çok spam blog oluşmazdı.
    Arama motorları, seçilmiş terim listeleri ve geliştiricilerin hazırladığı araçlarla spam blogları izleyip binlerce gerçek spam blogu askıya aldım. Bazen hata da oldu ama nadirdi.
    Sonrasında bazı otomasyon araçları geliştirildi, fakat bu tür avlama ve askıya alma işleri öncelik listesinin gerisine düştü. Başlarda wordpress.com’un temiz görünmesi büyümesi için gerekliydi; yeterince büyüdüğü düşünüldüğünde ise adeta duruldu. Yanan bir arabayı su tabancasıyla söndürmek düzeyinde olduğunu biliyordum ama fazla zaman almıyordu ve oldukça tatmin ediciydi.
    Yılın bu döneminde Halloween spam bloglarını kurcalardım; Christmas spam blogları da görünmeye başlardı.

  • Üçüncü taraf filtre olmadan e-posta spam’inden kurtulmak için basit bir yöntem kullanıyorum.
    E-posta için kişisel bir alan adım var ve alan adına gelen tüm postaları alan bir catch-all hesabı kullanıyorum. Buna karşılık her site ve servis için sitea@mydomain.com, site2@mydomain.com gibi farklı adresler veriyorum.
    Böylece e-postaları gönderen yere göre güvenilir biçimde otomatik sınıflandırabiliyorum; verdiğim adlandırma biçimini de tutarlı tuttuğum için bu biçime uymayan rastgele postalar anında siliniyor, görmüyorum bile.
    Neredeyse hiç spam gelmiyor; ama bir servis adresi sızdırırsa o servisteki e-postayı değiştiriyor ya da hesabı kapatıyor ve ilgili adresi engellenenler listesine ekliyorum. O kadar basit ki tüm e-posta programlarının alan adının tamamını bu şekilde yönetebilmesi gerektiğini düşünüyorum.

    • Kişisel alan adınız yoksa alternatif olarak Fastmail masked emails(https://app.fastmail.com), Firefox Relay(https://relay.firefox.com/), SimpleLogin(https://simplelogin.io/) gibi seçenekler var; daha pek çokları da mevcut.
    • Benzer şekilde her harici hedef için ayrı adres kullanıyorum; phishing’i fark etmeye de yardımcı oluyor.
      Örneğin bir alışveriş sitesi için oluşturduğum adrese “bankadan gelen bildirim” gelirse gerçek olamaz. Kötüye kullanılan adresi /etc/aliases içinden silerek geçersiz kılabiliyorum.
      Ayrıca postfix sunucumu, gönderen tarafta ters DNS eşlemesi yoksa bağlantıyı reddedecek şekilde ayarladım. 20 yıl önce de işe yarıyordu; bugün loglara bakınca hâlâ yararlı olduğunu görüyorum.
    • Benzer bir sistem kullanıyorum. Alan adı catch-all, ama herkese ayrı adres veriyorum ve takma adın sonuna e-posta kuralının ne yapması gerektiğini belirten bir parça ekliyorum.
      Örneğin anything_s@mydomain.com adresine gelenler doğrudan spam klasörüne gidiyor. Google’dan küçük web sitesi kayıtlarına kadar neredeyse hepsinde bunu kullanıyorum. Zaten çoğunlukla sadece spam gönderdikleri için; ara sıra spam klasörünü kontrol ettiğimde de hiç önemli bir şey görmedim.
      Sıradan şirketlerin gönderdiği e-postaların çoğu da ilgimi çekmediğinden benim için spam sayılır. Uber Eats de her sipariş için birkaç e-posta gönderiyor; benim ölçütüme göre bu sadece spam. Gerçekten önemsediğim bir servis olursa spam’e düşmeyen başka bir son ekli adres veririm ama bu neredeyse hiç olmuyor.
      Bir web sitesi adresi sızdırdığında gelen phishing spam’inin yanı sıra, çoğu web sitesinin gönderdiği “küçük bir etkileşim hakkında önemli bilgi” türü e-postaları da iyi filtreliyor.
    • Benzer bir sistem kullanıyorum ama adresi önce bir .txt dosyasına “kaydediyorum”. Biçim sitename-random-number@mydomain şeklinde.
      Catch-all, spam gönderen tarafın tüm e-postalar başarıyla teslim edilmiş gibi görmesine yol açar; böylece spam gönderen tekrar tekrar göndermeye devam edip kaynaklarını boşa harcayabilir.
    • Yıllardır benzer bir şey yapıyorum ama otomatik silme kullanmıyorum.
      Gözlemlediğim kadarıyla spam yalnızca blogumda herkese açık yayımladığım e-posta adresime ve GitHub adresime geliyor. Kimsenin adresimi spam gönderenlere sattığı yok; görünen o ki sadece herkese açık adresler kazınmış.
  • Sosyal ağların spam ekipleri genelde spam yapanları shadow ban’ler.
    Amaç, spam yapan kişinin yakalandığını anlamasını olabildiğince zorlaştırmaktır. Bu yüzden sinir bozma tekniklerinin ya da basit hesap askıya almaların yaygın kullanılmadığını düşünüyorum.
    Spam önleme, özünde tespit taktikleri dağıtan şirketlerle tespitten kaçmak için giderek daha karmaşık yöntemler kullanan sofistike spamciler arasında bir silahlanma yarışı olduğu için ilginç. Spamcilerin yöntemlerini geliştirmelerine gerek olmadığına inandırılabilirlerse bu şirket açısından avantajdır.

    • Sorun, gerçek insanların buna yakalanması. Benim TikTok hesabım shadow ban’li; şu an ne yüklesem görüntülenme 0, LIVE’da da izleyici 0.
      Instagram hesabım ise kendimi taklit ettiğim gerekçesiyle kalıcı olarak askıya alındı. Tüm hesabı kaybettiğim için daha kötüydü; selfie bile göndermemi istediler, görseli gönderdiğim anda kalıcı olarak askıya alındı.
    • İronik biçimde en iyi spam tespit ekipleri spamciler için çalışıyor. Reklam spamdir; yalnızca adtech maaşını ödediğinde istisna olur.
    • Bağlama göre hesap askıya alma silaha dönüştürülebilir. Sevmediğiniz birinin şüpheli davranıyormuş gibi görünmesini sağlayıp askıya aldırmak gibi.
    • Gördüğüm modern spam araçları bu yüzden doğrulama için ikinci bir hesap listesi alıyor.
      Yorumların görünüp görünmediğini örnekleyerek kontrol edip shadow ban’li hesapları otomatik olarak kaldırabiliyorlar.
  • Akismet’in düzgün çalışan bir itiraz süreci yok. Çok uzun zaman önce bloguma yorum yazarken Akismet tarafından banlandım.
    Akismet kullanan yerlere yorum yazınca sessizce filtreleniyor. Disqus’ta da tanıdığım kişilerin blog yorumlarına çok sayıda faydalı bağlantı koyduğum için banlanmıştım, ama onlar 2 gün içinde çözdüler ve çok naziktiler.
    Akismet en azından sayısız yıl önce banlanmış WordPress kullanıcılarını temizlemeli, WordPress de biraz daha az akıl dışı bir alternatife geçmeli.
    Kendi WordPress blogumda yanıt yazamamak aslında epey komik; benim için başka bir blog motoru kullanmak kolay, ama WordPress’in kendi kullanıcılarına “biraz spam öldürelim” tarzında davranması hoş değil.

    • Akismet geliştiricisiyim. support@akismet.com adresine bilgi gönderirseniz yorumların neden yakalandığına bakabiliriz.
    • Böyle durumlarda genelde o siteyi tamamen bırakıyorum.
      Alan adını uBlock listesine eklemek ve başlığı Google’da aramak tek tık sürüyor. Hiçbir itiraz süreci bunun kadar kolay ve güvenilir olamaz.
  • Orijinal yazıda geçerli kullanıcıların nasıl ayırt edilip sinir bozma döngüsüne sokulmadığı eksik.
    Akismet ile kayıt sırasında spam’i engellemek bir ölçüde işe yaramış ama aşması kolaymış; bazı spamciler normal blog gibi görünmenin yolunu bulmuş ve elle bulunup işaretlenmeleri gerekmiş. Ardından spam tespit edilince zamanlarını boşa harcayıp vazgeçmelerini sağlayan “Frustration Loop”u yaptıklarını anlatıyor.
    Ancak bunun normal kullanıcılarda tetiklenip tetiklenmediği kısmında yalnızca 3 ay çalıştırıldığı ve sorun bildiren tek bir kullanıcı olduğu yazıyor. Kişisel olarak yazının en ilginç kısmı buydu.
    Spamcileri sinirlendiren önlemin kendisi güzel, ama spamcilerle gerçek kullanıcıları ayırma, yanlış pozitif ve yanlış negatifleri anlama gibi konularda daha fazlası olmasını isterdim. Tespit ayrıntılarını açıklamanın zor olduğunu ve yazının konusunun Frustration Loop olduğunu anlıyorum.

    • Akismet’e para ödeyip kullanıcı kayıt bilgilerini iletiyorlar. Yazıdaki GIF’te hangi verilerin gönderildiğini görebilirsiniz.
      Akismet spam derse sinir bozma döngüsünü açıyorlar; bence oldukça zekice.
    • Akismet kayıt anındaki spamcileri de tespit ediyor mu? Bildiğim kadarıyla ana işlevi, verilen bir yorumun spam olup olmadığını belirleyen bir API.
      https://akismet.com/developers/comment-check/
    • Tam da mesele bu. Kimse sorunu çözmek istemiyor gibi geliyor.
      Çözerlerse yalnızca metriklere ve gelire zarar vereceği için, artık böyle düşünmeye başladım.
  • E-posta iletişim formlarında en iyi işe yarayan spam önlemi, “blindcopy”, “bcc”, “cc”, “additional address” gibi adlara sahip birkaç gizli metin giriş alanıydı.
    Hepsine varsayılan değer koyuyordum; gönderim işleyicisi bu alanların değerinin varsayılandan farklılaştığını algılarsa gönderimi reddediyordu. O formdan tek bir sahte e-posta bile almadığımı sanıyorum.

    • Spam betikleri bundan çok daha az akıllı.
      İletişim formuna metinsiz tek bir gizli alan koydum; erişilebilirlik için ipucu metni olarak kibar bir uyarı ekledim. O alana bir şey girilirse sessizce atıyordum; girilen içerik bana cc olarak gönderiliyordu ve formun yayında olduğu yaklaşık 8 yıl boyunca sanırım 0 spam e-posta aldım.
    • Bu kavrama honeypot alanı dendiğini duymuştum; dediğiniz gibi oldukça iyi çalışıyor.
      Yine de parola yöneticilerinin veya otomatik doldurmanın buna nasıl yakalanmadığını merak ediyorum. Alanın görünmediğini algılayabiliyorlar mı?
    • Hacker News de böyle bir şey kullanmıyor mu? Giriş sayfasında gizli bir input alanı var.
    • Ben de aynısını yaptım ve gerçekten çok etkili oldu.
  • “Sinir bozma” kullanıcılarının girdiği içerikleri örnekleyip gerçekten normal olup olmadığını kontrol ediyorlar mı? Yanlış pozitif ve yanlış negatif oranları var mı? Toplam normal kayıt sayısının azalıp azalmadığına ya da artıp artmadığına da baktılar mı?
    Bu yöntemi kullanan yalnız onlar değil. Birçok sayfa VPN kullanınca hata bile göstermeden sessiz ama sinir bozucu biçimde başarısız oluyor. VPN’i kapatınca sihirli bir şekilde her şey çalışıyor. Etsy de bir süre VPN kullanınca boş sayfa döndürüyordu; aşırı sinir bozucuydu.

  • Instagram’da bir sinir bozma döngüsü var. Bunu biliyorum çünkü benim hesabımda tetikleniyor.
    Yaptığım her eylemde, ne kadar önemsiz olursa olsun, beni yeniden giriş yapmaya zorluyor. Bir bağlantıya tıklasam da başka bir şey yapsam da her seferinde giriş ekranından geçmem gerekiyor.
    Başta “hesapta şüpheli etkinlik algılandı” diye başladı, ardından “hesap devre dışı bırakıldı” mesajı çıktı. Gerçek nedeni söylemiyorlar; resmî kurallarda yer alan olası tek gerçekçi neden, birilerini rahatsız eden bir gönderi paylaşmış olmam.
    Ama bu açıklamada bir sorun var. Ben hiçbir şey paylaşmadım. Instagram’da yaptığım tek şey birkaç kişiyi takip etmek. Kod girme ve kendi fotoğrafımı gönderme adımlarından sonra hesaba erişimi geri aldım, ama artık ne yaparsam yapayım yeniden giriş yapmam gerekiyor. Bunun tesadüf ya da bug olduğuna inanmak zor; belli ki beni sorunlu biri olarak işaretlemişler, ama infaz edecek kanıtları olmadığı için hayali bir ihlal üzerinden cezalandırıyor gibiler.
    Muhtemelen ara sıra Instagram fotoğraf bağlantılarına tıklamam buna neden oldu. Meta’nın bir parçası olması da sorun; Instagram’ı tamamen kapatırsam, uzaktaki birkaç arkadaşımla iletişim kurmak için kullandığım Facebook hesabıma erişimi de kaybederim.
    Dünya Facebook’tan ayrıldı ve artık herkes Instagram’da. Instagram izin verseydi muhtemelen ben de öyle olurdum.

    • Beni crawler ya da scraper olarak tanımlamış gibi görünüyorlar. Anlaşılan başka bir Cambridge Analytica vakası istemiyorlar.
  • Spam tespitinin, spam gönderenlerle tespit edenler arasında bir yaratıcılık savaşı olduğu söyleniyor; Akismet söz konusuysa bu doğru olabilir. Ama spam gönderenlerin toplanacağı bir alan sağlayan bir web sitesiyseniz, artık durum böyle değil.
    Bu, benim blogum/web sitem ile diğer bloglar/web siteleri arasındaki bir rekabet. Ben komşularımdan daha iyi korunuyorsam spam gönderenler komşulara gider. Özellikle botları değil de tıklama çiftliklerini engelliyorsanız bu daha da geçerli.
    Şaka yollu söylendiği gibi, ormanda ayıdan hızlı koşmanız gerekmez; sürüdeki en yavaş kişi olmamanız yeterlidir.