- NPM deposunda kimlik bilgisi hırsızlığı için hazırlanmış 100’den fazla kötü amaçlı paketin ağustostan bu yana tespit edilmeden yüklendiği ve toplamda 86 binden fazla kez indirildiği doğrulandı
- Güvenlik şirketi Koi, 'PhantomRaven' adını verdiği saldırı kampanyasının NPM’in Remote Dynamic Dependencies (RDD) özelliğini kötüye kullanarak 126 kötü amaçlı paket dağıttığını bildirdi
- RDD, paketlerin güvenilmeyen alan adlarından bağımlılık kodunu dinamik olarak indirmesine olanak tanıyan bir yapı ve bu nedenle statik analiz araçları tarafından tespit edilmiyor
- Saldırganlar bu özelliği kullanarak HTTP bağlantısı üzerinden kötü amaçlı kod indirdi; paket meta verilerinde ise “0 Dependencies” olarak göründüğü için geliştiriciler ve güvenlik tarayıcıları bunu fark etmedi
- Bu yapısal zafiyet, NPM ekosistemindeki güvenlik yönetiminin sınırlarını ve otomatik kurulum mekanizmasının risklerini ortaya koyuyor
NPM deposunda kötü amaçlı paketlerin yayılması
- Saldırganlar, NPM kod deposundaki yapısal zayıflıkları kullanarak ağustostan bu yana 100’den fazla kimlik bilgisi hırsızlığı amaçlı paket yükledi
- Paketlerin çoğu tespit edilmeden dağıtıldı ve toplam indirilme sayısı 86.000’in üzerine çıktı
- Güvenlik şirketi Koi, bu saldırıyı PhantomRaven kampanyası olarak adlandırdı ve NPM’in belirli bir özelliğinin kötüye kullanıldığını analiz etti
- Koi’ye göre 126 kötü amaçlı paketin yaklaşık 80’i, haberin yazıldığı sırada hâlâ NPM’de bulunuyordu
Remote Dynamic Dependencies (RDD) yapısındaki zafiyet
- RDD, paketlerin harici web sitelerinden bağımlılık kodunu dinamik olarak indirmesine izin veren bir özellik
- Normalde bağımlılıklar NPM’in güvenilir altyapısından indirilir; ancak RDD, HTTP gibi şifrelenmemiş bağlantılar üzerinden indirmeye de izin veriyor
- PhantomRaven saldırganları bu özelliği kullanarak kodun kötü amaçlı URL’lerden indirilmesini sağladı (ör.
http://packages.storeartifact.com/npm/unused-imports)
- Bu tür bağımlılıklar geliştiriciler ve güvenlik tarayıcıları tarafından görünmez kalıyor ve paket bilgilerinde “0 Dependencies” olarak listeleniyor
- NPM’in otomatik kurulum özelliği nedeniyle bu tür 'görünmez' bağımlılık kodları otomatik olarak çalıştırılıyor
Güvenlik araçlarının tespit sınırları
- Koi’den Oren Yomtov, “PhantomRaven, mevcut güvenlik araçlarının kör noktalarını ustalıkla kötüye kullanan bir örnek” dedi
- RDD, statik analiz araçları tarafından tespit edilmiyor
- Bu sayede saldırganlar güvenlik doğrulamalarını atlatıp kötü amaçlı kod dağıtabildi
Ek zafiyet unsurları
- Koi, RDD ile indirilen bağımlılıkların her kurulumda saldırganın sunucusundan yeniden indirildiğini açıkladı
- Önbellek veya sürüm yönetimi olmadığı için, aynı paket kurulsa bile her seferinde farklı kötü amaçlı kodun enjekte edilmesi mümkün
- Bu dinamik indirme yapısı, paket bütünlüğünün doğrulanmasını zorlaştırıyor
NPM’in yapısı ve arka plan
- NPM, JavaScript için bir paket yöneticisi olup GitHub iştiraki npm, Inc. tarafından yönetiliyor
- Node.js’in varsayılan paket yöneticisidir ve bir komut satırı istemcisi ile npm registry'den oluşur
- registry, herkese açık ve ücretli özel paketleri barındırır; ayrıca web sitesi üzerinden aranabilir
- Bu olay, NPM’in otomatik bağımlılık yönetimi yapısının saldırılar için kötüye kullanılabildiğini gösteren bir örnek olarak değerlendiriliyor
Diğer notlar
- Haberin sonunda gereksiz JavaScript çalıştırmanın engellenmesi gerektiği yönünde bir görüşe yer verildi
- Ancak bu saldırı, zorunlu JavaScript kodunun bile kötüye kullanılabildiğini gösteren bir örnek olarak işaret ediliyor
Henüz yorum yok.