Araştırmacılar, geleneksel savunma mekanizmalarını aşan, görünmez kod içeren kötü amaçlı paketlerle depoları dolduran bir tedarik zinciri saldırısı keşfettiklerini duyurdu. Bu yeni yöntem, güvenlik duvarlarını şaşırtıyor.
Güvenlik firması Aikido Security tarafından yapılan açıklamaya göre, 3 - 9 Mart tarihleri arasında GitHub'a 151 adet kötü amaçlı paket yüklendiği tespit edildi. Bu tür tedarik zinciri saldırıları, uzun yıllardır yaygın olarak kullanılıyor. Saldırganlar genellikle, geliştiricileri kandırmak amacıyla popüler kod kütüphanelerine benzeyen isim ve kodlara sahip kötü amaçlı paketler yüklüyor. Bu paketler bazen binlerce kez indirilebiliyor.
Savunmalar Boşa Çıkıyor, Kod Çözücüler Tehlikeyi Görüyor
Aikido'nun bu ay tespit ettiği paketler, daha gelişmiş bir teknik kullanıyor: Neredeyse tüm editörler, terminal ve kod inceleme araçlarında görünmeyen kod kullanımı. Kodun büyük bir kısmı normal ve okunabilir şekilde görünürken, zararlı fonksiyonlar ve yükler, insan gözüyle görülemeyen Unicode karakterlerle gizleniyor. Aikido'nun geçen yıl ilk kez fark ettiği bu taktik, manuel kod incelemelerini ve geleneksel savunmaları neredeyse işe yaramaz hale getiriyor. Saldırıların hedef aldığı diğer depolar arasında NPM ve Open VSX de bulunuyor.
Kötü amaçlı paketler, görünür kısımlarının kalitesi sayesinde tespit edilmesi daha zor hale geliyor.
Aikido araştırmacıları, "Kötü amaçlı eklemeler bariz şüpheli gönderilerde yer almıyor. Çevresindeki değişiklikler gerçekçi: dokümantasyon düzeltmeleri, sürüm yükseltmeleri, küçük yeniden düzenlemeler ve hedef projeyle üslup olarak uyumlu hata düzeltmeleri." ifadelerini kullandı.
Araştırmacılar, saldırı grubuna verdikleri isim olan Glassworm'un, bu kadar ikna edici ve meşru görünen paketleri oluşturmak için büyük dil modellerini (LLM) kullandığından şüpheleniyor. "Şu anda gördüğümüz ölçekte, farklı kod tabanlarında 151'den fazla özel kod değişikliğinin manuel olarak hazırlanması mümkün değil," diye açıklıyorlar. Aynı grubu takip eden bir başka güvenlik firması Koi de, grubun yapay zeka kullandığından şüphelendiğini belirtti.
Görünmez kod, Unicode spesifikasyonunda emojiler, bayraklar ve diğer semboller için ayrılmış özel karakterlere ayrılan bir aralık olan "Public Use Areas" (Herkese Açık Kullanım Alanları) ile oluşturuluyor. Bilgisayarlar tarafından işlendiğinde her harfi temsil eden bu kod noktaları, insanlar için tamamen görünmezdir. Kodu inceleyenler veya statik analiz araçlarını kullananlar sadece boşlukları veya boş satırları görür. Ancak JavaScript yorumlayıcısı için bu kod noktaları çalıştırılabilir koda dönüşüyor.
Bu görünmez Unicode karakterleri onlarca yıl önce geliştirilmiş ve büyük ölçüde unutulmuştu. Ancak 2024 itibarıyla hackerlar, yapay zeka motorlarına verilen kötü amaçlı komutları gizlemek için bu karakterleri kullanmaya başladı. Metin insanlar ve metin tarayıcıları için görünmez olsa da, LLM'ler bunları okumakta ve ilettikleri kötü amaçlı talimatları takip etmekte zorlanmadı. Yapay zeka motorları daha sonra bu karakterlerin kullanımını kısıtlamak için güvenlik önlemleri geliştirse de, bu tür savunmalar zaman zaman aşılabiliyor.
O zamandan beri Unicode tekniği, daha geleneksel kötü amaçlı yazılım saldırılarında da kullanılıyor. Aikido'nun analiz ettiği paketlerden birinde, saldırganlar kötü amaçlı bir yükü görünmez karakterlerle kodlamıştı. Kodun incelenmesinde hiçbir şey görünmüyordu. Ancak JavaScript çalışma zamanında, küçük bir kod çözücü gerçek baytları çıkarıp eval() fonksiyonuna iletiyor.
Aikido, "s() fonksiyonuna geçirilen ters tırnak dizesi her görüntüleyicide boş görünüyor, ancak çözüldüğünde tam bir kötü amaçlı yük oluşturan görünmez karakterlerle dolu. Geçmiş olaylarda, çözülen yük, Solana'yı bir teslimat kanalı olarak kullanarak belirteçleri, kimlik bilgilerini ve sırları çalabilen ikinci aşama bir komut dosyası çekip çalıştırıyordu." açıklamasını yaptı.
GitHub'da yeni paketleri bulduktan sonra, araştırmacılar benzerlerini npm ve VS Code pazar yerlerinde de buldu. Aikido, tespit edilen 151 paketin, kampanya boyunca yayılan daha büyük bir parçası olduğunu, çünkü birçoğunun yüklendikten sonra silindiğini belirtti.
Tedarik zinciri saldırılarının bu belasından korunmanın en iyi yolu, paketleri ve bağımlılıklarını projelere dahil etmeden önce dikkatlice incelemektir. Bu, paket isimlerini incelemeyi ve yazım hatalarını aramayı içerir. LLM kullanımına ilişkin şüpheler doğruysa, özellikle görünmez Unicode karakterleri kötü amaçlı yükleri kodluyorsa, kötü amaçlı paketler giderek daha meşru görünebilir.