Güvenlik araştırmacıları, özel paketlerin adlarını ortaya çıkaran bir npm zamanlama saldırısı keşfetti, böylece tehdit aktörleri, geliştiricileri kandırmak yerine kötü niyetli klonları herkese açık olarak yayınlayabilirler.
Saldırı, depoda var olmayan bir paketle karşılaştırıldığında özel bir paket ararken “404 Bulunamadı” hatasının dönmesindeki küçük bir zaman farkına dayanır.
Tepki süresi farkı sadece birkaç yüz milisaniye iken, paket kimliğe bürünme saldırılarını gerçekleştirmek için özel bir paketin var olup olmadığını belirlemek yeterlidir.
Kuruluşlar, geliştirme ekiplerinin başarısız olma riskini en aza indirmek için dahili projeler ve belirli yazılım ürünleri için özel paketler oluşturur. yazım hatalarıve kodlarını ve işlevlerini gizli tutmak için.
Özel paketleri tutmak özel çok önemli kullanan kuruluşlar için. Aksi takdirde, saldırganlar, bilgisayar korsanlarının kuruluşların çalışanlarını yazılım projelerinde indirmeleri ve kullanmaları için kandırabilecekleri klonlar veya dizgili paketler oluşturabilir.
Geliştiriciler ve dahili yazılım test uzmanları uzlaşmayı keşfetmezlerse, ürünler son kullanıcılara ulaşarak bir sonuca ulaşabilir. tedarik zinciri uzlaşması.
Aqua Security’nin bulgularını yayınlanmadan önce BleepingComputer ile paylaşan tehdit araştırma ekibi tarafından hazırlanan bir raporda, saldırganlar giderek tedarik zinciri saldırılarına odaklanıyor ve 2021’de ilgili faaliyetlerde %300’lük bir artışa neden oluyor.
Zamanlama saldırısı ayrıntıları
npm içerir kayıt API’si kullanıcıların mevcut paketleri indirmesine, paketlerin varlığını kontrol etmesine ve belirli bir kapsamdaki tüm paketler hakkında bilgi almasına olanak tanır.
Var olmayan veya özel olarak ayarlanmış bir paketi indirmek için npm kayıt defterini kullanırken, web sitesi paketin bulunamadığını belirten bir 404 HTTP hata kodu döndürür.

Su Güvenliği npm zamanlama saldırısını keşfetti npm’de oluşturdukları özel paketlerin varlığını kontrol etmek için bu API’yi kullanarak ve 404 HTTP hatalarının yanıt süresini var olmayan paketler için API kontrolleriyle karşılaştırarak.
Araştırmacılar, bir paket adının varlığını beş kez kontrol ederek testlerini gerçekleştirdiler. npm’nin talebe yanıt vermesi için gereken ortalama sürede ölçülebilir bir fark olduğunu keşfettiler ve bir paketin özel olup olmadığını ayırt etmelerini sağladılar.
Daha spesifik olarak, özel paket varken ortalama yanıt süresi 648 milisaniye iken, mevcut olmadığında ortalama süre sadece 101 milisaniyeye düşer.

Araştırmacılar bunun, bu bilgi ifşa potansiyelini tanıtan npm API’sinin önbelleğe alma mekanizması ve mimarisinden kaynaklandığını varsayıyorlar.
Bir bilgisayar korsanı, “kör” bir sözlük saldırısı deneyebilir veya olası özel paket adlarını türetmek için hedeflenen kuruluşun genel paketlerinde adlandırma kalıpları ve kombinasyonları arayabilir.
Ek olarak, çevrimiçi bilgiler geçmiş paket bilgilerini içerir, böylece saldırganlar bunları daha sonra hangi genel paketlerin özel hale getirilebileceğini belirlemek için kullanabilir.
İkinci durumda, bir klon paketiyle olası bir uzlaşma çok gizli olabilir, çünkü bir paketin önceden herkese açık olan eski bir kopyası, onu kullanan yazılım ürününde amaçlandığı gibi çalışmak için hala yeterli işlevselliği koruyabilir.
GitHub sorunu çözmeyecek
Aqua Security, hatayı 8 Mart 2022’de GitHub’a açıkladı, ancak 25 Mart’ta mimari sınırlamalar nedeniyle düzeltilemeyeceği söylendi.
GitHub, Aqua Security’ye “Bu mimari sınırlamalar nedeniyle, zamanlama saldırılarının npm’de belirli bir özel paketin olup olmadığını belirlemesini engelleyemiyoruz” dedi.
Araştırmacılar, kuruluşların özel paketlerini kopya veya benzer adlarla taklit eden şüpheli paketleri npm’de sık sık arayarak önleyici tedbirler alabileceğini söylüyor.
Ayrıca, npm aynı adlı paketlerin genel depolara yüklenmesine izin vermediğinden, kuruluşlar özel paketlerini yer tutucu olarak taklit eden genel paketler oluşturabilir.