.NET yazılım geliştiricileri için NuGet deposunda barındırılan bir fırıncı düzinelerce paket, aslında yükleme sistemini tehlikeye atacak ve arka kapı işleviyle kripto çalan kötü amaçlı yazılımları indirecek kötü amaçlı Truva atı bileşenleridir.
Yazılım tedarik zinciri güvenlik firması JFrog, 21 Mart’ta yayınlanan bir analizde, o zamandan beri kaldırılan 13 paketin 166.000’den fazla indirildiğini ve Coinbase ve Microsoft ASP.NET gibi diğer meşru yazılımların kimliğine büründüğünü belirtti. JFrog saldırıyı, şirketin araştırmacıları kurulum sırasında bir dosya – init.ps1 – yürütüldüğünde şüpheli etkinlik fark ettiğinde ve ardından yürütülebilir bir dosyayı indirip çalıştırdığında tespit etti.
.NET ve C# programlama dilleri saldırganlar arasında daha az bilinmesine rağmen, kötü niyetli kodun keşfi, saldırganların tedbirsiz geliştiricileri tehlikeye atmanın bir yolu olarak yazılım tedarik zincirine daha fazla dallandığını gösteriyor. JFrog.
“NuGet paket kurulumunda kötü amaçlı kod yürütme teknikleri önemsiz olsa da Python veya JavaScript’tekinden daha az belgelenmiştir ve bazıları kullanımdan kaldırılmıştır, bu nedenle bazı acemi saldırganlar bunun mümkün olmadığını düşünebilir” diyor. “Ve belki de NuGet, kötü amaçlı paketleri otomatik olarak daha iyi filtreliyor.”
Yazılım tedarik zinciri, geliştiricilerin sistemlerini tehlikeye atma veya geliştiricilerin uygulamaları aracılığıyla son kullanıcıya fark edilmeyen kod yayma girişimleriyle saldırganlar tarafından giderek daha fazla hedef alınır hale geldi. Python Paket Dizini (PyPI) ve JavaScript odaklı Düğüm Paket Yöneticisi (npm) ekosistemleri, açık kaynak projelerini hedef alan tedarik zinciri saldırılarının sık hedefleridir.
JFrog’a göre, yaklaşık 350.000 benzersiz paketten oluşan .NET yazılım ekosistemine yapılan saldırı, kötü niyetli paketlerin NuGet’i ilk kez hedef almasıdır, ancak şirket daha önce bir spam kampanyasının geliştiricilere kimlik avı bağlantıları gönderdiğini belirtmişti.
Yazım Hatası Hala Bir Sorun
Saldırı, yazım hatalarının bir sorun olmaya devam ettiğinin altını çiziyor. Bu tür bir saldırı, bir kullanıcının ortak bir paketi yanlış yazacağı veya hataları fark etmeyeceği umuduyla, benzer görünen adlara (veya yaygın yazım hataları olan aynı ada) sahip paketler oluşturmayı içerir.
JFrog araştırmacıları Natan Nehorai ve Brian Moussalli, çevrimiçi danışma belgesinde geliştiricilerin yeni paketleri bir programlama projesine dahil etmeden önce iyice bir gözden geçirmeleri gerektiğini yazdı.
“NuGet deposunda daha önce hiçbir kötü amaçlı kod saldırısı gözlemlenmemiş olsa da, kötü amaçlı kodu yaymak için yazım hatası gibi yöntemler kullanan en az bir yeni kampanya için kanıt bulabildik” diye yazdılar. “Diğer depolarda olduğu gibi, yazılım tedarik zincirinin güvenli kalmasını sağlamak için yazılım geliştirme yaşam döngüsünün her adımında güvenlik önlemleri alınmalıdır.”
Anında Kod Yürütme Sorunlu
Araştırmacılar, geliştirme araçları tarafından otomatik olarak yürütülen dosyaların bir güvenlik zayıflığı olduğunu ve saldırı yüzey alanını azaltmak için ortadan kaldırılması veya sınırlandırılması gerektiğini belirtti. Bu işlevsellik, örneğin Go paketi ekosistemiyle karşılaştırıldığında npm ve PyPI ekosistemlerinin zehirlenme sorunları yaşamasının önemli bir nedenidir.
JFrog araştırmacıları, blog gönderisinde “Keşfedilen kötü amaçlı paketlerin NuGet’ten kaldırılmış olmasına rağmen, NuGet paketleri hala paket kurulumundan hemen sonra kod çalıştırma olanakları içerdiğinden, .NET geliştiricileri kötü amaçlı kodlara karşı yüksek risk altındadır.” . “[A]reddedilmiş olsa da, [an initialization] komut dosyası hala Visual Studio tarafından onurlandırılmaktadır ve bir NuGet paketi kurulurken herhangi bir uyarı olmadan çalışacaktır.”
JFrog, geliştiricilere içe aktarılan ve kurulan paketlerdeki yazım hatalarını kontrol etmelerini tavsiye etti ve geliştiricilerin bunları “yanlışlıkla projelerine yüklememelerini veya bir bağımlılık olarak bahsetmemelerini” sağlamaları gerektiğini söyledi.
Ek olarak, geliştiriciler, indirilmekte olan ve otomatik olarak yürütülen yürütülebilir dosya olmadığından emin olmak için paketlerin içeriğini görüntülemelidir. Bu tür dosyalar bazı yazılım ekosistemlerinde yaygın olmakla birlikte, genellikle kötü niyetli niyetin bir göstergesidir.
JFrog’dan Menashe, çeşitli karşı önlemler yoluyla, NuGet deposunun yanı sıra npm ve PyPI’nin yavaş ama emin adımlarla güvenlik zayıflıklarını ortadan kaldırdığını söylüyor.
“NuGet’in gelecekte daha fazla bir hedef haline gelmesini beklemiyorum, özellikle de NuGet bakımcıları paket kurulumunda kod çalıştırma desteğini tamamen kaldırırlarsa – ki bunu zaten kısmen yapmışlar” diyor.