JavaScript Kütüphanelerinde Tedarik Zinciri Saldırısı
Bu hafta, popüler JavaScript kütüphanelerinin hedef alındığı bir saldırı gerçekleşti. Bu saldırıda, kütüphaneler malware dağıtıcılarına dönüştürüldü. Saldırı, hedeflenmiş phishing (oltalama) ve kimlik bilgisi çalınması yoluyla gerçekleştirildi.
npm paketi eslint-config-prettier, haftada 30 milyon kez indirilmekteydi ve bu paket, bakımcısının bir oltalama saldırısına kurban gitmesi sonucunda ele geçirildi. Aynı bakımcıdan olan diğer bir paket eslint-plugin-prettier de hedef alındı.
Saldırganlar çalınan kimlik bilgilerini kullanarak, kötü amaçlı kod içeren yetkisiz paket sürümlerini yayınlamak için bu paketi kullandılar. Bu sürümler, Windows makinelerini enfekte etmek için tasarlandı.
Bakımsız Oltalama, Kütüphanelerin Ele Geçirilmesi
18 Temmuz tarihinde, geliştiriciler, eslint-config-prettier paketinin 8.10.1, 9.1.1, 10.1.6 ve 10.1.7 sürümleri kurulduğunda sıradışı davranışlar fark etmeye başladılar. Bu sürümler npm kayıt defterine eklendi fakat GitHub deposunda bu sürümlerdeki değişiklikleri doğrulayan güncellemeler yoktu. Bu durum, açık kaynak topluluğunda hemen şüphe uyandırdı.
eslint-config-prettier ve eslint-plugin-prettier gibi kütüphaneler, geliştiricilerin Proje kodlama kurallarını tutarlı bir şekilde uygulamalarına yardımcı olur, bu sayede çelişkili veya gereksiz linting süreçlerinden kaçınılır.
Geliştirici Dasa Paddock başlangıçta, projenin GitHub deposunda bir sorun bildirimi oluşturarak durumu ortaya koydu ve topluluk üyeleri hızlıca yanıt verdiler. Kısa süre içerisinde paketin bakımcısı JounQin, kendisinin bir oltalama saldırısına maruz kaldığını onayladı. Bu saldırı, yetkisiz bir tarafın onun npm token’ine erişim sağlamasına neden oldu ve böylece ele geçirdiği sürümleri yayınlayabildi.
JounQin, “Bu oltalama e-postası,” diyerek aldığı, npmjs.com web sitesinden geliyormuş gibi görünen bir “Hesabınızı doğrulayın” e-posta ekran görüntüsünü paylaştı. Ancak, gerçek bağlantı kötü niyetli bir npnjs[.]com alanına yönlendirmekteydi.
“Bu npm token’ını sildim ve en kısa zamanda yeni bir sürüm yayınlayacağım,” dedi JounQin. “Hepinize teşekkür ederim ve dikkatsizliğim için özür dilerim,” açıklamasını ekledi.
Kötü Amaçlı Postinstall Script’i Çalıştırıyor
Kötü niyetli sürümlerde, npm postinstall script’i olan install.js, paket kurulduğunda hemen çalışacak şekilde yapılandırılmıştır.
Bu install.js, adından yola çıkarak disk alanı izleme ile ilgili olduğu düşünülen ancak bunun tam tersi olan logDiskSpace() adında şüpheli bir fonksiyonu içermektedir. Bu fonksiyon, paketle birlikte getirilen node-gyp.dll dosyasını çalıştırmaya çalışmaktadır ve bu işlem için rundll32 Windows sistem sürecini kullanmaktadır.
Virustotal’da bu DLL’nin tanınan bir trojan olduğu belirtilmektedir; şu an için 19/72 tespit skoru bulunmaktadır ki bu da çoğu antivirüs motoru tarafından henüz tespit edilmediği anlamına gelmektedir.
Ne Yapmalısınız?
eslint-config-prettier sürümlerinden 8.10.1, 9.1.1, 10.1.6 ve 10.1.7’yi kurmayın. eslint-plugin-prettier için etkilenen sürümler ise 4.2.2 ve 4.2.3’tür.
package-lock.json veya yarn.lock dosyalarınızı bu sürümlere referans kontrolü yaparak gözden geçirin.
18 Temmuz tarihinden sonra dağıtım yaptıysanız, CI logları ve çalışma ortamlarınızı özellikle Windows makinelerinde herhangi bir tehlike belirtisi arayarak kontrol edin.
Etkilenen dağıtım süreçlerinde açığa çıkmış olan herhangi bir gizli bilgiyi güncellemeyi düşünün.
Bakımcı ayrıca etkilenen sürümleri npmjs kayıt defterinde “deprecated” (kullanımdan kaldırılmış) olarak işaretledi. Ayrıca, bir GitHub kullanıcısı, bakımcı tarafından yayınlanan diğer paketlerin de kontrol edilmesi gerekliliğinin altını çizdi.
Bu tür bir ihlal, son zamanlarda popüler kütüphanelerin geliştiricilerine yönelik artan sosyal mühendislik saldırıları kapsamındadır. Mart ayında, ondan fazla yaygın npm kütüphanesi ele geçirilerek bilgi çalıcılarına dönüştürüldü. Geçtiğimiz ay ise, 17 adet Gluestack paketi, bir Remote Access Trojan (RAT) dağıtmak amacıyla ele geçirildi.
Açık kaynak ekosisteminin büyük ölçüde güvene dayandığı düşünüldüğünde, bu tür olaylar, tedarik zinciri güvenliğinin kırılganlığını ve bakımcı güvenliğinin önemini vurgular. Yanlış bir tıklama, milyonlarca kullanıcının riske girmesine neden olabilir.


