Chrome v8 HardenProtect'ı Sentinel Value sızıntısı ile atlatma
Ön Söz
Sentinel value, algoritmadaki özel bir değerdir ve genellikle döngü veya özyinelemeli algoritmalarda sonlandırma koşulu olarak bulunur. Chrome kaynak kodunda birçok Sentinel value bulunmaktadır. Daha önce, TheHole nesnesinin sızdırılması yoluyla kumanda içinde herhangi bir kodun çalıştırılmasını nasıl gerçekleştirebileceğine dair bir araştırma yapılmıştır. Google ekibi daha sonra ilgili düzeltmeleri hızla güncelledi.
TheHole nesnesi dışında, v8'de JS'ye sızmaması gereken birçok başka yerel nesne bulunmaktadır. Bu yazıda, mevcut V8 sürümünde hala kullanılabilen Uninitialized Oddball nesnesi tartışılacaktır. Bu yöntemin belirli bir genel geçerliliği olduğu ve birden fazla güvenlik açığında ortaya çıktığına dikkat edilmelidir.
V8'de Sentinel Değeri
v8'in çoğu yerel nesnesi v8/src/roots/roots.h dosyasında tanımlanmıştır, bu nesneler bellek içinde ardışık olarak dizilir. Eğer sızdırılmaması gereken yerel nesneler JavaScript'e sızdırılırsa, sandBox içinde herhangi bir kodun çalıştırılması mümkün hale gelir.
Bu yöntemi doğrulamak için, v8'in yerel fonksiyonunu değiştirerek Uninitialized Oddball'ı JavaScript'e sızdırabiliriz. Özellikle, %TheHole() fonksiyonu içindeki isolate'a olan kaydırmayı değiştirebiliriz.
HardenType'ı Atlat
Uninitialized Oddball'ı kullanarak göreli olarak herhangi bir okuma/yazma işlemi gerçekleştirilebilir. Anahtar, optimize edilmiş JavaScript read fonksiyonunda, obj'nin prop özelliğinin doğru olup olmadığını kontrol etmesi, ancak obj.prop anahtarı için değeri kontrol etmemesi, bunun yerine doğrudan JavaScript semantiğine göre kaydırmayı hesaplamasıdır, bu da dizinin değerini elde etmektedir. Bu durum, hesaplama sırasında tür karışıklığına yol açmakta ve herhangi bir okuma gerçekleştirmektedir.
Uninitialized Oddball'ın v8 belleğinde daha ön sırada ve daha ilkel sıralanması, TheHole nesnesine kıyasla taklit edilmesini daha kolay hale getiriyor ve bu, TheHole'un düzeltmeleri atlatmasını hafifletmek için tercih edilen bir yöntemdir.
Önerilen düzeltme, optimize edilmiş fonksiyonun dizi elemanlarını döndürürken dizi haritasının kontrolünü eklemektir; böylece doğrudan hesaplama ile kaydırma değerini döndürmekten kaçınılır.
PatchGap Risk Uyarısı
Tarihi açıkların yanı sıra, üreticilerin temel bileşenlerde gizlice düzelttiği açıkları da göz önünde bulundurmak gerekir. Şu anda Skype bu açığı henüz düzeltmedi. x86 ve x64 altında kullanım şekilleri biraz farklıdır, ancak her ikisi de her türlü okuma ve yazma işlemini gerçekleştirebilir.
Bu sefer PatchGap yalnızca Issue1352549'u değil, yeni yöntemlerin açıklanması da benzer açıkların kötüye kullanılma zorluğunu büyük ölçüde azalttı. Hackerlar, geçmişteki herhangi bir Uninitialized Oddball açığının tam kötüye kullanımını gerçekleştirmek için neredeyse hiçbir araştırma yapmadan bunu yapabiliyor.
Özet
v8'de başka birçok Sentinel değeri de var, benzer sorunlar olabilir. Bu bize bazı ipuçları veriyor:
Diğer Uninitialized Oddball sızıntıları da v8 RCE'yi gerçekleştirmek için kolay mı?
Bu tür sorunların resmi olarak güvenlik sorunu olarak değerlendirilip değerlendirilemeyeceği hala tartışmalıdır.
fuzz test sırasında çeşitli Sentinel değerlerini değişken olarak eklemeyi düşünmek gerekebilir.
Her halükarda, bu tür sorunlar, hackerların tam istismar süresini önemli ölçüde kısaltacaktır. Buna karşı dikkatli olmalıyız.
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
9
Repost
Share
Comment
0/400
LiquiditySurfer
· 08-08 16:54
Yine v8'de küçük bir açık mı var? Bu dalga pek de küçük değil.
View OriginalReply0
SleepTrader
· 08-08 08:00
Bir açığı daha yakaladım.
View OriginalReply0
digital_archaeologist
· 08-08 04:11
Yine yeni bir numara yapmışlar tql
View OriginalReply0
MetaMaskVictim
· 08-06 23:06
Yine v8'in tuzağına düştüm.
View OriginalReply0
gas_fee_therapist
· 08-05 17:35
v8 yine berbat oldu, güvenlik giderek daha fazla pump oldu.
View OriginalReply0
GreenCandleCollector
· 08-05 17:34
Bu açık oldukça sağlam değil mi?
View OriginalReply0
LightningPacketLoss
· 08-05 17:32
Bu hata tekrar düzeltildi. Veri merkezimizi hızlıca onarmalıyız.
View OriginalReply0
ChainMelonWatcher
· 08-05 17:32
Ah bu... Delik açan kardeş yine yeni bir iş çıkardı.
View OriginalReply0
ImpermanentLossFan
· 08-05 17:31
V8'de böyle bir güvenlik açığı olduğunu görmek beni şok etti.
Chrome v8 güvenlik açığı istismarında yeni bir yöntem: Başlatılmamış Oddball uygulamasının sandbox kaçışı
Chrome v8 HardenProtect'ı Sentinel Value sızıntısı ile atlatma
Ön Söz
Sentinel value, algoritmadaki özel bir değerdir ve genellikle döngü veya özyinelemeli algoritmalarda sonlandırma koşulu olarak bulunur. Chrome kaynak kodunda birçok Sentinel value bulunmaktadır. Daha önce, TheHole nesnesinin sızdırılması yoluyla kumanda içinde herhangi bir kodun çalıştırılmasını nasıl gerçekleştirebileceğine dair bir araştırma yapılmıştır. Google ekibi daha sonra ilgili düzeltmeleri hızla güncelledi.
TheHole nesnesi dışında, v8'de JS'ye sızmaması gereken birçok başka yerel nesne bulunmaktadır. Bu yazıda, mevcut V8 sürümünde hala kullanılabilen Uninitialized Oddball nesnesi tartışılacaktır. Bu yöntemin belirli bir genel geçerliliği olduğu ve birden fazla güvenlik açığında ortaya çıktığına dikkat edilmelidir.
V8'de Sentinel Değeri
v8'in çoğu yerel nesnesi v8/src/roots/roots.h dosyasında tanımlanmıştır, bu nesneler bellek içinde ardışık olarak dizilir. Eğer sızdırılmaması gereken yerel nesneler JavaScript'e sızdırılırsa, sandBox içinde herhangi bir kodun çalıştırılması mümkün hale gelir.
Bu yöntemi doğrulamak için, v8'in yerel fonksiyonunu değiştirerek Uninitialized Oddball'ı JavaScript'e sızdırabiliriz. Özellikle, %TheHole() fonksiyonu içindeki isolate'a olan kaydırmayı değiştirebiliriz.
HardenType'ı Atlat
Uninitialized Oddball'ı kullanarak göreli olarak herhangi bir okuma/yazma işlemi gerçekleştirilebilir. Anahtar, optimize edilmiş JavaScript read fonksiyonunda, obj'nin prop özelliğinin doğru olup olmadığını kontrol etmesi, ancak obj.prop anahtarı için değeri kontrol etmemesi, bunun yerine doğrudan JavaScript semantiğine göre kaydırmayı hesaplamasıdır, bu da dizinin değerini elde etmektedir. Bu durum, hesaplama sırasında tür karışıklığına yol açmakta ve herhangi bir okuma gerçekleştirmektedir.
Uninitialized Oddball'ın v8 belleğinde daha ön sırada ve daha ilkel sıralanması, TheHole nesnesine kıyasla taklit edilmesini daha kolay hale getiriyor ve bu, TheHole'un düzeltmeleri atlatmasını hafifletmek için tercih edilen bir yöntemdir.
Önerilen düzeltme, optimize edilmiş fonksiyonun dizi elemanlarını döndürürken dizi haritasının kontrolünü eklemektir; böylece doğrudan hesaplama ile kaydırma değerini döndürmekten kaçınılır.
PatchGap Risk Uyarısı
Tarihi açıkların yanı sıra, üreticilerin temel bileşenlerde gizlice düzelttiği açıkları da göz önünde bulundurmak gerekir. Şu anda Skype bu açığı henüz düzeltmedi. x86 ve x64 altında kullanım şekilleri biraz farklıdır, ancak her ikisi de her türlü okuma ve yazma işlemini gerçekleştirebilir.
Bu sefer PatchGap yalnızca Issue1352549'u değil, yeni yöntemlerin açıklanması da benzer açıkların kötüye kullanılma zorluğunu büyük ölçüde azalttı. Hackerlar, geçmişteki herhangi bir Uninitialized Oddball açığının tam kötüye kullanımını gerçekleştirmek için neredeyse hiçbir araştırma yapmadan bunu yapabiliyor.
Özet
v8'de başka birçok Sentinel değeri de var, benzer sorunlar olabilir. Bu bize bazı ipuçları veriyor:
Diğer Uninitialized Oddball sızıntıları da v8 RCE'yi gerçekleştirmek için kolay mı?
Bu tür sorunların resmi olarak güvenlik sorunu olarak değerlendirilip değerlendirilemeyeceği hala tartışmalıdır.
fuzz test sırasında çeşitli Sentinel değerlerini değişken olarak eklemeyi düşünmek gerekebilir.
Her halükarda, bu tür sorunlar, hackerların tam istismar süresini önemli ölçüde kısaltacaktır. Buna karşı dikkatli olmalıyız.