Saldırganlar, NPM kod deposuna erişim sağlayan büyük bir zayıflığı istismar ederek, Ağustos ayından bu yana çoğu fark edilmeden 100'den fazla kimlik bilgisi çalma amaçlı paketi sisteme sızdırmış durumda. Güvenlik firması Koi tarafından ortaya çıkarılan bu bulgu, NPM'nin yüklü paketlerin doğrulanmamış ve güvenilmeyen kaynaklardan gelen paketleri otomatik olarak çekip çalıştırmasına izin veren bir uygulamasını gündeme getiriyor. Koi'ye göre, PhantomRaven olarak adlandırdıkları bir kampanya, NPM'nin "Uzaktan Dinamik Bağımlılıklar" uygulamasını kullanarak 86.000'den fazla indirilmiş 126 adet zararlı paketi NPM'ye yüklemeyi başarmış.
Bir Kör Nokta
Koi firması yetkilisi Oren Yomtov, "PhantomRaven, saldırganların geleneksel güvenlik araçlarındaki kör noktaları ne kadar sofistike bir şekilde istismar ettiklerini gösteriyor. Uzaktan Dinamik Bağımlılıklar, statik analiz için görünmezdir." ifadelerini kullanıyor. Uzaktan Dinamik Bağımlılıklar, birçok diğer paketin çalışması için zorunlu olan kod kütüphaneleri olan bağımlılıklara erişimde daha fazla esneklik sağlıyor. Normalde, geliştiricinin yüklediği paketler için bağımlılıklar görünür olur ve genellikle NPM'nin güvenilir altyapısından indirilir.
Ancak RDD'ler farklı çalışıyor. Bu özellik, bir paketin, şifrelenmemiş olan HTTP üzerinden bağlananlar dahil olmak üzere güvenilmeyen web sitelerinden bağımlılık indirmesine olanak tanıyor. PhantomRaven saldırganları, NPM'ye yüklenen 126 pakete kod ekleyerek bu esnekliği istismar etmiş. Bu kod, http://packages.storeartifact.com/npm/unused-imports gibi URL'lerden zararlı bağımlılıklar indiriyor. Koi'ye göre bu bağımlılıklar, geliştiriciler ve birçok güvenlik tarayıcısı için "görünmez" durumdadır. Bunun yerine, paketin "0 Bağımlılık" içerdiği gösteriliyor. NPM'nin bir özelliği, bu görünmez indirmelerin otomatik olarak yüklenmesine neden oluyor.
Bu zayıflığı daha da kötüleştiren durum ise, bağımlılıkların Koi'nin açıkladığı gibi, önbelleğe alınmış, sürümlenmiş veya statik olmaktan ziyade, bir paket her yüklendiğinde saldırgan sunucusundan "taze" olarak indirilmesi. NPM yetkilileri bu uygulamaya ilişkin detaylar ve sorular için e-posta taleplerine hemen yanıt vermemiş.
Bu bağımlılıklar, geliştiricinin dahili sistemini yapılandıran ve diğer bilgileri gösteren ortam değişkenleri, olası takip saldırılarında kullanılabilecek GitHub, Jenkins ve NPM kimlik bilgileri ve birden çok geliştiriciden gelen kod değişikliklerinin tek bir kod tabanına entegrasyonunu otomatikleştiren sürekli entegrasyon ve sürekli teslim (CI/CD) ortamı gibi her türlü hassas bilgiyi aramak için etkilenen makineleri detaylı bir şekilde tarıyor.
Toplanan verileri dışarı çıkarma süreci ise Koi tarafından "paranoyak derecede yedekli" olarak tanımlanmış. Bu süreç, HTTP istekleri, JSON istekleri ve Websockets kurulmasına dayanıyor.
Kullanılan bağımlılıkların birçoğunun ismi, yapay zeka sohbet botları tarafından "halüsinasyon" olarak bilinen, yani yanlış veya uydurma bilgiler üretme eğiliminde olan isimlerle aynı. Geliştiriciler ihtiyaç duydukları bağımlılıkların isimleri için sık sık bu botlara danışıyor. Üretken yapay zeka modellerinin geliştiricileri ve araştırmacılar, halüsinasyonların kesin nedenini veya hata yapmayan modelleri nasıl oluşturacaklarını henüz tam olarak anlamamış durumda. PhantomRaven, halüsinasyonla üretilmiş bağımlılık isimlerini keşfettikten sonra, kendi sitesinden indirilen zararlı paketlerde bu isimleri kullanıyor.
NPM'den düzenli olarak paket indiren herkesin, sistemlerinin PhantomRaven aracılığıyla ele geçirilip geçirilmediğini belirlemek için sistem taramalarında kullanılabilecek göstergeler için Koi'nin ilgili paylaşımını kontrol etmesi öneriliyor.