Windows Sahte Dosya Değiştirilemezlik Güvenlik Açığı Saldırganların Keyfi Kod Çalıştırmasına İzin Veriyor


Windows Dosya Değişmezlik Güvenlik Açığı

Windows 11 Kernel’de, tehdit aktörlerinin Kernel ayrıcalıklarıyla keyfi kod yürütmesine olanak tanıyabilecek yeni bir isimsiz güvenlik açığı sınıfı tespit edildi.

“Dosya Değişmezliği” adlı bu güvenlik açığı, Core Windows özelliğinin tasarımındaki yanlış varsayımlar nedeniyle ortaya çıkar. Bu varsayımlar tanımlanmamış Davranış ve güvenlik açıklarına neden olabilir.

DÖRT

Bu “Dosya Değişmezliği” güvenlik açığıyla ilişkili bileşenlerin ve kavramların listesi aşağıdaki gibidir:

  • Windows Dosya paylaşımı – Erişim hakkının tam seti
  • Bellek Yöneticisi – PE tarafından taşınan sayfaları değiştirilmemiş olarak ele alır ve sayfa hataları sırasında yeniden konumlandırmaları dinamik olarak yeniden uygular.
  • Uygulamanın paylaşılması – İstenen DesiredAccess/ShareMode ikilisinin uyumlu olup olmadığını görmek için IoCheckShareAccess veya IoCheckLinkShareAccess’i çağırmak dosya sistemi sürücüsünün sorumluluğudur
  • Doğrulama Kodu – PE dosyalarını “imzalamak” için kriptografinin kullanılmasının bir yolunu açıklar
  • Kod Bütünlüğü – çekirdekteki imzaları doğrular
  • Yanlış varsayımlar – yazma paylaşımı olmadan başarıyla açılan dosyaların başka bir kullanıcı veya işlem tarafından değiştirilemeyeceği anlamına gelir.
  • Sayfa karmaları – PE dosyasındaki her 4KB sayfasının karma değerlerinin listesi
  • Ağ yönlendiricileri – dosya yollarını kabul eden herhangi bir API ile ağ yollarının kullanımına izin verin
  • Korunan Proses Işığı (PPL) – Anti-Malware hizmetleri, yönetici haklarına sahip kötü amaçlı yazılımların müdahalesine karşı koruma sağlayan Korunan İşlem Işığı (PPL) olarak çalışır, bu nedenle fidye yazılımı Anti-Malware hizmetini sonlandıramaz.

Bir saldırgan, PPL’nin DLL Sunucu tarafını değiştirmek ve paylaşım kısıtlamalarını aşmak için bir ağ yönlendiricisi kullanarak bu sahte dosya değiştirilemezliğinden faydalanabilir.

Bu durumda, yürütülebilir bir imajı destekleyen PE’lerin yanlış bir şekilde değişmez olduğu varsayılır. Ancak, bu güvenlik açığı sınıfına “Sahte Dosya Değişmezliği” denir.

Ayrıca bu güvenlik açığı Black Hat Asia 2023’te de sunuldu. Windows Kernel güvenlik açığı ifşa edildi ve LSA ve Anti-Malware Process Protection gibi güvenlik özelliklerini etkisiz hale getirerek sayfalamadaki kötü varsayımların PPL’ye kod enjekte etmek için nasıl kullanılabileceğini gösterdi.

Sunulan senaryo için saldırıda PPL’lerdeki DLL’ler için Yanlış Dosya değişmezliği varsayımları kullanıldı.

Yeni Araştırma

Elastic Security tarafından yayınlanan bu yeni güvenlik açığı raporu, Güvenlik Kataloğu adı verilen ayrı bir imza kullanan PE dosyalarına gömülü kimlik doğrulama imzalarını kullanıyor.

Listede authentihash bulunan her PE, Windows’un C:\Windows\System32\CatRoot dizininde büyük bir katalog dosyası koleksiyonunu tuttuğu imzalayıcı tarafından imzalanmış olarak kabul edilir.

Başlangıçta, CI (Kod Bütünlüğü), dosyayı ZwOpenFile, ZwCreateSection ve ZwMapViewOfSection kullanarak çekirdek belleğine eşler ve ardından CI!MinCrypK_VerifySignedDataKModeEx kullanarak kataloğun dijital imzasını doğrular.

İmza geçerliyse, karmaları CI!I_MapFileHashes ile ayrıştırır.

Bundan sonra dosya FILE_SHARE_WRITE olmadan açılır, yani yazma paylaşımı reddedilir.

Ancak, bu, işleme sırasında güvenlik kataloğunun değiştirilmesini önlemek için tasarlanmıştır. Yine de, bu kötü bir varsayımdır ve Yanlış Dosya Değişmezliğinin başka bir örneğidir.

Saldırı Planlaması

Saldırı akışı, saldırganın kontrol ettiği bir depolama aygıtına bir güvenlik kataloğu yerleştirmesiyle başlar.

Daha sonra Windows’un bunu bulabilmesini sağlamak için CatRoot dizinine bu kataloğa sembolik bir bağlantı yükleyecekler.

Güvenlik kataloglarını kullanma (Kaynak: Elastic Security Labs)

Saldırıyı sürdüren saldırgan, bu güvenlik açığından faydalanmak için şu eylemleri gerçekleştirebilir:

  • Kernel’den kötü amaçlı imzasız bir Kernel sürücüsünü yüklemesini ister
  • Code Integrity sürücüyü doğrulamaya çalışır, ancak bir imza veya güvenilir bir kimlik doğrulaması bulamaz, bu nedenle CatRoot dizinini yeniden tarar ve saldırganın yeni kataloğunu bulur.
  • CI kataloğu çekirdek belleğine eşler ve imzasını doğrular. Bu, saldırganın depolama aygıtına gönderilen sayfa hataları üretir. Depolama aygıtı meşru bir Microsoft imzalı katalog döndürür.
  • Saldırgan sistem çalışma kümesini boşaltır ve daha önce getirilen tüm katalog sayfalarının atılmasını zorlar.
  • CI kataloğu ayrıştırmaya başlar ve yeni sayfa hataları üretir. Bu sefer depolama aygıtı kötü amaçlı sürücüsünün authentihash’ını enjekte eder.
  • CI, katalogda kötü niyetli sürücünün authentihash’ini bulur ve sürücüyü yükler. Bu noktada, saldırgan çekirdekte keyfi kod yürütmeyi başarmıştır.

Çift Okuma Güvenlik Açığı ve Saldırısı

Çift okuma güvenlik açığı ve Exploit (Kaynak: Elastic Security Lab)

Bu güvenlik açığı, kurban kodunun saldırgan tarafından kontrol edilen bir arabellekten aynı değeri birden fazla kez okuması durumunda ortaya çıkabilir.

Tehdit aktörü, okumalar arasında bu tamponun değerini değiştirebilir ve bu da beklenmeyen kurban davranışına neden olabilir.

Ancak saldırı örüntüsü, bir paketin yapı uzunluk alanının 16 bayta ayarlanması ve ardından sunucuya bir paketin işlenmeye hazır olduğunun sinyal gönderilmesiyle gerçekleştirilebilir.

Kurban sunucu uyanır ve malloc(pPacket->length) kullanarak 16 baytlık bir tampon ayırır. Saldırgan daha sonra uzunluk alanını 32 olarak değiştirir.

Daha sonra kurban sunucu, memcpy(pBuffer, pPacket->data, pPacket->length) çağırarak paketin içeriğini yeni tampon belleğe kopyalamaya çalışır ve pPacket->length içindeki değeri tekrar okur; bu değer artık 32’dir.

Kurban 32 baytı 16 baytlık bir tampon belleğe kopyalayarak tampon belleğin taşmasına neden oluyor.

Etkilenen İşlemler

Operasyon API Azaltma önlemleri
Resim Bölümleri CreateProcess LoadLibrary 1. Sayfa Karmalarını Etkinleştir
Veri Bölümleri DosyanınHaritaGörünümü ZwBölümünHaritaGörünümü 1. Çift okumalardan kaçının\ 2. İşlemeden önce dosyayı bir yığın arabelleğine kopyalayın\ 3. MmProbeAndLockPages/VirtualLock aracılığıyla sayfalamayı önleyin
Düzenli G/Ç Dosyayı Oku ZwDosyayıOku 1. Çift okumalardan kaçının\ 2. İşlemeden önce dosyayı bir yığın tamponuna kopyalayın

AI Destekli Güvenlik ile İş E-postalarınızı Sahtecilik, Kimlik Avı ve BEC’den Koruyun | Ücretsiz Demo



Source link