JFrog güvenlik araştırmacıları, npm paket kayıt defterinde 148 kötü amaçlı paketten oluşan bir kampanya tespit etti. 'Charlie-kirk', 'ilovefemboys' ve 'miguelphonk' gibi isimler taşıyan bu paketler, öğrenci web proxy'si kılığında dağıtılmış ve ziyaretçilerin tarayıcılarını farkında olmadan dağıtılmış hizmet reddi (DDoS) botnet'inin bir parçası haline getirmişti. Kampanya, mayıs ayında yaklaşık iki hafta boyunca aktif kaldı.
Paketler, geliştiricileri hedef almak yerine, npm kayıt defterini ücretsiz bir barındırma platformu olarak kullanarak tuzaklı bir proxy sitesi oluşturdu. Okul web filtrelerini aşmak isteyen öğrenciler, farkında olmadan saldırı trafiğini sağladı. Her paket, 'Lucide' markalı bir proxy uygulaması taşıyor ve 'Riverbend Tutoring' veya 'Northstar Tutoring' gibi eğitim amaçlı bir açılış sayfası görünümü veriyordu.
Yüzeyde proxy beklendiği gibi çalışıyor, öğrencilerin içerik filtrelerini aşarak oyunlara ve engellenen sitelere erişmesini sağlıyordu. Ancak arka planda, operatörlerin istediği zaman değiştirebileceği bir uzaktan kod yükleyici ve Wisp proxy protokolü ile iletişim kuran bir WebSocket flood üreticisi çalışıyordu. Sayfayı açan herkes, hiçbir şeyden haberi olmadan botnet'in bir parçası haline geliyordu.
Kötü amaçlı kod, paket yükleme sırasında değil, yalnızca tarayıcıda çalışıyordu. Paketlerde yaşam döngüsü kancaları veya yerel derleme betikleri bulunmuyordu ve hiçbir projeye içe aktarılmak üzere tasarlanmamıştı. Bu, Eylül 2025'te 500'den fazla paketi etkileyen Shai-Hulud solucanı gibi geliştiricileri hedef alan saldırılardan farklı bir yaklaşımdı; bu saldırı, doğrudan derleme hattını atlayıp tarayıcı sekmesinde bekliyordu.
Uzmanların Görüşleri
SafeDep'in daha önceki bir uyarısı, mayıs ayında 141 paketi tespit etmiş ve bunları reklam yazılımı ve kayıt defteri kötüye kullanımı olarak değerlendirmişti. JFrog, daha derin bir analiz yaparak uygulamanın 5.4 MB'lık JavaScript giriş paketini deobfuskasyon yoluyla 20.600 satırdan fazla okunabilir koda dönüştürdü ve Wayback Machine'den arşivlenmiş yükleri kurtararak kampanyanın zaman çizelgesini yeniden oluşturdu.
Önemli Gelişmeler
Analiz, reklam yazılımının altında iki modül olduğunu ortaya çıkardı. Birincisi (G2), uzaktan betik yükleyici olarak çalışıyor ve GitHub deposundan jsDelivr CDN aracılığıyla JavaScript çekiyordu. Sabit bir commit yerine değiştirilebilir ana dalı işaret ediyor ve Subresource Integrity (SRI) denetimi yapmıyordu. Bu sayede, GitHub hesabının sahibi her an tüm ziyaretçilerin tarayıcısında çalışan kodu değiştirebiliyordu. Arşivlenmiş bir kopya, bu kodun her 500 milisaniyede bir milyon karakterlik bir dize oluşturarak bir hemşirelik okulunun sunucusuna no-cors POST isteği gönderdiğini gösterdi.
İkinci modül (I2) ise daha karmaşıktı. Bir metin dosyasından hedef WebSocket URL'sini ve 1 ile 1.024 arasında bir soket sayısını alıyor, ardından bu kadar bağlantıyı döngüsel olarak açıyordu. Arşivlenmiş yapılandırma, her tarayıcıyı lunaron[.]top adresindeki bir Wisp sunucusuna 30 bağlantıyla yönlendiriyordu. Wisp, düşük yüküyle bilinen bir protokol olup, her bağlantı geçerli Wisp CONNECT ve CLOSE çerçeveleri göndererek sunucuda dosya tanıtıcılarını tüketiyor ve logları dolduruyordu. Bu, hacimsel değil, kontrol düzlemi saldırısıydı.
Sonuç ve Değerlendirme
Kampanya, altyapı olarak sıkı bir şekilde kümelenmişti ve saklanmaya çalışılmamıştı. JFrog, yapıları lucideproxy adlı bir GitHub organizasyonuna kadar takip etti; hesaplar saniyeler arayla oluşturulmuş, geeked[.]wtf e-postası ve bir Discord kullanıcı adıyla bağlantılıydı. 93 dağıtım ana bilgisayar adından 90'ı, G-Core Labs tarafından barındırılan tek bir IP adresine (92.38.177[.]17) çözümleniyordu. Paketlerin içinde bırakılan otomatik yayınlama betiği ve çocukça paket isimleri, operatörlerin özellikle dikkat çekmek istemediğini ancak iz bırakmaktan da çekinmediğini gösteriyor.
Kaynak: thehackernews.com