Happy DOM Kitaplığında Kritik CVE-2025-61927 VM Bağlamından Kaçış


Esas olarak sunucu tarafı oluşturma ve test çerçeveleri için kullanılan, yaygın olarak kullanılan bir JavaScript kitaplığı olan Happy DOM’da kritik bir güvenlik açığı belirlendi. CVE-2025-61927 olarak kataloglanan güvenlik açığı, saldırganların kütüphanenin sanal makine (VM) bağlamından kaçmasına olanak tanıyor ve bu da güvenlik açığı bulunan sistemlerde olası uzaktan kod yürütülmesine yol açıyor. Bu kusur, Happy DOM’a bağlı milyonlarca uygulamayı tehdit ediyor.

Happy DOM’daki VM Bağlamından Kaçış Güvenlik Açığı’nı (CVE-2025-61927) Anlama

Bu güvenlik açığının temelinde Node.js VM bağlamının Happy DOM 19 ve önceki sürümlerinde uygunsuz şekilde yalıtılması yatmaktadır. VM bağlamının güvenli bir sanal alan görevi görmesi ve güvenilmeyen kodun ana bilgisayar sisteminden ödün vermeden yürütülmesine olanak sağlaması amaçlanmaktadır. Ancak bu izolasyon kusurludur ve kötü amaçlı JavaScript kodunun sanal alandan kaçmasına ve daha üst düzey sistem işlevlerine erişmesine olanak tanır.

Güvenlik araştırmacısı Mas0nShi, güvenlik açığının JavaScript yapıcılarının miras zincirinden yararlandığını ortaya çıkardı. Saldırganlar, bağlamın nesnelerinden yapıcı zincirinde yukarıya doğru çıkarak küresel boyuta ulaşabilirler. İşlev Rastgele kod dizelerinin değerlendirilmesine izin veren yapıcı. Bu, sınırlamayı etkili bir şekilde ortadan kaldırır ve VM bağlam korumalarını atlayarak işlem düzeyinde kod yürütülmesine olanak tanır.

Saldırı, kullanılan modül sistemine bağlı olarak farklılık gösterir: CommonJS veya ECMAScript modülleri (ESM). Saldırganlar CommonJS’ye erişebildiği için CommonJS çalıştıran sistemler özellikle açığa çıkar. gerekmek() saldırı yüzeyini artırarak ek modülleri içe aktarmalarına ve yürütmelerine olanak tanır. Buna karşılık, ESM ortamları içe aktarma veya gerektirme erişimini sınırlayarak bazı yetenekleri azaltır ancak yine de süreç düzeyinde bilgi alımına izin verir.

Kapsam ve Etki

Happy DOM, kullanıcı tarafından oluşturulan veya güvenilmeyen HTML içeriğini işleyen sunucu tarafı oluşturma (SSR) ve test ortamları için yaygın olarak benimsenmiştir. Kusur, JavaScript uygulamalarını oluşturmak ve test etmek için kitaplığa güvenen yaklaşık 2,7 milyon kullanıcıyı etkiliyor. En fazla risk altındaki uygulamalar, kullanıcı tarafından kontrol edilen içeriği dinamik olarak işleyen ve saldırganlara kötü amaçlı komut dosyaları yerleştirme ve yürütme fırsatı yaratan uygulamalardır.

Tipik saldırı senaryoları şunları içerir:

  • Veri Sızdırması: Saldırganlar hassas ortam değişkenlerine, yapılandırma dosyalarına veya gizli belirteçlere erişim sağlayabilir.
  • Yanal Hareket: Kötü niyetli aktörler, sistemler arasında yanal olarak hareket etmek için ortamdaki ağ erişiminden yararlanabilir, ancak Happy DOM, CORS gibi bazı ağ korumaları uygulamaktadır.
  • Kod Yürütme: Saldırganlar alt süreçlerden yararlanarak rasgele komutlar çalıştırabilir.
  • Kalıcılık: Dosya sistemi erişimi, saldırganların ana bilgisayardaki kötü amaçlı yükleri değiştirmesine veya kalıcı hale getirmesine olanak tanıyabilir.

Teknik Detaylar ve Çoğaltma

CommonJS kurulumlarında saldırganlar gerekmek() kaçış yoluyla işlev görür ve aşağıdaki gibi çekirdek Node.js modüllerinin içe aktarılmasına izin verir: fs dosyaları okumak için:

const { Pencere } = require(‘mutlu-dom’);
const pencere = yeni Pencere({ konsol });

window.document.write(`