JavaScript'te parantez kullanmadan fonksiyon çağırmanın yeni bir yolu keşfedildi
Öne çıkanlar
- Error nesnesinin prepareStackTrace işlevi Function kurucusu olarak atanabiliyor.
- Array.prototype.toString manipülasyonuyla yığın çıktısı geçerli koda çevriliyor.
- Oluşturulan fonksiyon uniter artı operatörü ve valueOf yöntemiyle tetikleniyor.
Bir güvenlik araştırmacısı, JavaScript ortamında standart parantez karakterlerini kullanmadan rastgele fonksiyonları çalıştırmayı sağlayan yeni bir yöntem yayımladı. Geliştirilen bu teknik, Error nesnesinin çağrı yığını biçimlendirme mekanizması olan prepareStackTrace işlevinin kötüye kullanılmasına dayanıyor.
Yöntemde hata izleme parametrelerinin Function kurucusuyla benzer imza taşımasından yararlanılıyor. Yığındaki kod konumları doğrudan geçerli bir JavaScript kodu oluşturmadığı için Array.prototype.toString işlevi manipüle ediliyor. Araştırmacı, Error.prototype.toString üzerinden nesne prototipindeki message değişkenini kirleterek istenen zararlı kodun metin dizisine dönüştürülmesini sağladı.
Oluşturulan dinamik fonksiyonun parantez olmadan tetiklenmesi için ise JavaScript tip dönüştürme kuralları kullanıldı. Nesnenin valueOf işlevi hazırlanan yığın özelliğine bağlandı ve uniter artı operatörü yardımıyla nesne ilkel tipe zorlanarak kod başarıyla yürütüldü.
Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.