Twitter'ın Kendi Kendine Yaptığı DDOS Saldırısı
(sfba.social/@sysop408)- Twitter ana akışı o sabahın büyük bölümünde çökmüş durumdayken, web istemcisinin içerik isteklerini durmadan tekrarlayıp kendi kendine DDOS oluşturuyormuş gibi davrandığı gözlemlendi
- Ekran yüklenmediğinde bile yeniden denemeler durmadı; ilk videoda rate limited hatası ve titreyen kaydırma çubuğu görülüyor
- İkinci videoda, hiç gelmeyen içeriği almaya çalışırken Twitter'ın kendisine saniyede yaklaşık 10 istek gönderdiği görülüyor
- Kısa süre önce uygulanan giriş yapmamış kullanıcılar için okuma sınırının beklenmedik bir koşul yaratmış olabileceği olası neden olarak gösteriliyor
- Sonraki videonun Firefox ağ konsolunda da isteklerin durmaksızın aktığı görüldü; bunun, kullanıcının tarayıcısının Twitter'a tekrar tekrar istek gönderdiği bir kendi kendine DDOS durumuna dönüştüğü şeklinde yorumlandı
Twitter web istemcisinde görülen tekrarlayan istekler
- Twitter ana akışı o sabahın büyük bölümünde kapalıydı ve hiçbir şey yüklenmiyorken bile web sitesi istekleri yeniden denemeyi bırakmadı
- İlk videoda kullanıcının rate limited durumda olduğunu söyleyen hata mesajı ve sağdaki kaydırma çubuğunun titrediği anlar yer alıyor
- İkinci video, kaydırma çubuğunun neden titrediğini gösteriyor ve Twitter'ın içerik almaya çalışırken kendisine saniyede yaklaşık 10 istek gönderdiği anları içeriyor
- İçeriğin gelmemesinin arka planında, giriş yapmamış kullanıcıların Twitter'ı okumasını engelleyen değişikliğin olduğu belirtiliyor
Sonraki doğrulama ve ek materyaller
- Sonraki paylaşım, Firefox ağ konsolu ekranı üzerinden ağ isteklerinin sürekli oluştuğunu ek olarak gösteriyor
- Dağıtılan kodun bir yarış durumu (race condition) oluşturduğu ve bunun sonucunda kullanıcıların Twitter'a DDOS benzeri istekler göndermesine yol açtığı yorumu yapılıyor
- Gönderiyi paylaşan kişi, başlangıçta bağlantıyı kapattığını ancak daha sonra Twitter'ın istekleri tetiklemeye devam ettiği durumu bir süre koruduğunu belirtiyor
- Ekli materyaller:
2 yorum
Twitter, geçici olarak hız sınırlı moda geçti
Hacker News görüşleri
Oldukça acı verici kişisel deneyimlerime göre, bunun berbat bir fikir olduğunu açıkça bilirken yine de uygulamaya zorlanmak kadar insanı sarsan az şey vardır
Özellikle de en iyi yargınıza aykırı hareket etmeniz için baskı yapan kişiye bunu anlatmaya çalışıp başarısız olduğunuzda daha da kötüdür; sonrasında o kişi yazılı kanıt olmasına rağmen böyle bir talepte hiç bulunmadığını yüksek sesle iddia ederse daha da beter olur
Şu anda Twitter'da çalışan insanların son önlemlerin böyle büyük yan etkilere yol açabileceği konusunda uyarıda bulunup bulunmadığını bilmiyorum ama liderliğin çalışma tarzına bakınca buna hiç şaşırmam
Son birkaç ayda Twitter'ın dönüştüğü halden hiç hoşlanmıyorum ve satın alma öncesinde de kısa format yüzünden nüansın kaybolması, birkaç kolay gömülebilir tweet'in haberlere dayanak yapılması nedeniyle sevmiyordum; ama böyle bir yönetim altında çalışmak zorunda olan insanlara gerçekten üzülüyorum
Tahminimce Elon "site çok yavaş" dedi, mühendisler de ana akış isteklerinin yavaş olduğunu gördü ama yapıyı anlamıyordu, profilleme araçları da yoktu ve gerçekçi olmayan bir süre içinde düzeltmeleri için baskı gördüler
Bu yüzden yapabilecekleri neredeyse tek şey, birden fazla paralel istek gönderip içlerinden birinin hızlı dönmesini ummak olmuş olabilir
Oyun sektöründe çalışınca, neden devasa para ve zaman harcanmasına rağmen en temel işlevleri bile bozuk oyunların piyasaya sürüldüğünü anlıyor insan
Böyle aşırı takvim baskısı paradoksal biçimde tek bir şeyi değiştirince on şeyin bozulduğu dev bir bataklık yaratıyor ve sonunda ilerleme duruyor
Bu, yıllar önce eklenmiş olması gereken temel hata işleme
403 ya da tweet'leri engelleyen başka herhangi bir yanıt, kısa aralıklarla sonsuz yeniden denemeyi asla tetiklememeli
Ekibin zafiyet ticket'larını yöneten bir araç yaptım ve ilk kullanım senaryosu, itiraz etmeme rağmen, tüm zafiyet ticket'larını silmek oldu
Bunu yapan kişi gerçek güvenlik iyileştirmesinden çok, kâğıt üzerinde daha iyi görünmeye önem veriyor
Uzun zamandır bilip tekrar tekrar önermiş olmanıza rağmen denemenize bile izin verilmemesi, hatta dışlanıp “o kişi” muamelesi görmenizdir
“Eski yöntem” bir şekilde hâlâ çalışıyor gibi görünse de şirketi yavaş yavaş öldüren teknik ve ticari yaklaşımlar yüzünden bunu yaşadım
Yine de üst düzey biri riskli ama gerekli gördüğü bir işin sorumluluğunu açıkça alırsa, sorun çıktığında çok daha iyi yanıt verecek alan oluşur ve geliştirici sonradan gelen iğnelemeleri daha az taşımak zorunda kalır
Tabii böyle şeyleri eleştirmek daha kolay
Bunun tatil haftasonu olduğuna dikkat etmek gerek
Elon büyük bir sürümü zorla öne itti ve mühendislerin işe gelip son 12 saattir tekrar tekrar yama geçmesine neden oldu
Programcılar için endişeleniyorum
Daha da şaşırtıcı olan, bu günlerde Twitter mühendisliğinin ne kadar geçici çözümlerle yürüyormuş gibi görünmesi
Kod tabanını derinlemesine anlamaya emek vermek yerine en basit ve en kısa düzeltmeler seçilince sorun çıkıyor
Bu noktada hem çalışma koşulları hem de yöneticinin beklentileri son derece açık
Her ne sebeple kalıyor olurlarsa olsunlar, hâlâ dayanmaya devam edenlere empati duymak zor
Bu hatanın asıl neden olma ihtimali çok düşük
Sunucu tarafındaki rate limiter düşük maliyetlidir ve frontend hatası yalnızca hız sınırı etkin olduğunda tetiklenir
Yönettiğim sistemlerde de ağ kütüphanelerinin varsayılan olarak makul bir sınır olmadan istekleri yeniden denemeyi sevmesi yüzünden benzer hatalar gördüm
Ama bu yeniden denemeler hiçbir zaman rate limiter'ı zorlamadı
Gerçi biraz pahalı bir iş yaptıktan sonra hata döndüren bir API'ye vuruyorsanız daha can sıkıcı olur, ama bu yüzden tüm açık endpoint'lere hız sınırı koyuyoruz
Web uygulaması muhtemelen Twitter trafiğinin en küçük kısmıdır ve yerel uygulamalarda muhtemelen bu sorun yoktur
Anonim erişimin engellenmesi bir DDoS başlattı, bu da bazı metriklerde dev bir sıçramaya yol açtı, Elon da bunu scraping artışı diye yorumlayıp scraper'ları cezalandırmak için günlük 600 tweet sınırı koydu; böyle olmuş olabilir
Benim kotam ya sıfırlanmış ya da politika değişmiş gibi görünüyor; siteye yeniden erişebiliyorum
Bu hatanın her şeyin temel nedeni olma ihtimalinin düşük olduğuna katılıyorum
Ama Musk'ın siteyi fiilen kapatma gerekçesi olarak anlattığı hikâyeye de inanmıyorum
İkisi de doğru olabilir ve bu da insanı başka olası nedenleri düşünmeye itiyor; tamamen zaman kaybı ama tuhaf bir zihinsel yem gibi geliyor
"Nothing is true and everything is possible" kitabı, Putin'in yanlış bilgiyi halkı kontrol etmek ve demokratik siyaseti ortadan kaldırmak için nasıl kullandığını anlatıyor; burada da geçerliymiş gibi hissettiriyor
Musk hayranları onun söylemelerini istediği şeyi aynen tekrar edecektir ama çoğu insan bunun sadece kendi çıkarına yönelik saçmalık olduğunu biliyordur
Ve kök nedeni bulmaya çalışanlar, bu hatada olduğu gibi kulağa doğru gelen ama arkasında hiçbir veri olmayan anlatılara kolayca kapılır
ABD'nin gelecekte izleyebileceği olası yolları görmek istiyorsanız bu kitabı şiddetle tavsiye ederim
https://en.wikipedia.org/wiki/Nothing_Is_True_and_Everything...
Böyle yeniden denemelerin backend'i ezip sunucuların istekleri reddetmeye bile yetişemediği çöküş senaryolarını bizzat görüp hafifletmeye çalıştım
Üst katmandaki çağıranların birden çok katmandaki yeniden denemeleri durumu öyle kötüleştirmişti ki, istekler uygulama tarafından işlenmeden önce TCP buffer/kuyruklarında fiilen timeout oluyordu
Twitter ana sayfa backend'inin benzer ölçekte olup olmadığını bilmiyorum
İlginç bir durum.
Ekran görüntüsüne bakılırsa çok büyük miktarda
GET /TweetDetailüretiliyor ve görünen 429’lardan, bunun bir tür hız sınırını tetiklediği anlaşılıyor.Bu, yakın zamanda tüm API çağrıları için kimlik doğrulamayı zorunlu kılma kararından kaynaklanıyorsa, suçlu aslında API gateway ya da onun altındaki benzer bir bileşen olabilir.
Ayrıca bu davranış durmuyormuş gibi görünüyor; bu da üstel geri çekilmeli yeniden denemede beklenecek bir davranış değil.
Twitter’da çalışan insanlardan daha iyi bir mühendis olduğumu iddia etmiyorum ama Musk’la ilgili değerlendirmeleri bir kenara bıraksak bile bunu canlı ortamda görmek ilginç.
Kullanıcı isteklerini düşük gecikmeyle işlemek çok önemli görüldüğünden, üstel geri çekilme yerine sabit rastgele geri çekilmenin tercih edildiği çok fazla durum gördüm.
Birçok tasarım toplantısı ve belgede, aşırı yük ile sistemin toparlanması arasındaki ödünleşimi anlayarak üstel geri çekilmeyi kullanmama kararının açıkça verildiğini gördüm.
Backend değişikliği, yani zorunlu kimlik doğrulama + hız sınırlama, frontend ve backend birlikte yeterince test edilmeden dağıtıma alınmış olabilir.
En olası suçlu bu gibi görünüyor.
Twitter instance’ları zorla kapatılıyor olabilir.
Platformer’ın 10 Haziran’daki haberine göre “Twitter, 30 Haziran’daki sözleşme yenileme tarihi öncesinde Google Cloud hizmetleri için ödeme yapmayı reddediyordu.”
Ayrıca “Twitter’ın Google Cloud sözleşmesi 2018’den beri sürüyordu” deniyor.
https://www.engadget.com/twitter-has-supposedly-started-payi...
Ah, sanki bütün bu karmaşayı bu açıklıyor.
Muhtemelen GCP’den çıkmaya çalışıyorlardır, ama bunun ödemeyi reddettikleri için bir anda GCP erişimini kaybetmeleriyle ilgili olması pek olası değil.
Bu bir hafta önceki haber.
Her şey self-hosted.
Gcloud yalnızca batch işler ve veri analizini destekliyor.
İlginç bir teori ama DDoS, anonim erişimi devre dışı bırakma kararından daha önce vardı.
Hatta o karar, devam eden DDoS azaltımı için alınmıştı[0][1].
Bu yüzden şüpheli web frontend yeniden deneme mantığı durumu kötüleştirmiş olabilir, ama temel neden bu değil.
[0] https://twitter.com/elonmusk/status/1674865731136020505
“Geçici acil önlem. Veri yağmalama öyle büyük boyuttaydı ki normal kullanıcılar için hizmet kalitesi düşüyordu!”
[1] https://twitter.com/elonmusk/status/1674942336583757825
“Bu yakında kaldırılacak. Önceki gönderide belirttiğim gibi, aşırı düzeyde veri kazıma nedeniyle sert ve acil önlemler gerekiyordu.”
“Startup’lardan dünyadaki en büyük şirketlerden bazılarına kadar, yapay zeka yapan neredeyse her şirket devasa miktarda veri kazıyordu.”
“Bir yapay zeka startup’ının saçma değerlemesine yardımcı olmak için acilen büyük miktarda sunucu açmak zorunda kalmak oldukça sinir bozucu.”
O startup’ların kullandığı belirli tarihten önceki tüm tweet’lerin devasa arşivlerinin bir yerlerde dolaşıyor olması kesin gibi.
Giriş zorunluluğu değişikliğinden önce de böyle istekler var mıydı bilen var mı?
Devasa scraping operasyonunun aslında onların JavaScript hatası olması gerçekten komik olurdu.
“Scraping trafiğinin” büyük kısmının Twitter’ın kendi suçu çıkmasına hiç şaşırmam.
Aptalca ama çok öngörülebilir bir sonuç.
Hız sınırına takılmadan önce birkaç saniye boyunca onlarca istek gitmiş olmalı.
Bu tür birçok küçük hata bir araya gelip bir DDoS ya da scraping gibi görünmüş olabilir.
Bunun bir bug olmayabileceği de düşünülebilir.
Elon, günde görülen tweet sayısını 600 ile sınırladıklarını söyledi; bu çılgın bir sınır.
Çoğu insan 5 dakika scroll etse bunu aşar.
Tweetbot feed’imde 500’den fazla öğe gösterdiğinde, 20 dakikalık birkaç tramvay yolculuğunda okuyacak yeterince saçmalık olduğunu hatırlıyorum.
Twitter’ın son dönemde trafikte devasa bir artış gördüğüne şüphem yok ama bunun büyük kısmının Twitter’ın kendi kendine yarattığı bir sorun olduğuna da oldukça eminim.
Elon sadece dokunmasa yeterdi, ama dur, ortada 44 milyar dolar vardı
Parag Agrawal ve ekibi ne yaptıklarını tam olarak biliyordu
Aptal ile para çabuk ayrılır sözü tam da buna uyuyor
Buna göre Elon, Delaware mahkemesi tarafından Twitter'ı satın almaya zorlandıktan sonra parası olan diktatörlere gidip onlardan 44 milyar dolar aldı ve onlar adına Twitter'ı yakıp yıkmayı teklif etti
Twitter olmazsa Arab Spring de olmaz, felaketlere dair gerçek zamanlı güncellemeler de olmaz ve muhalif seslerin yayılmasını engellemek için interneti kapatmaya da gerek kalmaz
Çok bir anlamı yok ama hız sınırı yeniden gevşetiliyor
6k/600/300 → 8k/800/400(öğle civarı) → 10k/1k/500(saat 15:00 civarı)
https://twitter.com/elonmusk/status/1675214274627530754 ve kendi yanıtlarına göre
“Something went wrong” çıkıyor
Yeni yalnızca giriş yapanlara açık kural altında, site ayakta olsa bile muhtemelen yine de okunamayacaktı
Artık Twitter bağlantıları kirlenmiş bağlantı haline geldi ve fiilen işe yaramaz oldu
Tam bir sirk