Yeni Chrome 0-Day Zafiyeti

Yeni Chrome 0-Day Zafiyeti

Bu haberi okumaya başladıysanız ve Chrome tarayıcınızı güncellemediyseniz şimdi okumayı bırakıp Chrome’u güncelleyiniz, güncelleme devam ederken okumaya devam edebilirsiniz.

Bu yeni Chrome güncellemesi(78.0.3904.87 sürüm) milyonlarca Chrome kullanıcısını tehdit eden 2 yüksek seviyede 0-day zafiyetini kapatmak için geldi.

Chrome güvenlik araştırmacıları bu açıkların her ikisinin de use-after-free(kullanım sonrası serbest) açıklar olduğunu söyledi. CVE-2019-13720 isimli açığın Chrome’un ses bileşininde ortaya çıkarken diğer açık CVE-2019-13721 ise PDFium kütüphanesinde ortaya çıktığı bildirildi.

Peki nedir bu kullanım sonrası serbest güvenlik açığı? Kullanım sonrası serbest güvenlik açıkları, bilgisayar korsanları tarafından rasgele kod yürütmek için kullanılabilecek bir tür bellek bozulması hatasıdır.  Bu nedenle her iki kusur da saldırganların hedef kullanıcıları kötü amaçlı bir web sitesini ziyaret etmeye ikna ederek, sanal alan korumalarından kaçmalarını ve hedeflenen sistemlerde rastgele kötü amaçlı kod çalıştırmalarını sağlayarak Chrome web tarayıcısında ayrıcalıklar kazanmalarını sağlayabilir. Yazının ilerleyen kısmında bu UaF açığından detaylı olarak bahsedeceğim.

Chromedaki UaF Açıklarının Keşfi

Chrome’daki ses bileşini sorununu Kaspersky araştırmacıları Anton Ivanov and Alexey Kulaev tarafından keşfedildi ve uzman zararlı yazılım analisti Alexey açığı 29 Ekim’de raporladı. Buna rağmen bu zafiyet bilinmeyen bir hacker grubu tarafından kullanıldı. İkinci UaF açığı ise bananapenguin takma adlı bir bug avcısı tarafından 12 Ekim’de raporlandı ve bu bildirimi sayesinde 7500 dolarla ödüllendirildi. Bununla ilgili detaylı bilgiye Chrome blogundan ulaşabilirsiniz.

Bu durum Chrome’un başına ilk kez gelmiyor. Chrome’un başı bu UaF açıkları ile dertte diyebiliriz. Geçtiğimiz Eylül ayı 1 kritik seviyede ve 3 yüksek seviyede UaF açığı Chrome 77.0.3865.90 güncellemesi ile kapatılmıştı. O açıkları listeleyecek olursak:

  • Use-after-free in UI (CVE-2019-13685) — Khalil Zhani tarafından 
  • Use-after-free in media (CVE-2019-13688) — Man Yue Mo of Semmle Security Research Team tarafından 
  • Use-after-free in media (CVE-2019-13687) — Man Yue Mo of Semmle Security Research Team tarafından 
  • Use-after-free in offline pages (CVE-2019-13686) — Brendon Tiszka tarafından raporlandı

Hatta Google, Man Yue Mo adlı kişiye bulduğu açıklardan dolayı toplamda 40.000 dolar ile ödüllendirmişti. Biraz daha geriye gidecek olursak mart ayında Google güvenlik araştırmacısı Clement Lecigne, FileReader uygulamasında CVE-2019-5786 referans adıyla benzer bir açığı keşfetti.

 

 

0-Day Açığının Teknik Detayları

Saldırı Kore dilindeki portalda bulunan waterhole-style injection(su deliği) olarak bilinen bir teknikten yararlanıyor. Ana sayfaya kötü amaçlı bir Javascript kodu eklenerek bu siteye uzaktan erişimle profil oluşturma komut dosyası yükleniyor.

Ana dizin sayfası yukarıda görüldüğü gibi “hxxp://code.jquery.cdn.behindcorona[.]com/.” ‘dan gelen uzak bir komut dosyasını çalıştıran Javascript etiketini barındırıyor.

Bu komut dosyası daha sonra .charlie.XXXXXXXX.js adlı başka bir komut dosyasını yüklüyor. Bu Javascript kodu ise kurbanın sistemini kontrol ederek 64-bit versiyon Windows çalıştırıp çalıştırmadığını tarayıcı adını ve versiyonunu tespit ediyor. Güvenlik açığı bunu Chrome tarayıcısındaki hatayı kullanarak Chrome sürümünün 65 veya daha üstü olup olmadığını denetleyerek yapıyor.

Tarayıcı sürümü kontrol etmeyi başarırsa komut dosyası, (xxxxxxx.php) gibi bir komut dosyasına işaret ediyorsa saldırganın kontrol ettiği sunucu olan (behindcorona [.] Com)’dan birkaç AJAX isteği gerçekleştirmeye başlar. İlk talep daha fazla kullanım için bazı önemli bilgiler edinmek için gereklidir. Bu bilgi, komut dosyasına, gerçek yararlanma kodunun kaç parçasının sunucudan indirilmesi gerektiğini belirten birkaç kodlanmış dizginin yanı sıra, son yük ve RC4 anahtarının şifresini çözmek için bir anahtar ekleyen resim dosyasını içeren zafiyet kodunun bulunduğu URL’yi içerir.

Tüm parçaları indirdikten sonra, RC4 betiği tüm parçaların şifresini çözer ve birleştirir, bu da saldırgana tarayıcıda tam yetki veren yeni bir JavaScript kodunu ekleme şansını verir. Parçaların şifresini çözmek için önceden alınmış olan RC4 anahtarı kullanılır.

Tarayıcının zafiyetinden yararlanma kısımları biraz karışık. Araştırmacıları şaşırtan kısımları:

  1. Bu istismarı yazanlar 65 ve daha yeni bir sürümü kontrol eden bir komut dosyası gönderdikleri halde 76 ve 77 versiyonlarını da kontrol eden başka bir komut dosyası daha göndermişler.

2. Tarayıcının yerleşik kısmında çalışan BigInt(64-bit) sınıfında çalışan birkaç fonksiyonu vardır ve bu kod 64-bit çevre yerel işaretçilerini kullanan 64-bit aritmetik içeren kullanışlı bir Javascript koduydu. Zafiyet geliştiricileri genelde 32-bit numaralar üzerinde çalışır ama bu vakada BigInt kullanıldı ve daha hızlı oldu çünkü tarayıcının kodunda da benzer bir sistem uygulanıyor. Zafiyet geliştiricileri 64-bit’in tamamını kullanmaz, daha küçük sayı aralığında çalışır. Bu nedenle burada sayının daha yüksek/daha düşük bölümlerinde çalışması için birkaç fonksiyon uygulanır.

3. Burada gerçek kodda kullanılmayan birçok fonksiyon ve değişken vardı. Bu, genellikle kod hata ayıklama için kullanıldıkları ve kodun üretime geçtiği zaman geride kaldıkları anlamına gelir.

 

Bu istimar ilk önce, UaF’yi tetikleyerek, önemli 64 bit adresleri (işaretçi olarak) hakkında bilgi sızıntısı yapmak için tetikler. Bu, birkaç şeyle sonuçlanır: 

1) Bir adres başarıyla sızdırılırsa, istismarın doğru çalıştığı anlamına gelir.

 2) Yığın/yığının nerede olduğunu ve adres alanı düzen randomizasyon (ASLR) tekniğini yendiğini bilmek için sızan bir adres kullanılır.

 3) Bu adrese yakın araştırma yapılarak daha fazla sömürü için birkaç faydalı işaretçi bulunabilir.

 

Bu istismar, saldırganlara keyfi bir okuma / yazma ilkelliği veren diğer tekniklerle birlikte hafıza / bellek ayırmak için sayısız işlem yapmaya çalışır. Bu gömülü kabuk kodu yükü için kod yürütme gerçekleştirmek üzere WebAssembly ve FileReader ile birlikte kullanılabilecek özel bir nesneyi oluşturmak için kullanılır.

Saldırının finaline gelecek olursak son yük(final payload), kabuk kodunun şifresini çözen şifreli bir ikili dosya olarak (worst.jpg) indirilir. Şifre çözme işleminden sonra, malware modülü diske updata.exe olarak bırakılır ve yürütülür. Kalıcılık için kötü amaçlı yazılım, Windows Görev Zamanlayıcı’da görev yükler. Aşağıda worst.jpg’yi görüyorsunuz.

Bu da payload’ın(yük) indirdiği RAR arşivinin bilgileri:

File size: 293,403

MD5: 8f3cd9299b2f241daf1f5057ba0b9054

SHA256: 35373d07c2e408838812ff210aa28d90e97e38f2d0132a86085b0d54256cc1cd

 

Bu arşivin içerdiği iki dosyanın bilgileri:

File name: iohelper.exe

MD5: 27e941683d09a7405a9e806cc7d156c9

SHA256: 8fb2558765cf648305493e1dfea7a2b26f4fc8f44ff72c95e9165a904a9a6a48

 

File name: msdisp64.exe

MD5: f614909fbd57ece81d00b01958338ec2

SHA256: cafe8f704095b1f5e0a885f75b1b41a7395a1c62fd893ef44348f9702b3a0deb

 

Son olarak OWASP listesinde UaF açığı yer almaktadır. Kendi sayfasından UaF ile ilgili detaylı bilgiye ulaşabilirsiniz.

Yazar Hakkında

Reply