V8 motoru Sentinel Değeri sızıntısı güvenlik riski oluşturuyor Uninitialized Oddball yeni bir saldırı vektörü haline geliyor

robot
Abstract generation in progress

Chrome v8 motorundaki Sentinel Değeri sızıntısının neden olduğu güvenlik sorunu analizi

Sentinel değeri, algoritmalarda genellikle döngü veya özyinelemeli algoritmaların durma koşulu olarak kullanılan özel bir değerdir. Chrome kaynak kodunda birden fazla Sentinel değeri bulunmaktadır; bunlardan bazıları JavaScript ortamına sızarsa güvenlik sorunlarına yol açabilir.

Daha önce yapılan araştırmalar, TheHole nesnesinin sızdırılması yoluyla Chrome sandbox'ında herhangi bir kodun çalıştırılabileceğini göstermiştir. Google ekibi, bunun ardından ilgili CVE'leri düzeltmiştir. Ancak, TheHole nesnesinin yanı sıra, v8'de JS'ye sızdırılmaması gereken başka yerel nesneler de bulunmaktadır. Bu yazıda, mevcut V8 sürümünde hala kullanılabilen Uninitialized Oddball nesnesinin bypass yöntemini tartışacağız.

Dikkate değer olan, bu yöntem belirli bir evrenselliğe sahiptir:

  1. CVE-2021-30551'de, ilk POC, internal uninitialized oddball'ın sızdırılmasıydı.

  2. CVE-2022-1486'da, POC ayrıca UninitializedOddball'ı doğrudan ifşa etti.

  3. Issue1352549('da, CVE) için tam istismar kodu verilmiştir.

Bu örnekler, Uninitialized Oddball'ın sızıntısının ciddi güvenlik sorunlarına yol açabileceğini göstermektedir.

V8'deki Sentinel Değeri

V8'in çoğu yerel nesnesi v8/src/roots/roots.h dosyasında tanımlanmıştır, bu nesneler bellekte ardışık olarak yer alır. 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 olabilir.

Bunu 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 göre ofseti değiştirerek Uninitialized Oddball'ı döndürebiliriz.

Özel ifşa: Chrome v8 HardenProtect'i aşmak için Sentinel Value sızdırma

HardenType korumasını atlatma

Uninitialized Oddball kullanarak göreceli olarak herhangi bir okuma gerçekleştirebilirsiniz. Ana kod aşağıdaki gibidir:

javascript function read(obj, idx) { return obj[idx]; }

let uninitialized_oddball = %TheHole(); let ab = new ArrayBuffer(8); let fa = new Float64Array(ab); let ia = new BigInt64Array(ab);

let evil = [1.1, 2.2, 3.3]; evil.prop = 1;

%HazırlıkFonksiyonuOptimizeEtme(oku); read(kötü, 0); read(kötü, 1); %OptimizeFunctionOnNextCall(read); read(kötü, 0);

let val = read(uninitialized_oddball, "prop"); fa[0] = val; console.log(ia[0]);

Optimize edilmiş derleme kodunda, obj.prop'un key'inin değerini kontrol etmeden, doğrudan JavaScript anlamına göre kaydırma hesaplanacak ve dizi değeri döndürülecektir. Bu, tür karışıklığına yol açarak keyfî okuma sağladı.

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

Uninitialized Oddball'ın V8 belleğinde daha öncelikli ve daha ilkel bir sıralamaya sahip olması, TheHole nesnesine göre daha kolay sahtecilik yapılabilmesi, HardenType'ı aşmanın tercih edilen yöntemi olmasını sağlamaktadır.

Önerilen çözüm, optimize edilmiş işlev bir dizi elemanı döndürürken dizi haritasını kontrol etmektir; bu, doğrudan kaydırma hesaplamasını ve dizi değerlerini döndürmekten kaçınmayı içerir.

Özel Keşif: Sentinel Value ile Chrome v8 HardenProtect'i Aşma

PatchGap uyarısı

Issue1352549'u analiz ettikten sonra, bazı yazılımların PatchGap sorunu yaşayabileceği tespit edilmiştir. Örneğin, Skype şu anda bu açığı henüz kapatmamıştır. x86 platformunda, adres sıkıştırması olmadığı için, rastgele okuma ve yazma işlemleri tüm süreçle ilişkilidir.

Skype ASLR'yi açmış olmasına rağmen, dosya boyutunun büyük olması nedeniyle, bir hacker sadece belirli bir sabit adreste okuma/yazma yaparak Skype dosya içeriğine erişme olasılığını artırır. PE analizi gibi geleneksel yöntemlerle birleştirildiğinde, tam bir güvenlik açığı istismar zinciri gerçekleştirilebilir.

Bu PatchGap, sadece Issue1352549 ile ilgili değil, aynı zamanda CVE-2022-1486 ve CVE-2021-30551 gibi açıkların istismar zorluğunu da önemli ölçüde azaltacaktır. Hackerların neredeyse ek bir araştırma yapmasına gerek kalmadan tam istismar gerçekleştirmesi mümkün.

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

Özet

Bu makale, Uninitialized Oddball'ı sızdırarak herhangi bir okuma ilkesini gerçekleştirme yöntemini kısaca tartışmaktadır. V8'de başka birçok Sentinel değeri bulunmaktadır ve benzer güvenlik açıkları olabilir. Bu bize şu dersleri vermektedir:

  1. Diğer Uninitialized Oddball sızıntıları da V8 RCE'yi kolayca gerçekleştirebilir mi.

  2. Bu tür sorunların resmi olarak güvenlik sorunu olarak kabul edilip edilmeyeceği hâlâ tartışmalıdır.

  3. Fuzzer'da %TheHole/Uninitialized Oddball gibi değişkenler eklemek, yeni istismar ilkelere ulaşmak için gerekli midir?

Her halükarda, bu tür sorunlar, hackerların tam bir fayda sağlama süresini önemli ölçüde kısaltacak ve bunun üzerinde ciddi şekilde durmamız gerektiği önemlidir.

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

Özel ifşa ile Sentinel Value aracılığıyla Chrome v8 HardenProtect'i aşma

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

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

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

SENC0.27%
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
  • 5
  • Share
Comment
0/400
HallucinationGrowervip
· 11h ago
Aman Tanrım, nasıl sızdırılabilir ki?
View OriginalReply0
CodeAuditQueenvip
· 11h ago
Bir başka CVE varyantı saldırı yüzeyi, tsk tsk.
View OriginalReply0
WhaleWatchervip
· 11h ago
Google ateşle mi oynuyor? Tarihi geriye mi sarıyor?
View OriginalReply0
BearMarketSurvivorvip
· 11h ago
Gerçekten bitmeyen hatalar.
View OriginalReply0
CryptoAdventurervip
· 11h ago
Zeka vergisi ödemek için yine iyi bir zaman mı? Anlayan anlar
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)