DDoS Botnet

JFrog'un yeni araştırmasına göre, öğrenci web proxy'leri olarak gizlenen 148 npm'lik paketlerden oluşan bir kampanya, Mayıs ayında yaklaşık iki hafta boyunca ziyaretçilerin tarayıcılarını dağıtılmış bir hizmet reddi botnet'ine dönüştürdü.

Paketler, onları kurabilecek geliştiricilerin peşine düşmedi. Operatörler, kayıt defterini bubi tuzaklı bir proxy sitesi için ücretsiz barındırma olarak kullandı ve okul web filtrelerini atlatmak için gelen öğrencilerin saldırı trafiğini sağlamasına izin verdi.

Charlie-kirk, ilovefemboys ve miguelphonk gibi isimler altında gönderilen paketlerin her biri "Lucide" markalı bir proxy uygulaması taşıyor ve Riverbend Tutoring veya Northstar Tutoring adı verilen bir eğitim açılış sayfası gibi görünüyor.

Görünüşte proxy işe yaradı ve öğrencilerin içerik filtrelerini geçerek oyunlara ve engellenen sitelere erişmesine olanak tanıdı. Altına, operatörlerin yükünü istedikleri zaman değiştirebilecekleri bir uzaktan kod yükleyici ve ayrıca Wisp proxy protokolünü konuşacak şekilde oluşturulmuş bir WebSocket sel oluşturucu yükledi. Sayfa açan herkes farkında olmadan sürüye katılmıştır.

Bunların hiçbiri yükleme sırasında çalışmıyor. Paketlerde yaşam döngüsü kancaları ve yerel derleme komut dosyaları bulunmaz ve bunlar hiçbir zaman bir projeye aktarılmak üzere yazılmamıştır.

Eylül 2025'te 500'den fazla pakete çarpan, kendi kendini kopyalayanShai-Hulud solucanı geliştirici sırlarını topladı ve çalınan tokenlarla kendisini yeniden yayınladı. Bundan günler önce, qixolarak bilinen bakımcıya yönelik birkimlik avı saldırısı, cüzdanı tüketen kodu tebeşir, hata ayıklama ve aralarında milyarlarca haftalık indirme bulunan diğer 16 pakete kaydırdı.

Bu saldırılar, bir paket yüklendiği anda tetiklenir ve yazılım geliştiren kişileri hedef alır. Bu, derleme hattını atlar ve bir tarayıcı sekmesinde bekler.

SafeDep'in daha önceki birtavsiyesiMayıs ayında paketlerin 141'ini katalogladı ve işlemi reklam yazılımı ve kayıt defterinin kötüye kullanılması olarak okudu: popunder reklamlar, üçüncü taraf para kazanma komut dosyaları ve öğrencileri hedefleyen bir Scramjet proxy'sine cıvatalanmış Google Analytics takibi. Bu, yüzeyde görüneni destekliyordu.

JFrog konuyudaha da ileri götürdü. Ekip, uygulamanın 20.600 satırdan fazla okunabilir kod halinde paketlenen 5,4 MB'lık tek satırlık bir JavaScript olan giriş paketinin gizliliğini kaldırdı ve kampanyanın zaman çizelgesini yeniden oluşturmak için Wayback Machine'den arşivlenen verileri kurtardı.

Reklam yazılımının altında iki modül vardı ve her ikisi de React arayüzü oluşturulmadan önce çalışıyordu.

JFrog'unG2olarak adlandırdığı ilki, uzak bir komut dosyası yükleyicisidir ve kodu olabildiğince güvenli olmayan bir şekilde getirir. JavaScript'i jsDelivr CDN aracılığıyla bir GitHub deposundan çeker, sabitlenmiş bir taahhüt yerine değiştirilebilir ana dalı işaret eder, Alt Kaynak Bütünlüğü kontrolü göndermez ve proxy sitenin kendi kaynak ayrıcalıklarıyla geri gelen her şeyi çalıştırır: çerezlere, yerel depolamaya ve aynı kaynaklı uç noktalara tam erişim.

Yönlendiren yok politikası, isteğin geldiği yerde reklam yayınlanmasını engeller. GitHub hesabını arkasında kim tutuyorsa, her ziyaretçinin tarayıcısında çalışan kodu istediği zaman değiştirebilir.

DDoS Botnet

JFrog baktığında depo bir 404 döndürüyordu, ancak 30 Mayıs'taki arşivlenmiş bir kopya hizmet ettiği şeyi korudu: kaba bir HTTP seli. Her 500 milisaniyede bir, komut dosyası bir milyon karakterlik yeni bir dize oluşturur ve bunu JFrog'un Matteson, Illinois'deki bir hemşirelik okulunun kamu alanı olarak tanımladığı cdn.caan.edu adresinde cors olmayan bir POST olarak tetikler.

İstekler hiçbir zaman yanıt beklemez, dolayısıyla birikir. JFrog, her aktif ziyaretçinin yükleme hızını saniyede yaklaşık 2 MB olarak hesaplıyor; bu, bin açık proxy sekmesinin hedefe saniyede yaklaşık 2 GB iteceği anlamına geliyor. Rastgeleleştirilmiş bir sorgu parametresi önbelleğe alma proxy'lerini alt eder ve no-cors CORS ön kontrolünü atlar, böylece hiçbir şey paketleri kısıtlamaz.

İkinci modül,I2daha keskin olanıdır. Hedef WebSocket URL'sini ve 1 ile 1.024 arasında sınırlanmış bir soket sayısını tutan websocket.txt adlı düz metin dosyasını getirir ve ardından bu sayıda bağlantıyı kademeli bir döngüde açar. Arşivlenen yapılandırma, her tarayıcının, kendisi de kötü amaçlı reklam enjekte etmekle meşgul canlı bir proxy olan Lunaron[.]top'taki bir Wisp uç noktasına 30 bağlantı kurmasını hedefliyordu.

Wisp tek bir WebSocket üzerinden birçok TCP ve UDP soketini tünellemeye yönelik düşük maliyetli bir Mercury Workshop protokolüdür ve bu paketlerin taklit ettiği aynı tarayıcı-proxy sahnesinde yaygın olarak kullanılan bir tesisattır.

Bağlandıktan sonra her tarayıcı, soketini ikili moda ayarlar ve her 100 milisaniyede bir geçerli bir Wisp CONNECT çerçevesi ve ardından bir CLOSE çerçevesi gönderir; her ikisi de localhost:1'e işaret eder. Çerçeveler doğru küçük-endian Wisp paketleridir, dolayısıyla hedef öğrencinin kendi makinesi değildir. Bağlantının en ucundaki uzak Wisp sunucusudur.

Bu, onu hacimsel bir saldırı yerine kontrol düzlemi saldırısı haline getiriyor. 1.024 soketin tamamını çalıştıran tek bir tarayıcı, bir Wisp sunucusunu saniyede yaklaşık 10.240 bağlantıyı tahsis etmeye ve kesmeye zorlayabilir ve aynı zamanda 20.000'den fazla günlük satırı yazabilir. Bu tavandır, ortam değil. JFrog, The Hacker News'e, arşivlenen 30 soketli yapılandırmada bir tarayıcının saniyede yaklaşık 300 CONNECT ve 300 CLOSE karesi göndereceğini söyledi.

JFrog, Mercury Workshop'unwisp-server-node'unun hedefin geridöngü mü yoksa özel adres mi olduğunu kontrol etmeden her CONNECT çerçevesi için yeni bir yuva açtığını ve her denemeyi günlüğe kaydettiğini belirtiyor. Bu, dosya tanımlayıcılarını tüketir, günlük depolama alanını doldurur ve proxy'yi bırakır. wisp-server-node zaten kullanımdan kaldırıldı; bakımcıları, kullanıcıları tam da bu sınıftaki güvenlik ve istikrar sorunu nedeniyle başka yerlere yönlendiriyor.

Böylece kampanya, bir öğrenci proxy aracını, diğer öğrenci proxy'lerinin bağlı olduğu sunuculara karşı bir silaha dönüştürdü ve yandaki bir okula ayrı bir saldırı hedefledi.

Altyapı sıkı bir şekilde kümelenmiştir ve gizlenmek için tasarlanmamıştır. JFrog, derlemelerin izini, hesapları birkaç saniye arayla kaydedilen, geeked[.]wtf'deki bir taahhüt e-postasına ve bir Discord tanıtıcısına bağlanan lucideproxy adlı bir GitHub kuruluşuna kadar takip etti. Bulduğu 93 dağıtım ana makine adından 90'ı, G-Core Labs tarafından barındırılan tek bir IP adresine (92.38.177[.]17) çözümlendi.

Yeni paket adları, tarball'ların içinde bırakılan otomatik yayınlama kabuk komut dosyası ve SafeDep'in hizmet çalışanında bulduğu "TY WAVES + CHATGPT ILY" yorumu arasında, her iki firma da operatörü genç olarak okuyor. Bir hesap 35 dakikadan kısa sürede 116 paket gönderdi ve npm bunu yavaşlatacak hiçbir şey yapmadı.

JFrog'un taahhüt geçmişi hikayeyi ortaya koyuyor. Proje, Mart ayında basit bir reklam yazılımı olarak başladı, Mayıs ortasında iki günlük bir patlamayla uzaktan yükleyiciyi ve Wisp oluşturucuyu ekledi, ay sonunda hemşirelik okuluna canlı saldırı düzenledi ve ardından 31 Mayıs'ta raporlama başladığında kötü amaçlı modülleri geri kaldırdı.

8 Temmuz'da yeni bir hesap altında gerçekleştirilen ikinci dalga, toplam paket sayısını 148'e çıkardı ve temizlenmiş, yalnızca reklam yazılımlarından oluşan yapıyı gönderdi. Uygulama hâlâ gizlenmiş durumda, hâlâ saldırgan etki alanlarından gelen üçüncü taraf komut dosyalarını yüklüyor ve yükleyici hâlâ değiştirilebilir bir dalı işaret ediyor. DDoS özelliği kaybolmadı, yalnızca kapatıldı. JFrog, operatörlerin onu yeniden etkinleştirme yeteneğini koruduğunu belirtiyor: bu değişken şubeye bir taahhüt, paket güncellemesi gerekmiyor.

Kampanya paketlerinin çoğu o zamandan beri npm'den çıkarıldı ve kayıt defterinin standart 0.0.1 güvenlik yer tutucusu ile değiştirildi. The Hacker News tarafından 14 Temmuz 2026'da paket aileleri arasında yapılan anlık kontrolde çoğunun kaybolduğu ancak Charlie-kirk'ün hâlâ JFrog'un kötü amaçlı olarak işaretlenen iki sürümünü (2.0.0 ve 3.0.1) sunduğu görüldü.

Tehdit, yükleme sırasında bir implant yerine istemci tarafı bir web uygulaması olarak gönderildiğinden, JFrog'un düzeltmesi dağıtım yöntemini takip ediyor.

Bu proxy'lerin en fazla trafiği çektiği okul ve kurumsal ağlardaki yöneticiler, kampanyanın alan adlarını DNS düzeyinde engellemelidir. Mevcut yapının hâlâ ulaştığı para kazanma ve komut dosyası barındırıcıları arasında ilk engellenenler arasında woofbeginner[.]com ve c.vipersfutbol[.]com yer alıyor.

Proxy sitelerinden birini yükleyen herkes, tarayıcı önbelleğini ve yerel depolamayı temizlemeli ve özel ders veya proxy alan adı tarafından geride bırakılan tüm hizmet çalışanlarının kaydını silmelidir. Yapı ortamları adlandırılmış paketleri getiren ekipler, bunları bildirimlerden ve kilit dosyalarından almalı ve temiz bir şekilde yeniden oluşturmalıdır. JFrog'un yazısında 148 paket, alan adı, IP adresi ve karmanın tam listesi yer alıyor.

JFrog, The Hacker News'e Wisp trafiğinin canlı bir sunucuya ulaştığını gözlemlemediğini ve hedefin günlüklerine sahip olmadığını söyledi. Arşivlenen websocket.txt dosyası, 30 bağlantı sınırıyla wss://lunaron.top/wisp/ adresini işaret ediyordu ve paketler, onu alıp kendi başlarına başlayacak şekilde kodlanmıştı, ancak protokol ve paket analizi, gizliliği kaldırılmış oluşturucunun JFrog'un sanal alanındaki bir geridöngü alıcısına karşı çalıştırılmasıyla elde edildi.

Ölçek açısından JFrog'un güvenilir sayıda aktif tarayıcısı yok. 21 Mayıs ile 30 Mayıs tarihleri ​​arasında 93 ana bilgisayar adı, URL taramada Wisp yapılandırmasını talep etti, ancak 90'ı aynı G-Core adresine çözümlendi, bu da onları çoğunlukla 93 ayrı sunucu yerine tek bir dağıtımın joker karakterli alt etki alanları haline getirdi ve genel taramalar tarayıcıları tespit etti.

148 rakamı, botları değil, dağıtım için kullanılan paket adlarını sayar. cdn.caan.edu selinin korunmuş 30 Mayıs anlık görüntüsü, operatörlerin kurulumu silah haline getirdiğini gösteriyor. Okulun web kayıtları olmadan JFrog, onu kaç tarayıcının çalıştırdığını söyleyemez.

Bağımlılık tarayıcıları ve yükleme sırasındaki sanal alanlar, npm kurulumunda çalışan kodu yakalamak için tasarlanmıştır. Bu kodun yüklenmesi hiçbir zaman istenmedi. Genel kayıtlar ücretsiz CDN'lerin iki katı kadar olduğu sürece endişelenmeye değer paketler, hiçbir yapı hattının çekemeyeceği paketler haline gelebilir.

Güncelleme, 15 Temmuz 2026: Bu makale, JFrog'un botnet ölçeğine ve Wisp saldırısının canlı bir hedefe karşı gerçekleştirilip gerçekleştirilmediğine ilişkin yanıtlarıyla güncellendi.

Bu makaleyi ilginç buldunuz mu? Yayınladığımız daha fazla özel içeriği okumak için biziGoogle Haberler'de, Twitter'da and LinkedIn'detakip edin.