Chrome V8 motorundaki Sentinel Value sızıntısı nedeniyle oluşan güvenlik riski
Sentinel değeri, algoritmadaki özel bir değerdir ve genellikle döngü veya özyinelemeli algoritmaların sonlandırma koşulu olarak kullanılır. Chrome kaynak kodunda birden fazla Sentinel değeri bulunmaktadır ve bu nesnelerin bazıları JavaScript ortamına sızmamalıdır. Bu yazıda, Chrome V8 motorunun HardenProtect mekanizmasını aşmak için Uninitialized Oddball nesnesinin sızdırılmasını inceleyeceğiz.
V8'de Sentinel Değeri
V8'in çoğu yerel nesnesi v8/src/roots/roots.h dosyasında tanımlanmıştır ve bu nesneler bellekte bitişik olarak sıralanır. Bu yerel nesneler JavaScript'e ifşa edilmemesi gerektiği bir durumda sızdırılırsa, sandbox içinde herhangi bir kodun yürütülmesine neden olabilir.
Sızdırılmış Uninitialized Oddball nesnelerini kullanarak, aşağıdaki kod ile göreli olarak rastgele okuma gerçekleştirilebilir:
javascript
function read(obj, idx) {
return obj[idx];
}
let arr = [1.1, 2.2, 3.3];
let uninitialized_oddball = %TheHole();
for (let i = 0; i < 100000; i++) {
read(arr, 0);
}
%OptimizeFunctionOnNextCall(read);
let result = read(uninitialized_oddball, 0x12345);
%DebugPrint(sonuç);
Optimize edilmiş read fonksiyonunun derleme kodu, dizi kaydırmasını hesaplarken obj.prop'un değer türünü kontrol etmediğini, doğrudan JavaScript anlamına göre hesapladığını ve böylece tür karışıklığına neden olduğunu, her türlü okumanın gerçekleştirilmesine yol açtığını gösteriyor.
Düzeltme önerisi, optimize edilmiş fonksiyonun dizi elemanlarını döndürürken, dizinin haritasını kontrol etmeyi eklemek ve doğrudan hesaplama yaparak dönen değeri önlemek.
PatchGap risk uyarısı
Bu güvenlik açığı, bazı eski V8 motorunu kullanan yazılımlarda (, Skype ) gibi, hâlâ düzeltilmemiş durumda. x86 platformunda, adres sıkıştırması olmadığı için, rastgele okuma yazma doğrudan tüm işlemlerle ilişkilidir.
Bu yeni aşma yönteminin açıklanması, ilgili açıkların kullanılmasını kolaylaştırdı. Hackerlar, sızdırılan Uninitialized Oddball açığının tam olarak kullanılmasını sağlamak için neredeyse hiç ek araştırma yapmak zorunda kalmadan bunu tamamlayabiliyorlar.
Özet
V8'de başka Sentinel değeri de bulunmaktadır, bu da benzer güvenlik sorunlarına neden olabilir. Daha fazla araştırma yapılması önerilir:
Diğer Uninitialized Oddball sızıntıları da V8'in RCE'sini gerçekleştirebilir mi?
Bu tür sorunların resmi olarak güvenlik açığı olarak listelenip listelenmeyeceği
Fuzzer testlerinde Sentinel değerinin bir değişken olarak dahil edilmesi gerekiyor mu?
Her ne olursa olsun, bu tür sorunlar, hackerların tam istismar süresini önemli ölçüde kısaltacaktır, bu nedenle büyük önem taşımaktadı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.
18 Likes
Reward
18
6
Share
Comment
0/400
GateUser-bd883c58
· 08-04 04:05
Bu açık, biraz korkutucu bir şekilde sert.
View OriginalReply0
SerumDegen
· 08-02 17:19
gm frenler... v8'de başka bir alpha sızıntısı tespit edildi, hepimiz rekt'iz
View OriginalReply0
ThatsNotARugPull
· 08-02 17:19
Bu Chrome tavasını taşı, herkes delikleri sana gösterdi.
View OriginalReply0
RektButStillHere
· 08-02 17:09
Sandbox koruması neden bu kadar kötü?
View OriginalReply0
CryptoNomics
· 08-02 17:01
*sigh* bir başka istismar, chrome'un güvenlik modeline dair regresyon analizimin istatistiksel olarak anlamlı olduğunu kanıtlıyor... ama kimse dinlemedi
View OriginalReply0
MetaverseHobo
· 08-02 16:58
Bu açık da çok can sıkıcı değil mi, direkt Aya doğru.
V8 motoru Sentinel Value sızıntısı HardenProtect güvenlik riskini aşma
Chrome V8 motorundaki Sentinel Value sızıntısı nedeniyle oluşan güvenlik riski
Sentinel değeri, algoritmadaki özel bir değerdir ve genellikle döngü veya özyinelemeli algoritmaların sonlandırma koşulu olarak kullanılır. Chrome kaynak kodunda birden fazla Sentinel değeri bulunmaktadır ve bu nesnelerin bazıları JavaScript ortamına sızmamalıdır. Bu yazıda, Chrome V8 motorunun HardenProtect mekanizmasını aşmak için Uninitialized Oddball nesnesinin sızdırılmasını inceleyeceğiz.
V8'de Sentinel Değeri
V8'in çoğu yerel nesnesi v8/src/roots/roots.h dosyasında tanımlanmıştır ve bu nesneler bellekte bitişik olarak sıralanır. Bu yerel nesneler JavaScript'e ifşa edilmemesi gerektiği bir durumda sızdırılırsa, sandbox içinde herhangi bir kodun yürütülmesine neden olabilir.
V8'in native fonksiyonlarını değiştirerek Uninitialized Oddball'ı JavaScript'e sızdırabiliriz. Örneğin, %TheHole() fonksiyonunun ofsetini değiştirerek Uninitialized Oddball nesnesini döndürmesini sağlayabiliriz.
HardenType korumasını atlatma
Sızdırılmış Uninitialized Oddball nesnelerini kullanarak, aşağıdaki kod ile göreli olarak rastgele okuma gerçekleştirilebilir:
javascript function read(obj, idx) { return obj[idx]; }
let arr = [1.1, 2.2, 3.3]; let uninitialized_oddball = %TheHole();
for (let i = 0; i < 100000; i++) { read(arr, 0);
}
%OptimizeFunctionOnNextCall(read);
let result = read(uninitialized_oddball, 0x12345); %DebugPrint(sonuç);
Optimize edilmiş read fonksiyonunun derleme kodu, dizi kaydırmasını hesaplarken obj.prop'un değer türünü kontrol etmediğini, doğrudan JavaScript anlamına göre hesapladığını ve böylece tür karışıklığına neden olduğunu, her türlü okumanın gerçekleştirilmesine yol açtığını gösteriyor.
Düzeltme önerisi, optimize edilmiş fonksiyonun dizi elemanlarını döndürürken, dizinin haritasını kontrol etmeyi eklemek ve doğrudan hesaplama yaparak dönen değeri önlemek.
PatchGap risk uyarısı
Bu güvenlik açığı, bazı eski V8 motorunu kullanan yazılımlarda (, Skype ) gibi, hâlâ düzeltilmemiş durumda. x86 platformunda, adres sıkıştırması olmadığı için, rastgele okuma yazma doğrudan tüm işlemlerle ilişkilidir.
Bu yeni aşma yönteminin açıklanması, ilgili açıkların kullanılmasını kolaylaştırdı. Hackerlar, sızdırılan Uninitialized Oddball açığının tam olarak kullanılmasını sağlamak için neredeyse hiç ek araştırma yapmak zorunda kalmadan bunu tamamlayabiliyorlar.
Özet
V8'de başka Sentinel değeri de bulunmaktadır, bu da benzer güvenlik sorunlarına neden olabilir. Daha fazla araştırma yapılması önerilir:
Her ne olursa olsun, bu tür sorunlar, hackerların tam istismar süresini önemli ölçüde kısaltacaktır, bu nedenle büyük önem taşımaktadır.