Göremediğiniz için onayladığınız kötü amaçlı yazılım
GlassWorm, yükünü insan kod incelemesinden geçen görünmez Unicode karakterlere gizler; ardından çalışma alanınızda ortalıkta duran kimlik bilgilerini okur. Görünmez bir solucan şifrelemeyi kırmaz. Bir dosyaya ihtiyaç duyar.
İncelemeci pull request'i okudu. Her satır temiz görünüyordu: bir sürüm yükseltmesi, küçük bir yeniden düzenleme, bir belge dokunuşu. Yanlış görünen hiçbir şey yoktu, çünkü yanlış olan kısım ekrana hiç çizilmemişti. Glif taşımayan Unicode karakterlerle yazılmıştı. Gözünüze görünmez, diff görünümüne görünmez, tedarik zinciri güvenliğinin hâlâ dayandığı insan onayına görünmez.
GlassWorm budur. Ekim ayından bu yana Koi Security'deki araştırmacılar, VS Code eklentileri aracılığıyla yayılan ilk kendi kendine yayılan solucanı izliyor ve durmadı [1]. Socket, Open VSX marketplace'inde Ocak sonundan bu yana yetmişten fazla yeni kötü amaçlı eklenti tespit etti [2]. Yükleyici görünmez Unicode'un içine saklanıyor; böylece kod, bakım işi gibi görünerek incelemeden geçip gidiyor.
Kurulumdan sonra yaptıkları sıradan kısım, asıl mesele de bu. Etrafta duranları okuyor. npm token'ları. GitHub kimlik bilgileri. Git yapılandırması. Çalışma alanınızda açıkta duran ortam değişkenleri ve CI gizli bilgileri. Ardından çalınan bu kimlik bilgilerini, adınızla daha fazla zehirli paket yayımlamak için kullanıyor; bir solucanın solucana dönüşmesi de böyle olur. Komuta ve kontrol Solana işlemleri üzerinden yürüyor, dolayısıyla el konacak bir sunucu yok [3].
Konuyu yeniden çerçeveleyelim. Kimse @code'u hacklemedi. Open VSX klasik anlamda ihlal edilmedi. Eklenti modeli tam da tasarlandığı gibi çalıştı: siz bir yardımcı kuruyorsunuz ve o, sizin izinlerinizle, açık projenizin içinde, gizli bilgilerinizin yanında çalışıyor. Bu model, eklenti yazarının güvenmeniz gereken tek taraf olduğu bir dünya için tasarlanmıştı. GlassWorm, güvenilen bir yazarın hesabını bir teslimat kamyonuna dönüştürüyor ve yükü göremediğiniz karakterlere saklıyor. Araç başarısız olmadı. Tehdit modeli herkesin altında bir anda kaydı.
Bu da sizi kendi makinenizle ilgili rahatsız edici bir soruya götürüyor. Güvendiğiniz bir eklenti projenizi açtığında, onun alabileceği ne var?
Çoğu geliştirici için cevap: her şey. Bir nokta dosyasında uzun ömürlü bir npm token'ı. Yardımsever bir kurulum rehberinin bir kez yapıştırmanızı ve unutmanızı söylediği kişisel erişim token'ı. Makinedeki her sürecin okuyabildiği bir env dosyasında duran gizli bilgiler. Bu kimlik bilgileri, kodun tam çalıştığı yerde, beklemede duruyor; yerel erişimi olan herhangi bir şeyi bekliyor. Editörünüzdeki görünmez bir solucanın şifrelemeyi kırması gerekmiyor. Bir dosyaya ihtiyacı var.
Clavitor zıt bir varsayımla başlar. Bir kimlik bilgisi, ihtiyaç duyulduğu anda aracılık edilir, yalnızca ait olduğu işe kapsamlanır ve süresi dolar. Sonradan bulunmak üzere geliştirme ortamınıza asla yazılmaz. Böylece düşmanca kod, dinlenen anahtarlar için çalışma alanını taradığında, orada geçerli bir npm token'ı, kalıcı bir GitHub PAT'i, kullanıldığı saniyeden uzun yaşayan hiçbir şey yoktur. Solucan çekmeceyi açar ve çekmece boştur.
Dürüst sınırları: Kullanımda olan bir kimlik bilgisi, kullanıldığı sürece hâlâ canlıdır. Oturumunuz çalışıyorsa ve düşmanca kod o oturumu paylaşıyorsa, tam o anda canlı olan şeyi, o kimlik bilgisinin kısa penceresi ve dar kapsamı içinde kullanabilir. Geçici ve kapsamlı verim, patlama yarıçapını ve süreyi daraltır. Saldırgana teslim ettiğiniz bir makineyi güvenli yapmaz. Hiçbir şey yapmaz. Ancak kullanılırken tek bir kapsamlı kimlik bilgisini yakalayan bir saldırganla, kalıcı anahtarlarla dolu bir dosyayı kopyalayıp sizi bir yıl boyunca elinde tutan bir saldırgan arasında geniş bir fark vardır.
Bir kimlik bilgisi sisteminin asla yapmaması gereken şeylerin kısa listesini yazdık. Listenin başında: gizli bilgileri kodun çalıştığı yerde bırakmayın. Buradan okuyun
Clavitor (@clavitorai), yapay zekâ ajanları için ve onlara karşı geliştirilmiş kimlik bilgisi kasasıdır. clavitor.ai
Kaynaklar
[1] Koi Security — "GlassWorm: The First Self-Propagating Worm Using Invisible Code Hits the Open VSX Marketplace" (araştırma firması; doğrulanmış X hesabı yok)
[2] Socket, @TheHackersNews aracılığıyla — "GlassWorm Supply-Chain Attack Abuses 72 Open VSX Extensions to Target Developers" (@SocketSecurity)
[3] @SecurityWeek — "Supply Chain Attack Targets VS Code Extensions With ‘GlassWorm’ Malware"