Geçtiğimiz ayın ortasında ortaya çıkan Shai-Hulud npm tedarik zinciri saldırısı sektöre bomba gibi düşmüştü. Kısa süre öncesinde gerçekleşen başka tedarik zinciri saldırıları bu konuda dikkatli olunmasının önemini gösteriyor. Bugünkü yazımızda bu saldırının detaylarını inceleyeceğiz.

Saldırının ismi saldırgan tarafından belirlenmiş olup (birazdan göreceğimiz üzere dosyalar ve oluşturulan repolarda Shai-Hulud ismini kullanmıştır) Dune yapımına gönderme amacıyla verilmiştir ve kum solucanı anlamına gelir. Zaten saldırı solucan saldırısı olarak nitelendirilmektedir çünkü zincir şeklinde yayılmaktadır.
Kaspersky’ın araştırmasına göre saldırı ngx-bootstrap 18.1.4 paketinin enfekte edilmesiyle başlamıştır. Bu sonuca diğer kütüphanelerde post-install scriptinin çalışması, bu kütüphanede pre-install komutunun çalıştırılması sebebiyle ulaşmışlardır.
180’den fazla npm kütüphanesini etkileyen bu saldırı, kurbanın enfekte edilmiş paketi indirmesiyle tetikleniyor. İndirme işlemi sonrası çalışan script ile kurbanın NPM-GitHub tokenleri ele geçiriliyor. Ele geçirilen giriş bilgileri ile zararlı yazılım otomatik olarak diğer paketlere yayılıyor ve bu şekilde döngüsel olarak devam ediyor. Saldırının bir diğer etkisi, private repoların ele geçirilmesidir.
Bunları yaparken kullanılan yaklaşık 3-4 MB boyutundaki bundle.js dosyası npm install sırasında çalıştırılmaktadır. Zararlı bundle dosyası; platform, mimari ve çevre değişkenlerini kontrol etmekte ve hassas giriş bilgileri için dosya sistemi taraması gerçekleştirmektedir. Bunu yaparken TruffleHog aracını kullanmaktadır. Ayrıca, kalıcılık sağlamak amacıyla workflow dosyası oluşturulmaktadır (shai-hulud-workflow.yml). Saldırıda elde edilen içeriği base64 ile iki kere encode edilmiş şekilde ya webhook.site kullanarak, ya da yeni bir public repo oluşturarak herkesin erişimi olacak şekilde açığa çıkarmaktadır.
Zararlı sürümler kaldırılmıştır ancak önerilen aksiyonlar şu şekildedir:
- Projelerde kullanılan paketlerin kontrol edilmesi ve gerekli upgrade/downgrade işlemlerinin gerçekleştirilmesi
- Giriş bilgilerinin güncellenmesi
- GitHub repolarında shai-hulud terimlerinin aratılması
- Kullanılan tokenlerin yetkilerinin ve kapsamlarının mümkün olduğunca daraltılması
Tedarik zinciri saldırılarının artması, bu konudaki farkındalığın, açık kaynak güvenliğinin ve hızlı aksiyon almanın önemini gösteriyor. Burada bahsedeceğimiz SCA ürünü olan Sonatype IQ Server ile bu tarz durumlarda erken aksiyon almak mümkün olabiliyor. Bunun sebebi arkasındaki güçlü araştırma ekibi ve Secondary Expansion algoritmasıdır. Bu algoritma ile zararlı bir yazılım bir kütüphanede bulunduğunda, diğer açık kaynak kütüphanelerde taratılması yoluyla etkilenmiş paketler işaretleniyor. Sonatype Nexus Repository entegrasyonu ile zararlı yazılımın indirilmesi engelliyor. npm install adımında çalışan Shai-Hulud solucanını ele alırsak, repository entegrasyonuyla zafiyet bulunan kütüphanelerin indirilmesi ve çalıştırılmasının engellenmesi ile giriş bilgilerinin ve gizli repoların güvenliğinin sağlanmasında büyük bir etkisi olabileceğini söyleyebiliriz. Aşağıda Sonatype IQ Server ürünü içerisinde bulunan, farklı zafiyet veritabanları ve Sonatype zafiyet veritabanında arama yapılabilen Vulnerability Lookup bölümünde Shai-Hulud ile ilgili zafiyeti görmektesiniz.

Ek olarak bahsedebileceğimiz bir diğer özellik, ürünün rapor bölümünde zafiyet içeren paket için sunduğu Version Explorer’dır. Bu bölümde upgrade ve gerekirse downgrade önerileri bulunmaktadır. Ayrıca breaking changes adı verilen, versiyon değişikliği sonucunda kodun çalıştırılabilirliğini etkilemesi hakkında da bilgi vermektedir.
