Japon araştırmacılardan oluşan bir grup, gelecek hafta düzenlenecek Black Hat USA konferansında, saldırganların, VBScript ve Python gibi birçok programlama dili tarafından kullanılan yazılım yorumlayıcıları tarafından bellekte depolanan makine koduna komutlar ekleyerek kötü amaçlı kod yürütme girişimlerini gizleyebileceklerini gösterecek.
Yorumlayıcılar insan tarafından okunabilen yazılım kodunu alır ve her satırı bayt koduna çevirir – altta yatan, genellikle sanal, makine tarafından anlaşılan ayrıntılı programlama talimatları. Araştırma ekibi, yürütmeden önce bellekte tutulan bayt koduna kötü amaçlı talimatları başarıyla yerleştirdi ve çoğu güvenlik yazılımı bayt kodunu taramadığı için, değişiklikleri tespit edilemedi.
Bu teknik, saldırganların kötü amaçlı faaliyetlerini çoğu uç nokta güvenlik yazılımından gizlemelerine olanak tanıyabilir. NTT Security Holdings Corp. ve Tokyo Üniversitesi’nden araştırmacılar, bu yeteneği Black Hat’te sergileyecekler VBScript yorumlayıcısını kullanarakdiyor NTT Security’den araştırma bilimcisi Toshinori Usui. Araştırmacılar, tekniğin hem Python hem de Lua yorumlayıcılarının bellek içi süreçlerine kötü amaçlı kod eklemek için de işe yaradığını zaten doğruladılar.
“Kötü amaçlı yazılımlar genellikle kötü amaçlı kodu iyi huylu süreçlere enjekte ederek davranışlarını gizler, ancak mevcut enjeksiyon türü saldırıların karakteristik davranışları vardır… güvenlik ürünleri tarafından kolayca tespit edilir,” diyor Usui. “Yorumlayıcı, uzak bir süreç tarafından üzerine yazılmasını umursamaz, bu nedenle oluşturulan bayt kodunu kötü amaçlı kodumuzla kolayca değiştirebiliriz — istismar ettiğimiz özellik budur.”
Bayt kodu saldırıları yeni olmayabilir, ancak nispeten yenidir. 2018’de, Irvine’deki Kaliforniya Üniversitesi’nden bir grup araştırmacı bir makale yayınladı, “Baytkod Bozulma Saldırıları Gerçektir — Ve Onlara Karşı Nasıl Savunma Yapılır” bytecode saldırıları ve savunmaları tanıtıyor. Geçtiğimiz yıl, Python Paket Endeksi (PyPI) yöneticileri, ilk tespitten kaçan fshec2 olarak bilinen kötü amaçlı bir paketi kaldırdı çünkü tüm kötü amaçlı kodu bayt kodu olarak derlendiPython, bayt kodunu Python yorumlayıcısı tarafından yürütülebilen PYC dosyalarına derler.
“Bu, Python bayt kodu (PYC) dosyalarının doğrudan yürütülebilmesinden faydalanan ilk tedarik zinciri saldırısı olabilir ve Python Paket Endeksi’ne kötü amaçlı gönderimlerde yaşanan artışın ortasında gerçekleşiyor,” diyor ReversingLabs’de tersine mühendis olan Karlo Zanki. Haziran 2023’te olayla ilgili yapılan bir analizde şöyle denildi:“Eğer öyleyse, bu durum ileride tedarik zinciri için başka bir risk daha doğurur, çünkü bu tür saldırıların çoğu güvenlik aracı tarafından fark edilmeme olasılığı yüksektir; zira bu araçlar yalnızca Python kaynak kodu (PY) dosyalarını tararlar.”
Önceden Derlenmiş Kötü Amaçlı Yazılımların Ötesine Geçmek
İlk bir ihlalden sonra saldırganların hedeflenen sistem üzerindeki kontrollerini genişletmek için birkaç seçeneği vardır: Keşif yapabilir, kötü amaçlı yazılım kullanarak sistemi daha fazla ihlal etmeye çalışabilir veya sistemde zaten var olan araçları çalıştırabilirler; buna “topraktan geçinme” stratejisi denir.
NTT araştırmacılarının bayt kodu saldırı tekniklerinin varyasyonu esasen son kategoriye girer. Önceden derlenmiş bayt kodu dosyaları kullanmak yerine, saldırıları — Bytecode Jiu-Jitsu olarak adlandırılır — çalışan bir yorumlayıcının bellek alanına kötü amaçlı bayt kodu eklemeyi içerir. Çoğu güvenlik aracı bellekteki bayt koduna bakmadığı için, saldırı kötü amaçlı komutları incelemeden gizleyebilir.
Usui, bu yaklaşımın saldırganın şüpheli API’leri çağırarak iş parçacıkları oluşturma, yürütülebilir bellek ayırma ve talimat işaretçilerini değiştirme gibi daha bariz kötü amaçlı adımları atlamasına olanak sağladığını söylüyor.
“Yerel kodda CPU tarafından doğrudan yürütülen talimatlar bulunurken, bayt kodu yalnızca CPU’ya giden veridir ve yorumlayıcı tarafından yorumlanır ve yürütülür,” diyor. “Bu nedenle, yerel kodun aksine, bayt kodu yürütme ayrıcalığı gerektirmez, [and our technique] “yürütme ayrıcalığına sahip bir bellek bölgesi hazırlamaya gerek yoktur.”
Daha İyi Tercüman Savunmaları
Yorumlayıcı geliştiricileri, güvenlik araçları geliştiricileri ve işletim sistemi mimarlarının hepsi sorun üzerinde bir miktar etkiye sahip olabilir. Bayt kodunu hedef alan saldırılar yorumlayıcılardaki güvenlik açıklarını değil, kodu yürütme biçimlerini istismar etse de, UC Irvine makalesine göre işaretçi toplam kontrolleri gibi belirli güvenlik değişiklikleri riski azaltabilir.
NTT Güvenlik araştırmacıları, toplam savunmalarının tekniklerine karşı etkili olma ihtimalinin düşük olduğunu belirtti ve geliştiricilerin riski ortadan kaldırmak için yazma korumalarını zorunlu kılmalarını önerdi. Usui, “Nihai karşı önlem, bellek yazmayı yorumlayıcıyla sınırlamaktır” diyor.
Yeni bir saldırı tekniğini sunmanın amacının güvenlik araştırmacılarına ve savunucularına neyin mümkün olabileceğini göstermek olduğunu ve saldırganların taktiklerini bilgilendirmek olmadığını vurguluyor. “Amacımız savunma taktiklerini kötüye kullanmak değil, nihayetinde dünya çapındaki güvenlik araştırmacıları için bir alarm zili olmaktır” diyor.