Chrome V8 motorunda Sentinel Value sızıntısının neden olduğu güvenlik açıklarını araştırma
Sentinel değeri, algoritmalarda özel bir işaret olarak kullanılan bir değerdir, genellikle döngülerde veya özyinelemelerde sonlandırma koşulu olarak kullanılır. Chrome V8 motoru kaynak kodunda birden fazla Sentinel değeri bulunmaktadır ve bunlardan bazıları JavaScript ortamına sızmamalıdır. Bu yazıda, Uninitialized Oddball nesnesinin sızdırılması yoluyla Chrome V8 HardenProtect mekanizmasının nasıl aşılacağına dair bir yöntem tartışılacaktır.
V8'de Sentinel Değeri
V8 kaynak kodunun roots.h dosyasında çok sayıda yerel nesne tanımlanmıştır, bu nesneler bellekte yan yana sıralanır. Bu nesneler JavaScript'e sızdığında, sandbox'un kaçmasına neden olabilir.
Bunu doğrulamak için V8'in yerel fonksiyonlarını değiştirerek yapabiliriz. Örneğin, %TheHole() fonksiyonunun ofsetini değiştirerek Uninitialized Oddball nesnesini TheHole nesnesi yerine döndürmesini sağlayabiliriz.
HardenType korumasını aşma
Uninitialized Oddball nesnelerini kullanarak nispeten rastgele bellek okuma işlemleri gerçekleştirilebilir. Anahtar, optimize edilmiş JavaScript read fonksiyonunda, yalnızca nesnenin prop özelliğinin doğru olup olmadığını kontrol etmesidir, ancak obj.prop anahtarıyla ilişkilendirilen değeri kontrol etmemesidir. Bu, hesaplama sürecinde tür karışıklığına neden olur ve böylece rastgele okuma işlemi gerçekleştirilir.
Optimizasyon sonrası derleme kodunu incelediğimizde, uninitialized_oddball geçirildiğinde, programın doğrudan kaydırmayı hesaplayıp verileri okuduğunu ve tür kontrolü yapmadığını görebiliriz. Bu yöntem, TheHole nesnesine kıyasla daha kolay bir şekilde inşa edilip kullanılabiliyor.
Önerilen düzeltme, optimize edilmiş işlevin dizi öğelerini döndürürken dizi haritasını kontrol etmesini eklemektir; böylece doğrudan kaydırma hesaplaması ile dizi değerlerini döndürmekten kaçınılır.
PatchGap Güvenlik Uyarısı
Bilinen tarihsel açıkların yanı sıra, üreticilerin temel bileşenlerde sessizce düzelttiği sorunlara da dikkat etmemiz gerekiyor. Analizler sonucunda, Skype yazılımının bu açığı hala düzeltmediği görüldü. x86 platformunda, adres sıkıştırma eksikliği nedeniyle, rastgele okuma/yazma aralığı daha geniştir ve neredeyse tüm süreç alanını okuyup yazabilir.
Bu sefer PatchGap yalnızca Issue1352549'u değil, aynı zamanda Issue1314616 ve Issue1216437 gibi benzer açıkları da kapsıyor. Yeni bir aşma yöntemi açıklandıktan sonra, bu açıkların kullanılma zorluğu büyük ölçüde azaldı; saldırganlar neredeyse ek bir araştırma yapmadan tam bir istismar zincirini tamamlayabiliyor.
Özet
Bu makale, Uninitialized Oddball sızıntısı yoluyla herhangi bir okuma gerçekleştirme yöntemini kısaca incelemektedir. V8'de benzer sorunlara yol açabilecek başka birçok Sentinel değeri de bulunmaktadır. Bu, bize şunu hatırlatıyor:
Diğer uninitialized_Oddball sızıntıları da V8 sandbox'ının sızmasına neden olabilir.
Bu tür sorunların resmi güvenlik açığı olarak kabul edilip edilmeyeceği hala tartışmalıdır.
Bulanık testte Sentinel değerini bir değişken olarak eklemeyi düşünün, yeni istismar yöntemlerini keşfetmek için.
Her halükarda, bu tür sorunlar, saldırganların tam fayda sağlaması için gereken süreyi büyük ölçüde kısaltacaktır ve buna büyük önem verilmelidir.
View Original
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.
12 Likes
Reward
12
4
Share
Comment
0/400
MoonBoi42
· 16h ago
Biraz panikledim, çok fazla açık var.
View OriginalReply0
SleepyArbCat
· 08-02 05:40
Kod yazmaktan başka bir şey yapamayacak kadar yorgun kedi...zZz
Chrome V8 motorunun Sentinel Value sızıntısı ile ilgili güvenlik riskleri ve kullanım analizi
Chrome V8 motorunda Sentinel Value sızıntısının neden olduğu güvenlik açıklarını araştırma
Sentinel değeri, algoritmalarda özel bir işaret olarak kullanılan bir değerdir, genellikle döngülerde veya özyinelemelerde sonlandırma koşulu olarak kullanılır. Chrome V8 motoru kaynak kodunda birden fazla Sentinel değeri bulunmaktadır ve bunlardan bazıları JavaScript ortamına sızmamalıdır. Bu yazıda, Uninitialized Oddball nesnesinin sızdırılması yoluyla Chrome V8 HardenProtect mekanizmasının nasıl aşılacağına dair bir yöntem tartışılacaktır.
V8'de Sentinel Değeri
V8 kaynak kodunun roots.h dosyasında çok sayıda yerel nesne tanımlanmıştır, bu nesneler bellekte yan yana sıralanır. Bu nesneler JavaScript'e sızdığında, sandbox'un kaçmasına neden olabilir.
Bunu doğrulamak için V8'in yerel fonksiyonlarını değiştirerek yapabiliriz. Örneğin, %TheHole() fonksiyonunun ofsetini değiştirerek Uninitialized Oddball nesnesini TheHole nesnesi yerine döndürmesini sağlayabiliriz.
HardenType korumasını aşma
Uninitialized Oddball nesnelerini kullanarak nispeten rastgele bellek okuma işlemleri gerçekleştirilebilir. Anahtar, optimize edilmiş JavaScript read fonksiyonunda, yalnızca nesnenin prop özelliğinin doğru olup olmadığını kontrol etmesidir, ancak obj.prop anahtarıyla ilişkilendirilen değeri kontrol etmemesidir. Bu, hesaplama sürecinde tür karışıklığına neden olur ve böylece rastgele okuma işlemi gerçekleştirilir.
Optimizasyon sonrası derleme kodunu incelediğimizde, uninitialized_oddball geçirildiğinde, programın doğrudan kaydırmayı hesaplayıp verileri okuduğunu ve tür kontrolü yapmadığını görebiliriz. Bu yöntem, TheHole nesnesine kıyasla daha kolay bir şekilde inşa edilip kullanılabiliyor.
Önerilen düzeltme, optimize edilmiş işlevin dizi öğelerini döndürürken dizi haritasını kontrol etmesini eklemektir; böylece doğrudan kaydırma hesaplaması ile dizi değerlerini döndürmekten kaçınılır.
PatchGap Güvenlik Uyarısı
Bilinen tarihsel açıkların yanı sıra, üreticilerin temel bileşenlerde sessizce düzelttiği sorunlara da dikkat etmemiz gerekiyor. Analizler sonucunda, Skype yazılımının bu açığı hala düzeltmediği görüldü. x86 platformunda, adres sıkıştırma eksikliği nedeniyle, rastgele okuma/yazma aralığı daha geniştir ve neredeyse tüm süreç alanını okuyup yazabilir.
Bu sefer PatchGap yalnızca Issue1352549'u değil, aynı zamanda Issue1314616 ve Issue1216437 gibi benzer açıkları da kapsıyor. Yeni bir aşma yöntemi açıklandıktan sonra, bu açıkların kullanılma zorluğu büyük ölçüde azaldı; saldırganlar neredeyse ek bir araştırma yapmadan tam bir istismar zincirini tamamlayabiliyor.
Özet
Bu makale, Uninitialized Oddball sızıntısı yoluyla herhangi bir okuma gerçekleştirme yöntemini kısaca incelemektedir. V8'de benzer sorunlara yol açabilecek başka birçok Sentinel değeri de bulunmaktadır. Bu, bize şunu hatırlatıyor:
Diğer uninitialized_Oddball sızıntıları da V8 sandbox'ının sızmasına neden olabilir.
Bu tür sorunların resmi güvenlik açığı olarak kabul edilip edilmeyeceği hala tartışmalıdır.
Bulanık testte Sentinel değerini bir değişken olarak eklemeyi düşünün, yeni istismar yöntemlerini keşfetmek için.
Her halükarda, bu tür sorunlar, saldırganların tam fayda sağlaması için gereken süreyi büyük ölçüde kısaltacaktır ve buna büyük önem verilmelidir.