Sentinel Value sızıntısı ile Chrome v8 HardenProtect mekanizmasını geçişini araştırma
Giriş
Sentinel değeri, algoritmalardaki özel bir değerdir ve genellikle döngü veya özyinelemeli algoritmaların sonlandırma koşulu olarak kullanılır. Chrome kaynak kodunda bu özel değerin yaygın bir şekilde kullanıldığı görülmektedir. Son zamanlarda yapılan bir araştırma, TheHole nesnesinin sızdırılması yoluyla bazı Chrome sandbox'larında rastgele kod yürütme açıklarının gerçekleştirilebileceğini göstermiştir. Bu makalede başka bir ilgili nesne - Uninitialized Oddball - ve bunun Chrome'un güvenlik mekanizmalarını aşmak için nasıl kullanıldığı incelenecektir.
Dikkate değer olan, mevcut en son V8 motorunun bu sorunu hâlâ barındırdığıdır. Bu yöntem oldukça genel bir niteliğe sahiptir ve birden fazla tarihi açığın istismar zorluğunu etkileyebilir.
V8'de Sentinel Değeri
V8 kaynak kodunda birçok yerel nesne tanımlanmıştır, bunlar bellekte yan yana dizilir. Eğer bu nesneler yanlışlıkla JavaScript ortamına ifşa edilirse, kum sandbox'tan kaçışa neden olabilir. Önceki metinde bahsedilen TheHole nesnesinin sızıntısı tipik bir örnektir.
Bunu doğrulamak için V8'in yerel fonksiyonunu değiştirebiliriz. Örneğin, %TheHole() fonksiyonunun ofsetini değiştirerek Uninitialized Oddball nesnesini döndürmesini sağlayabiliriz.
HardenType korumasını atlatma
Uninitialized Oddball nesnelerini kullanarak göreceli olarak herhangi bir bellek okuma gerçekleştirilebilir. Anahtar, optimize edilmiş JavaScript kodunun nesne özelliklerini doğru bir şekilde kontrol etmemesi, doğrudan JavaScript anlamına göre kaydırma hesaplaması yapması ve dizi elemanlarına erişmesidir; bu da tür karışıklığına yol açar.
Önerilen düzeltme, fonksiyonun dizi elemanlarını döndürürken dizi haritasının kontrolünü eklemek ve doğrudan offset hesaplamaktan kaçınmaktır.
PatchGap Risk Uyarısı
Analizler, bazı yazılımların PatchGap sorununa sahip olabileceğini ve bu açığın henüz kapatılmadığını ortaya koydu. Skype örneğinde olduğu gibi, dosyası büyük olduğu ve doğrudan belleğe yüklendiği için, saldırganlar sabit adresler üzerinden okuma-yazma işlemleri gerçekleştirerek bu açığı kullanabilir.
Bu yeni geçiş yönteminin açıklanması, bazı geçmiş güvenlik açıklarının istismarını zorlaştırabilir. İlgili tarafların etkilenen yazılımları ve güvenlik açıklarını yeniden değerlendirmeleri önerilir.
Özet
Bu makale, Uninitialized Oddball gibi Sentinel değerlerinin sızdırılması yoluyla rastgele okuma gerçekleştirme olasılığını kısaca tartışmaktadır. V8'de başka Sentinel değerleri de bulunmaktadır ve bunlar da benzer güvenlik açıkları içerebilir. Bu bize şunu hatırlatıyor:
Diğer Başlatılmamış Oddball sızıntıları V8 sandbox'un kaçmasına neden olabilir.
Bu tür sorunların güvenlik konumu hala belirsiz.
Sentinel değerini bir değişken olarak fuzzer testine eklemeyi düşünebilirsiniz.
Her halükarda, bu tür sorunlar saldırganların tam istismar döngüsünü büyük ölçüde kısaltabilir, bu da yüksek önem taşır.
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
Chrome V8 motorunda Sentinel Value sızıntı açığı var, bu da sandbox'tan kaçış sağlıyor.
Sentinel Value sızıntısı ile Chrome v8 HardenProtect mekanizmasını geçişini araştırma
Giriş
Sentinel değeri, algoritmalardaki özel bir değerdir ve genellikle döngü veya özyinelemeli algoritmaların sonlandırma koşulu olarak kullanılır. Chrome kaynak kodunda bu özel değerin yaygın bir şekilde kullanıldığı görülmektedir. Son zamanlarda yapılan bir araştırma, TheHole nesnesinin sızdırılması yoluyla bazı Chrome sandbox'larında rastgele kod yürütme açıklarının gerçekleştirilebileceğini göstermiştir. Bu makalede başka bir ilgili nesne - Uninitialized Oddball - ve bunun Chrome'un güvenlik mekanizmalarını aşmak için nasıl kullanıldığı incelenecektir.
Dikkate değer olan, mevcut en son V8 motorunun bu sorunu hâlâ barındırdığıdır. Bu yöntem oldukça genel bir niteliğe sahiptir ve birden fazla tarihi açığın istismar zorluğunu etkileyebilir.
V8'de Sentinel Değeri
V8 kaynak kodunda birçok yerel nesne tanımlanmıştır, bunlar bellekte yan yana dizilir. Eğer bu nesneler yanlışlıkla JavaScript ortamına ifşa edilirse, kum sandbox'tan kaçışa neden olabilir. Önceki metinde bahsedilen TheHole nesnesinin sızıntısı tipik bir örnektir.
Bunu doğrulamak için V8'in yerel fonksiyonunu değiştirebiliriz. Örneğin, %TheHole() fonksiyonunun ofsetini değiştirerek Uninitialized Oddball nesnesini döndürmesini sağlayabiliriz.
HardenType korumasını atlatma
Uninitialized Oddball nesnelerini kullanarak göreceli olarak herhangi bir bellek okuma gerçekleştirilebilir. Anahtar, optimize edilmiş JavaScript kodunun nesne özelliklerini doğru bir şekilde kontrol etmemesi, doğrudan JavaScript anlamına göre kaydırma hesaplaması yapması ve dizi elemanlarına erişmesidir; bu da tür karışıklığına yol açar.
Önerilen düzeltme, fonksiyonun dizi elemanlarını döndürürken dizi haritasının kontrolünü eklemek ve doğrudan offset hesaplamaktan kaçınmaktır.
PatchGap Risk Uyarısı
Analizler, bazı yazılımların PatchGap sorununa sahip olabileceğini ve bu açığın henüz kapatılmadığını ortaya koydu. Skype örneğinde olduğu gibi, dosyası büyük olduğu ve doğrudan belleğe yüklendiği için, saldırganlar sabit adresler üzerinden okuma-yazma işlemleri gerçekleştirerek bu açığı kullanabilir.
Bu yeni geçiş yönteminin açıklanması, bazı geçmiş güvenlik açıklarının istismarını zorlaştırabilir. İlgili tarafların etkilenen yazılımları ve güvenlik açıklarını yeniden değerlendirmeleri önerilir.
Özet
Bu makale, Uninitialized Oddball gibi Sentinel değerlerinin sızdırılması yoluyla rastgele okuma gerçekleştirme olasılığını kısaca tartışmaktadır. V8'de başka Sentinel değerleri de bulunmaktadır ve bunlar da benzer güvenlik açıkları içerebilir. Bu bize şunu hatırlatıyor:
Her halükarda, bu tür sorunlar saldırganların tam istismar döngüsünü büyük ölçüde kısaltabilir, bu da yüksek önem taşır.