CLFS base log file (.BLF) metadata corruption EoP (CVE-2022-37969)¶
Windows Common Log File System driver'ında,
.BLFbase-block metadata'sını corrupt ederek ulaşılan bir out-of-bounds write; in the wild bir 0day olarak kullanılıp standart bir user'dan SYSTEM'e privilege escalation sağladı.
Mechanism¶
Kırılan invariant
CLFS (CLFS.sys), base block'u self-describing metadata içeren bir Base Log
File (.BLF) parse eder: bir client-context offset array, symbol zone'lar ve
bir sector-signature array. Driver, dosya içindeki offset/size alanlarına
sıkı bir bounds validation olmadan güvenir. CVE-2022-37969, SignaturesOffset
alanının validation'ının eksik olmasından kaynaklanır: özenle hazırlanmış bir
client-context offset array, state'i bir log reset'i zorlayan sahte bir Client
Context'i referans alır. Metadata flush sırasında sector-signature array öyle
yazılır ki SignaturesOffset ile overlap eder ve onu corrupt eder. Corrupt
olan offset, symbol allocation sırasındaki cbSymbolZone sanity check'ini
atlatır ve bir kernel container/context pointer'ını bozan kontrollü bir
out-of-bounds write üretir. Düşük yetkili bir user .BLF'i kendisi
oluşturabildiği için bu, user→kernel sınırını aşar (CWE-787, out-of-bounds
write).
Walkthrough¶
Bu, public ve patch'lenmiş advisory'den çıkarılmış kavramsal bir reproduction'dır. Kesin offset'ler ya da kullanıma hazır bir exploit verilmiyor.
- Base-block metadata'sı ve client-context offset array'i bir fake Client
Context'e işaret eden zararlı bir
.BLFoluştur. - BLF'i aç ki CLFS sector-signature array'i yeniden yazsın ve
SignaturesOffset'i anormal bir değere corrupt etsin. - Container operasyonlarını tetikle ki symbol allocation corrupt olan offset ile
çalışsın ve
cbSymbolZonecheck'ini atlasın. - Geçersiz zone size, bir komşu container-context pointer'ının üzerine yazan oversized/yanlış konumlanmış bir write'a yol açar.
- Corrupt olan pointer'ı attacker-controlled data'ya yönlendir ki sonraki bir dereference (örn. handle close'da) bir kernel write primitive'i versin.
- Primitive'i data-only bir privilege escalation için kullan (bkz. EPROCESS token stealing).
Bug kavramsal olarak nerede yaşıyor
Bug, klasik bir file-format-driven corruption'dır: parser, attacker tarafından oluşturulmuş offset/size alanlarının güvenilir on-disk yapıları tarif ettiğine inanır. Fix, bu metadata alanları için daha sıkı bir validation ekler.
Detection¶
- Düşük yetkili / non-system process'lerin, özellikle user-writable
directory'lerden, alışılmadık
.BLFdosyaları oluşturması veya açması. Win32.Exploit.CVE-2022-37969gibi AV/EDR signature hit'leri.- Standart bir user process'inin aniden SYSTEM olarak child spawn etmesi (token anomalisi).
- BLF handling ile ilişkili
CLFS.sysiçindeki bugcheck'ler / crash'ler. - Non-administrative hesaplardan gelen beklenmedik CLFS handle aktivitesi.
Mitigation¶
- Eylül 2022 Patch Tuesday güncellemesini uygula (CVE-2022-37969, CISA Known Exploited Vulnerabilities katalogunda — patch'lemek zorunlu).
- Güvenilmeyen user context'lerinden
.BLFdosyalarının oluşturulmasını kısıtla ve monitor et. - EDR'yi cloud-delivered protection açık şekilde block mode'da çalıştır.
- Least privilege uygula ki standart user'lar özenle hazırlanmış log dosyalarını kolayca stage edemesin.
- Desteklendiği yerlerde HVCI / VBS gibi kernel mitigation'larını açık tut.