Node Package Manager’da Tehlikeli Paket: os-info-checker-es6
Son zamanlarda, Node Package Manager (NPM) dizininde yer alan ve görünmez Unicode karakterleri kullanarak kötü amaçlı kod barındıran bir paket keşfedildi. Bu paket, "os-info-checker-es6" olarak adlandırılmakta ve sıkça bilgi aracılığıyla indirilmektedir. İncelemelere göre, bu paket yalnızca Mayıs ayı boyunca 1,000’den fazla kez indirilmiştir. Uzmanlar, bu paketin ilk versiyonunun Mart ayında eklendiğini ve başlangıçta masum olduğunu, yalnızca işletim sistemi bilgilerini topladığını belirtmektedir.
Kötü Amaçlı Güncellemeler
"Os-info-checker-es6" paketi, yazarının birkaç gün içinde yaptığı güncellemelerle birlikte zararlı hale gelmiştir. Bu güncellemeler, platforma özel ikili dosyalar ve obfuscate (kodu gizleme) edilen kurulum scriptlerini içermektedir. Mayıs ayının 7’sinde, kötü niyetli bir C2 (komut ve kontrol) mekanizması sağlayan yeni bir versiyon yayınlanmıştır. Bu versiyon, kötü amaçlı yazılımın son payload’unu barındırmaktadır.
Veracode araştırmacıları, o sırada mevcut olan ve "os-info-checker-es6" paketi ile birlikte diğer dört NPM paketine bağımlı olan şu paketleri tespit etmiştir: skip-tot, vue-dev-serverr, vue-dummyy ve vue-bit. Bu paketlerin hepsi, erişilebilirlik ve geliştirici platform mühendislik araçları olarak kendilerini tanıtmaktadır. Ancak, bu paketlerin kötü niyetli yazar tarafından nasıl ve ne şekilde tanıtıldığı belirsizliğini korumaktadır.
Unicode Steganografi ve Kötü Amaçlı İçerik
Kötü amaçlı versiyonunda, saldırganın verileri bir ‘|’ dizisinde sakladığı görülmektedir. Ancak bu dikey çubuğun ardından, invisible Unicode karakterleri dizisi gelmektedir. Bu karakterler, genellikle karmaşık yazılarda belirli glif varyasyonları sağlamak için kullanılan, modifikatör işlevi gören gizli karakterlerdir. Burada, bu karakterler text-based steganography (metin bazlı steganografi) için kullanılmaktadır; yani bilgi, diğer veriler içinde gizlenmektedir.
Veracode, bu diziyi çözerek C2 mekanizması için bir payload bulmuştur. Araştırmalara göre, saldırı Google Takvim kısayolu kullanarak son payload’un barındırıldığı konuma ulaşmayı hedeflemektedir. Takvim bağlantısını alırken, belirli yönlendirmeler sorgulanmakta ve HTTP 200 OK yanıtı elde edilene kadar işlem devam etmektedir.
Bu aşamadan sonra, olayın HTML sayfasından data-base-title niteliği temizlenmekte ve bu nitelik, son payload’a işaret eden base64 kodlu bir URL’yi içermektedir. "Ymmogvj" adındaki bir fonksiyon kullanılarak, URL’nin kodu çözülmekte ve sonrasında kötü niyetli yazılım payload’u elde edilmektedir. Araştırmacılar, yapılan isteğin yanıt gövdesinde stage-2 malware payload‘u beklediğini ve HTTP başlıklarında olası bir şifreleme için bir başlangıç vektörü ve gizli anahtar aradığını ifade etmektedir.
Potansiyel Etkiler ve Sorunlar
Veracode, kötü amaçlı yükün eval() fonksiyonu kullanılarak çalıştırıldığını da tespit etmiştir. Script, sistemin geçici dizininde basit bir kalıcılık mekanizması içermektedir ki bu da aynı anda birden fazla örneğin çalışmasını engellemektedir. Araştırma sırasında, uzmanlar son payload’u elde edememiştir. Bu durum, kampanyanın beklemede olduğunu veya hâlâ erken bir aşamada olabileceğini düşündürmektedir.
Veracode, bulgularını NPM’ye bildirirken, kötü amaçlı paketlerin hala platformda mevcut olması ise büyük bir endişe yaratmaktadır. Geliştiricilerin bu gibi zararlardan korunabilmesi için, NPM üzerinden indirdikleri paketleri titizlikle incelemeleri ve herhangi bir anormallik durumunda tedbir almaları önem arz etmektedir. Bu tür tehditlerin artışı, yazılım geliştirme süreçlerinde dikkatli olunması gerektiğini hatırlatmaktadır.
Sonuç
Bu durum, yazılım dünyasında güvenlik ve bağımlılık yönetimi konularının ne denli önemli olduğunu gözler önüne sermektedir. Geliştiriciler, kullandıkları paketleri ve bunların altında yatan kodları daha dikkatli bir şekilde incelemeli ve kullanıcılarını saldırılardan korumak adına proaktif önlemler almalıdır. Kötü amaçlı içeriklerin yayılmasını engellemek için, yazılım geliştirme topluluğunun birlikte hareket etmesi gerektiği unutulmamalıdır.


