isolated-vm açığı, sandbox’tan ana sisteme kaçış riski doğurdu

Anasayfa » isolated-vm açığı, sandbox’tan ana sisteme kaçış riski doğurdu
isolated-vm açığı, sandbox’tan ana sisteme kaçış riski doğurdu

Node.js dünyasında yaygın kullanılan açık kaynak sandbox kütüphanesi isolated-vm’de, sanal ortamdan ana sürece sıçramaya izin verebilen bir güvenlik açığı bulundu. Açık, sandbox içindeki JavaScript kodunun host uygulamada bellek bozmasına ve uygun koşullarda uzaktan kod çalıştırmaya kadar uzanan bir zincir oluşturmasına yol açabiliyor.

GitHub’da 2.900’den fazla yıldız ve 190 fork’a sahip proje, özellikle untrusted JavaScript çalıştıran geliştiriciler tarafından tercih ediliyor. npm paketinin son bir haftada yaklaşık 1 milyon indirme alması, açığın etkilediği ekosistemin büyüklüğünü de ortaya koyuyor.

GHSA-864f-rcv7-6rh4 kimliğiyle duyurulan sorun henüz bir CVE numarası almadı. Güvenlik açığı, 7.0.0 ve önceki tüm sürümleri etkiliyor. Giderilen sürümler 6.2.0 ve 7.0.1 olarak bu ayın başında yayımlandı. Kayıt için NVD bağlantısı henüz açılmadı; CVE atanırsa ilgili sayfa ayrıca izlenebilecek.

isolated-vm, Google’ın V8 motorunun ayrı bir örneği olan V8 Isolate içinde güvenilmeyen JavaScript’i çalıştırıyor. Her isolate kendi heap alanını ve durumunu ayrı tuttuğu için, ana Node.js iş parçacığındaki JavaScript nesneleri doğrudan worker isolate içine aktarılamıyor. Kütüphane bu aktarım için ExternalCopy adlı bir sınıf kullanıyor; amaç, nesneleri host isolate dışına güvenli biçimde serileştirip konuk isolate içinde yeniden açmak.

Endor Labs araştırmacılarının incelediği açık tam da bu bileşende yer alıyor. Cristian-Alexandru Staicu, The Hacker News ile paylaşılan teknik notta, ExternalCopy’nin transferList seçeneğini işlerken bir type confusion oluştuğunu ve bunun sandbox içindeki kodun host süreçte bellek bozulmasına neden olabildiğini anlattı. Staicu, yalnızca tek bir ivm.Reference ile başladıklarını, normalde bir sandbox’a yetki vermenin standart yolu olan bu mekanizma üzerinden hatayı kontrollü bir adres çökmesinden host’un kontrol akışını ele geçirmeye kadar taşıdıklarını söyledi.

Başka bir deyişle, saldırı başarıya ulaşırsa sonuç yalnızca bir çökme olmuyor. Host süreç segmentation fault ile kapanabiliyor, yani SIGSEGV oluşuyor. Daha ileri senaryoda ise guest-to-host sandbox escape gerçekleşiyor ve isolated-vm’in kurmak istediği güven sınırı ortadan kalkıyor.

Proje bakımcısı Marcel Laverdet de duyurusunda en az görülen etkinin, herhangi bir guest’in kendisine ivm.Reference verildiği durumda tetikleyebileceği güvenilir bir kontrollü adres çökmesi olduğunu belirtti. Laverdet, en yüksek gösterilmiş etkinin ise host sürecin kontrol akışının ele geçirilmesi, başka bir deyişle host tarafında potansiyel uzaktan kod çalıştırma olduğunu vurguladı.

Staicu, yayımladığı teknik açıklamada temel izolasyon ilkesinin kırılmadığını özellikle ayırdı. Ona göre V8’in Isolate sınırı yerinde kaldı; sorun, bu sınırın ötesinde değerleri taşıyan C++ bağ katmanında ortaya çıktı. Sağlam bir yapı taşı, etrafına örülen binding kodu tarafından zayıflatıldı.

Açığın ayrıntılarına dair tam istismar bilgileri, kötüye kullanımı engellemek için paylaşılmadı. isolated-vm kullanan geliştiricilere en güncel sürüme geçmeleri çağrısı yapılıyor. Proje tarafı, güncellenmemiş kurulumların sandbox kaçışı ve ana süreçte bellek bozulması riskini taşıdığını net biçimde ortaya koyuyor.