AI Hacking - Hackerlar Siber Saldırılarda Yapay Zekayı Nasıl Kullanıyor?

Şimdi Oku
Site çevirileri için yapay zeka kullanıyoruz ve doğruluk için çaba göstersek de her zaman %100 kesin olmayabilir. Anlayışınız için teşekkür ederiz.

Google Chrome'daki CVE-2024-0517 Güvenlik Açığını Giderme

MetaDefender Endpoint tarafından desteklenmektedir
tarafından OPSWAT
Bu Gönderiyi Paylaş
OPSWAT burs programı katılımcıları Hoai Nam Do ve Minh Quan Le'nin fotoğrafı
OPSWAT Burs Programı Katılımcıları

CVE-2024-0517 Hakkında

CVE-2024-0517, Google Chrome'un 120.0.6099.224 sürümünden önceki V8 JavaScript motorunda, uzaktan saldırganların hazırlanmış bir HTML sayfası aracılığıyla yığın bozulmasından yararlanmasına olanak tanıyan bir sınır dışı yazma güvenlik açığıdır. Güvenlik açığı ilk olarak Qrious Secure'dan Toan (Suto) Pham tarafından rapor edilmiştir. 

NVD'den ayrıntılı bir vektör açıklamasıyla birlikte 8.8 (Yüksek) CVSS 3.x önem derecesi temel puanını gösteren ekran görüntüsü
CVE-2024-0517 Ulusal Güvenlik Açığı Veritabanında (NVD)

Bu güvenlik açığı, bir uygulama işaretçi, nesne veya değişken gibi bir kaynağı bir tür kullanarak tahsis ettiğinde veya başlattığında, ancak daha sonra bu kaynağa orijinal türle uyumlu olmayan bir tür kullanarak eriştiğinde ortaya çıkan tür karmaşasından kaynaklanmaktadır (CWE-843). Bu CVE'de tür karmaşası, V8 JavaScript motoru için optimize edici bir derleyici olan Maglev tarafından bellek optimizasyonu için kullanılan katlanmış tahsis adı verilen bir bellek tahsis işlemi sırasında tetiklenir. 

Bir saldırgan, tür karmaşasından yararlanarak ve WebAssembly ile rastgele kabuk kodları yazarak kurbanın makinesinde komutlar çalıştırabilir. 

Saldırı Aşamaları

Saldırganlar, hazırlanmış bir HTML sayfası içeren bir web sitesi barındırabilir ve kullanıcıları kimlik avı e-postaları veya sosyal ağlar aracılığıyla bu sayfaya erişmeleri için kandırabilir. Kullanıcılar siteyi Google Chrome'un güvenlik açığı bulunan bir sürümünü kullanarak ziyaret ettiğinde, gömülü kötü amaçlı kod rastgele komutlar yürütecektir. 

Uzaktan kod yürütmeye yol açan kötü amaçlı bir HTML dosyası içeren bir kimlik avı e-postası kullanarak bir güvenlik açığından yararlanmak için dört adımlı bir süreci gösteren diyagram
Adım adım saldırı kampanyası 

V8 JavaScript Motoru 

Saldırganlar, hazırlanmış bir HTML sayfası içeren bir web sitesi barındırabilir ve kullanıcıları kimlik avı e-postaları veya sosyal ağlar aracılığıyla bu sayfaya erişmeleri için kandırabilir. Kullanıcılar siteyi Google Chrome'un güvenlik açığı bulunan bir sürümünü kullanarak ziyaret ettiğinde, gömülü kötü amaçlı kod rastgele komutlar yürütecektir. 

Maglev ve Katlanmış Tahsis

V8'deki optimize edici bir derleyici olan Maglev, kod yürütme ve bellek tahsisini geliştirir. Maglev yalnızca kod sıkça yürütüldüğünde ve "sıcak" olarak işaretlendiğinde çalışır, bu da daha yavaş satır satır yorumlama yerine derleme yoluyla daha hızlı yürütme ihtiyacını gösterir. 

Genellikle tahsisler bitişik olmayan bellek bölgelerinde gerçekleşir, bu da seyrek ve verimsiz bellek kullanımına yol açar. Bu sorunu çözmek için V8, birden fazla değişkeni sürekli ve aynı anda tahsis eden katlanmış tahsis adı verilen bir teknik kullanır. Maglev de ilerlemesinde katlanmış tahsis kullanarak tahsisleri optimize eder. 

Klasör atanmış ve atanmamış klasör tahsislerinin renk kodlu gösterimlerini gösteren diyagram
Malev & klasör tahsisi

Nesilsel Çöp Toplama 

Kullanılmayan bellek bölgelerini temizlemek için V8, belleği iki alana bölen bir nesilsel çöp toplama (GC) tekniği kullanır: genç nesil ve eski nesil. Ayrıca, iki çöp toplayıcı vardır: genç alanın temizlenmesinden sorumlu olan küçük çöp toplayıcı ve eski alanın temizlenmesini sağlayan büyük çöp toplayıcı. Genç nesil, yeni oluşturulan nesnelerin ilk olarak tahsis edildiği bellek alanıdır ve eski nesil, uzun ömürlü nesnelerin depolandığı bir bellek bölgesidir. Genç nesilde birden fazla küçük GC döngüsünden sağ çıkan nesneler sonunda eski nesle terfi eder. 

Çöp toplama (GC) sırasında genç, ara ve eski bellek nesillerinde nesne ayırma sürecini gösteren diyagram
Hafıza alanları: genç nesil ve yaşlı nesil

Güvenlik Açığı Analizi

Genel Bakış

Güvenlik açığı, açıkça tanımlanmış bir kurucusu (temel varsayılan kurucu) olmayan bir temel sınıftan miras alınan bir sınıftan bir nesne oluşturulduğunda ve daha sonra başka bir nesne oluşturulduğunda ortaya çıkar. Katlanmış tahsisat nedeniyle, ilk nesnenin tahsisini ikinci nesnenin tahsisi takip edebilir. Bu iki tahsis arasında çöp toplama gibi bir olay meydana gelirse, bir tür karışıklığı güvenlik açığı ortaya çıkabilir.

Kök Neden Analizi 

OPSWAT Yüksek Lisans Bursiyerleri, tahsis süreci sırasında V8 iş akışının ayrıntılı bir analizini yapmış ve bu süreçte aşağıdaki işlevlerin çağrıldığını belirlemiştir: 

Yapıcı bulmadan ham tahsis uzantısına kadar nesne tahsis süreci sırasında V8'in iş akışını gösteren diyagram
Tahsis süreci sırasında V8 iş akışı 

Bu süreçte TryBuildFindNonDefaultConstructorOrConstruct fonksiyonunda bir sorun tespit edilmiştir: BuildAllocateFastObject işlevi, alt sınıf örneğini oluşturmak için current_raw_allocation_ (aynı anda birden fazla değişken için ayrılan bellek bölgesine bir işaretçi) öğesini genişletir, ancak bunu null olarak ayarlayarak temizleyemez. 

Sonuç olarak, oluşturulan bir sonraki nesne, ikinci tahsisattan önceki herhangi bir olaydan bağımsız olarak, her zaman current_raw_allocation_ tarafından işaret edilen belleğin hemen ardından tahsis edilir. 

Bellekte yeni bir nesnenin oluşturulmasını gösteren diyagram, "mevcut ham tahsisattan" "sonraki nesneye" geçiş
Bellek bölgesinde 'current_raw_allocation' ve 'Next object'

GC çağrılırsa, current_raw_allocation_ öğesine bitişik belleğin yanındaki bellek bölgesi başka nesnelere atanabilir. Bu, GC tetiklendikten ve başka bir nesne oluşturulduktan sonra, iki işaretçinin aynı bellek bölgesine başvurduğu ancak farklı veri türlerine sahip olduğu bir duruma yol açabilir ve bu da bir tür karışıklığı güvenlik açığına neden olur.

Bir tür karışıklığı güvenlik açığı sürecini gösteren, çöp toplama tetikleyicisini ve potansiyel sorunlara yol açan nesne tahsisini gösteren bir diyagram
Tip karışıklığı güvenlik açığı 

İstismar

Bu güvenlik açığından yararlanmak için, OPSWAT Yüksek Lisans Öğrencileri kabuk kodu içeren WebAssembly örnekleri oluşturmuş ve belleği kontrol etmek ve kabuk kodunu çalıştırmak için GC tarafından tür karışıklığını tetiklemeye çalışmıştır: 

V8 motorunda tür karışıklığı yoluyla uzaktan kod çalıştırmanın nasıl tetikleneceğine dair adım adım akış şeması, tür karışıklığının tetiklenmesinden kabuk kodunun çalıştırılmasına kadar
V8 Motorunda Uzaktan Kod Çalıştırmayı tetikleme adımları 

Tetikleyici Tipi Karışıklığı

Başlatma sırasında, ilk olarak boş nesneler içeren bir dizi (_arrayObject) tanımlarız. Ardından, alt sınıfın bir örneğini ve tetikleyici bir çöp toplayıcıyı oluşturuyoruz. Son olarak, _arrayDouble adında kayan noktalı bir sayı içeren başka bir dizi tanımlıyoruz. 

JavaScript'te çöp toplamayı tetikleyen ve bir dizi tamponu oluşturan bir işlevi gösteren kod parçası

Bu yapıların tekrarlanması gerekir, böylece kod birden çok kez çalıştırılarak V8'in kodu "sıcak" olarak işaretlemesine ve Maglev derleyicisini tetiklemesine neden olur. Bunu, alt sınıfın kurucusunu aşağıdaki gibi bir döngü içinde çağırarak başarıyoruz: 

Bir alt sınıfın birden fazla örneğini oluşturan bir döngüyü gösteren kısa bir JavaScript kod parçası

Bu nesneler bir döngü içinde tekrar tekrar başlatıldıktan sonra tür karmaşası tetiklenecektir.

Okuma ve Yazma İlkelleri Oluşturma

Tip karışıklığını başarıyla tetikledikten sonra, kabuk kodunun çalıştırılması için belleğin okunması ve kontrollü bir adreste belleğin üzerine yazılması gerekir. Bunu yapmak için okuma ve yazma ilkelleri oluşturduk. İstismar ilkelleri, nesnelerdeki meta verilerden yararlanarak bize keyfi okuma/yazma bellek bölgeleri verecek ve bunu keyfi kod çalıştırmak için kullanacaktır. 

Okuma ve yazma ilkelinin bellek bölgelerini ve üzerine yazılan değerleri gösteren görsel bir temsili
İlkel Okuma ve Yazma 

Bu adımdaki okuma ve yazma ilkelleri, bir sonraki adımda WebAssembly örneğinin Jump tablosu işaretçisini kontrol etmemizi sağlayacaktır. 

WebAssembly Örnekleri Oluşturma

Ardından, iki WebAssembly örneği oluşturduk: biri kabuk kodunu depolamak için, diğeri de tetiklemek için. Kabuk kodunu okuma ve yazma ilkelleri aracılığıyla WebAssembly örneğinin belleğine doğrudan yazmaktan kaçınmak için WebAssembly örneği içinde bazı kayan noktalı sabit değerler tanımladık. 

Bellek erişimi ve depolama işlevlerini gösteren WebAssembly ile yazılmış bir kod parçacığı

WebAssembly örneğinin kontrol atlama tablosu işaretçisi

Okuma ve yazma ilkellerini kullanarak; ilk WebAssembly örneğindeki sabitlerin derlenmiş kodunun bazı baytlarını atlamak için ikinci WebAssembly örneğinin atlama tablosu işaretçisini ayarlarız, böylece kayan noktalı sabitler amaçladığımız kabuk kodu olarak yorumlanır:

Verilerin kayıtlara taşınmasına yönelik talimatları gösteren assembly kodu parçacığı

Kabuk Kodunu Çalıştırmak için WebAssembly Örneğini Çalıştırın 

Son olarak, tür karışıklığını tetikledikten ve WebAssembly örneklerinin atlama tablosu işaretçilerini kontrol etmek için okuma/yazma ilkellerini kullandıktan sonra, ikinci WebAssembly örneğinin dışa aktarılan işlevini çağırdık ve bu da ilk WebAssembly örneğindeki kabuk kodunun yürütülmesine neden oldu. 

Kullandığımız kabuk kodu, aşağıdaki komutta olduğu gibi, bir Linux makinesindeki tüm işlemleri sonlandırmak için tasarlanmıştır: 

İşlemleri sonlandırmak için 'kill' komutunu içeren basit bir terminal komutu parçacığı

Bu komutu çalıştırmak için kayan noktalı sayılardan dönüştürülen assembly kodu aşağıdaki gibi olacaktır: 

'kill' komutunu kullanarak bir işlemi sonlandıran bir sistem çağrısı için bir derleme kodu parçacığı

Güvenlik Zafiyetini Simüle Edin 

Bu istismarı gerçek dünya senaryosunda simüle etmek için OPSWAT Graduate Fellows kötü niyetle hazırlanmış bir HTML sayfası oluşturdu. 

Belleğe erişerek ve verileri manipüle ederek kabuk kodu çalıştırmak için tasarlanmış bir WebAssembly kod parçacığı

Bu hazırlanmış HTML sayfasını barındıran alan adına bir bağlantı içeren bir kimlik avı e-postası kurbana gönderilir. 

Bir sistem izleme aracıyla birlikte bir kimlik avı e-postasını gösteren ekran görüntüsü, saldırının yürütülmesini gösteriyor

Kurban, Google Chrome'un güvenlik açığı bulunan sürümünü kullanarak bağlantıya erişirse, kabuk kodu çalıştırılır ve tüm işlemlerin sonlandırılmasına neden olur. Sonuç olarak, aşağıda gösterildiği gibi kullanıcının oturumu kapatılır: 

Kali Linux için giriş ekranının ekran görüntüsü

İyileştirme

MetaDefender Endpoint™, "Savunmasız Uygulama" özelliğinden yararlanarak bu CVE'yi proaktif olarak azaltmak için kullanıldı. Çözüm, uç nokta ortamındaki Google Chrome uygulamaları için tüm ilişkili CVE'leri etkili bir şekilde tespit eder ve görüntüler. Tehdidi etkisiz hale getirmek için kullanıcılar Chrome'u derhal kaldırabilir veya en son güvenlik yamasını uygulayabilir. Her iki karşı önlemin uygulanmasıyla CVE tamamen kontrol altına alınır ve uç noktada başarılı bir siber saldırı riski önemli ölçüde azaltılır.

MetaDefender Endpoint arayüzü, CVE'lerle ilgili ayrıntılar da dahil olmak üzere Google Chrome güvenlik açıklarını gösteriyor

Sonraki Seviye Endpoint Güvenliği 

Dünyanın dört bir yanındaki kurumların, kuruluşların ve tüzel kişilerin kritik uç noktaları korumak için neden MetaDefender Endpoint 'e güvendiğini keşfedin. Daha fazla bilgi edinmek ve ücretsiz bir demo ile kendi gözlerinizle görmek için bugün bir uzmanla konuşun.  


OPSWAT ile Güncel Kalın!

En son şirket güncellemelerini almak için bugün kaydolun, hikayeler, etkinlik bilgileri ve daha fazlası.