Chrome V8 motoru Sentinel Değeri güvenlik açığı derinlik analizi

robot
Abstract generation in progress

Chrome V8 Motorunda Sentinel Value'nin Güvenlik Tehditlerini Derinlemesine İnceleme

Sentinel değer, algoritmalarda bir tür özel değerdir ve genellikle döngü veya özyinelemeli algoritmalardaki sonlandırma koşulu olarak kullanılır. Chrome kaynak kodunda geniş ölçüde Sentinel değer kullanılmıştır. Yakın zamanda, güvenlik araştırmacıları TheHole nesnesinin sızdırılması yoluyla Chrome kumanda alanında rastgele kod çalıştırılabileceğini keşfettiler. Google ekibi bu açığı hızla düzeltti.

Ancak, V8'de JavaScript'e sızdırılmaması gereken diğer yerel nesneler de bulunmaktadır. Bu makale, sızıntısının daha geniş güvenlik açıklarına yol açabileceği Uninitialized Oddball nesnesine odaklanacaktır. Şu anda, bu yöntem en son V8 sürümünde hala kullanılabilir, Google bu sorun için henüz bir düzeltme yapmamıştır.

Dikkate değer olan, bu yöntemin güçlü bir evrenselliğe sahip olmasıdır:

  1. CVE-2021-30551'de, internal uninitialized oddball'in sızdırılması için bir poc ilk kez önerilmiştir.

  2. CVE-2022-1486'nın poc'sunda UninitializedOddball da doğrudan ifşa edilmiştir.

  3. Issue1352549( henüz CVE) tahsis edilmedi ve tam istismar kodunu gösteriyor.

Bu örnekler, potansiyel olarak etkilenen yazılımların kapsamlı bir şekilde incelenmesinin gerekliliğini açıkça göstermektedir. Şu ana kadar, Skype bu açığı henüz düzeltmemiştir.

V8'de Sentinel Değeri

V8'in çoğu yerel nesnesi v8/src/roots/roots.h dosyasında tanımlanmıştır, bu nesneler bellekte yan yana dizilmiştir. 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 gelebilir.

Bu yöntemin en son V8'deki etkinliğini doğrulamak için, V8'in yerel işlevlerini değiştirerek Uninitialized Oddball'ı JavaScript'e sızdırabiliriz. Spesifik olarak, %TheHole() işlevindeki isolate'e göre ofseti değiştirerek Uninitialized Oddball'ı döndürmesini sağlarız.

Özel Açıklama Sentinel Value ile Chrome v8 HardenProtect'i Aşmanın Yolu

HardenType korumasını atlatma

Issue1352549'da verilen kodu basitleştirerek, V8 11.0.0 sürümünde nispeten herhangi bir okuma gerçekleştirebiliriz:

Özel Açıklama Sentinel Value aracılığıyla Chrome v8 HardenProtect'i Aşmak

%TheHole() UninitializedOddball döndüğünde, optimize edilmiş JavaScript read fonksiyonu doğrudan JavaScript semantiğine göre kaydırmayı hesaplar, obj.prop'un Value'sunu kontrol etmeden, bu da tür karışıklığına ve rastgele okumalara yol açar.

Özel Açıklama: Sentinel Value sızıntısı ile Chrome v8 HardenProtect'i aşmak

TheHole nesnesine benzer şekilde, uninitialized_oddball V8 belleğinde daha öncelikli ve daha ilkel bir şekilde sıralandığı için sahtecilik yapmak daha kolaydır. TheHole önlemleri aşılınca, bu yöntem en çok tercih edilen aşma yöntemi haline geldi.

Önerilen düzeltme yöntemi, optimize edilmiş fonksiyonun dizi elemanlarını dönerken dizi haritasını kontrol etmektir, böylece doğrudan ofset hesaplamasıyla dizi değerlerini döndürmekten kaçınılır.

Özel İfşa: Sentinel Value ile Chrome v8 HardenProtect'i Atlatma

PatchGap uyarısı

Issue1352549'u analiz ettikten sonra, Skype'ın bu açığı henüz düzeltmediğini gördük. x86 ortamında, rastgele okuma ve yazma biraz farklıdır: adres sıkıştırması olmadığı için, rastgele okuma ve yazma doğrudan tüm süreçle ilişkilidir.

Skype ASLR'yi etkinleştirmiş olsa da, dosya boyutu büyük olduğundan, doğrudan 4GB bellek içinde yer aldığında, saldırganların belirli bir adrese okuma ve yazma yapması, Skype dosya içeriğine erişme olasılığını artırır. PE analizi gibi geleneksel yöntemlerle birleştirildiğinde, tüm istismar zincirini tamamlamak zor bir iş değildir.

Özel ifşa Sentinel Value ile Chrome v8 HardenProtect'i atlatma

Bu PatchGap yalnızca Issue1352549'u değil, aynı zamanda yeni bir geçiş yönteminin yayınlanması, CVE-2022-1486 ve CVE-2021-30551 gibi benzerlerinin istismar edilme zorluğunu büyük ölçüde azaltmıştır. Saldırganların, sızdırılan uninitialized_oddball hatalarını tam olarak istismar edebilmesi için neredeyse hiçbir ek araştırma yapması gerekmiyor.

Özel Açıkladı: Sentinel Value ile Chrome v8 HardenProtect'i Aşma

Özet

Bu makale, Sentinel değerindeki uninitialized_Oddball'ın sızdırılması yoluyla rastgele okuma işlemlerinin nasıl gerçekleştirileceğini kısaca tartışmaktadır. V8'de başka Sentinel değerleri de bulunmaktadır ve test sırasında sık sık çökme ile karşılaşılmaktadır. Uninitialized_Oddball ve TheHole'ın V8'de bağlantı atlamaya sebep olabileceği göz önüne alındığında, diğer Sentinel değerlerinin de benzer sorunlara yol açabileceğinden şüphelenmekteyiz.

Bu bize şu dersleri veriyor:

  1. Diğer uninitialized_Oddball sızıntıları da V8'in RCE'sini kolayca gerçekleştirebilir mi.

  2. Google, TheHole geçişini hızlı bir şekilde düzeltti, ancak uzun vadede çöp toplama yoluyla ASLR geçişini kullanma durumu, bu tür sorunların resmi bir güvenlik sorunu olarak görülüp görülmediği konusunda belirsiz bir sınırın olduğunu gösteriyor.

  3. Eğer bunu resmi bir güvenlik sorunu olarak görüyorsak, diğer sömürüleri ortaya çıkarmak için fuzzer'a %TheHole/uninitialized_Oddball gibi Sentinel değerleri değişken olarak eklemek gerekli mi?

Her halükarda, bu tür sorunlar, saldırganların tam fayda sağlama süresini önemli ölçüde kısaltacaktır.

Özel ifşa: Sentinel Value üzerinden Chrome v8 HardenProtect'i aşma

Özel açıklama Sentinel Value sızıntısı ile Chrome v8 HardenProtect'i aşma

Özel İfşa Sentinel Value ile Chrome v8 HardenProtect'i Aşmanın Yolu

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.
  • Reward
  • 3
  • Share
Comment
0/400
GateUser-afe07a92vip
· 9h ago
Google ne yapıyor, bu da sızmış.
View OriginalReply0
SelfRuggervip
· 9h ago
Görünüşe göre V8 bu yıl büyük olaylar yaşayacak.
View OriginalReply0
SchrodingerGasvip
· 9h ago
Bir gece uyuduktan sonra hala çalışan v8, bu gazı kim ödeyecek?
View OriginalReply0
Trade Crypto Anywhere Anytime
qrCode
Scan to download Gate app
Community
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)