BYOVD - Dell dbutil_2_3.sys LPE (CVE-2021-21551)¶
Dell'in firmware-update driver'ı IOCTL interface'inde hiçbir ACL ile gelmez; bu yüzden unprivileged herhangi bir user, source, destination ve length argümanları tamamen attacker-controlled olacak şekilde
memmoveçağırabilir — sonuçta arbitrary kernel R/W ve SYSTEM'e local privilege escalation elde edilir.
Mechanism¶
Note
IOCTL input buffer'ını doğrudan memmove(dst, src, len) içine geçiren — ve iki pointer'dan birinin güvenli bir kernel aralığında olup olmadığını validate etmeyen — bir kernel driver, ring 0'da write-what-where koşulu sağlar. dbutil_2_3.sys kendi device object'i üzerinde hiçbir ACL ayarlamadığı için, herhangi bir user-mode process device handle'ını açıp IOCTL'i invoke edebilir. Kernel bellek, src olarak bir kernel adresi ve dst olarak bir user-space buffer verilerek okunabilir; roller ters çevrilerek de yazılabilir. Privileged bir token'ı bulmak için standart EPROCESS walking ile birleştirildiğinde bu, başka herhangi bir güvenlik açığına ihtiyaç duymadan SYSTEM-level LPE için yeterlidir.
Walkthrough¶
Affected driver: dbutil_2_3.sys v2.3 — Dell SupportAssist ve firmware updater paketleriyle dağıtılan Dell firmware-update bileşeni. Yaklaşık 2009'dan beri yüz milyonlarca Dell Windows cihazında shipping edilmektedir.
CVE: CVE-2021-21551 (CVSS 8.8; SentinelLabs tarafından açıklandı, Dell'e 2020-12-01 tarihinde raporlandı, Dell DSA-2021-088 ile patch'lendi).
Device symbolic link: \\.\DBUtil_2_3
IOCTL codes:
| Code | Operation |
|---|---|
0x9B0C1EC4 |
Arbitrary kernel memory read (okuma) |
0x9B0C1EC8 |
Arbitrary kernel memory write (yazma) |
Input buffer layout (4-element QWORD array):
[0] filler (e.g. 0x4141414141414141)
[1] target address (kernel dst for write / kernel src for read)
[2] zero / reserved
[3] data payload (value to write) or receives read result
Driver, buffer'ın en az 0x18 byte olduğunu validate eder, offset 0x08'deki adresi ve offset 0x18'deki data'yı okur, ardından pointer'lar üzerinde herhangi bir range check yapmadan memmove çağırır.
Conceptual exploitation path:
1. OpenFile("\\.\DBUtil_2_3") // no ACL — succeeds as low-priv user
2. Read PsInitialSystemProcess // via 0x9B0C1EC4 to get SYSTEM EPROCESS
3. Walk EPROCESS ActiveProcessLinks // find own process EPROCESS
4. Read SYSTEM Token field // from SYSTEM EPROCESS + token offset
5. Write SYSTEM Token into own // via 0x9B0C1EC8 → overwrite token field
process EPROCESS token field
6. Spawn cmd.exe → nt authority\system
Beş CVE alt-sorununun arasında ayrıca doğrudan I/O port access (IN/OUT instruction'ları) da bulunur; bu, filesystem kontrollerini bypass ederek doğrudan disk sektörlerine yazmak için kullanılabilir.
Warning
SentinelLabs, token pointer'ının kendisi yerine _SEP_TOKEN_PRIVILEGES bitmap field'larını (Present ve Enabled) hedefleyen data-only bir variant yayınladı; bu, exploitation'ı token-pointer monitoring ile tespit etmeyi zorlaştırır.
Detection¶
- Driver hash blocklist: LOLDrivers, bilinen dbutil_2_3.sys variant'ları için üç SHA-256 hash dokümante eder:
0296e2ce999e67c76352613a718e11516fe1b0efc3ffdb8918fc999dd76a73a587e38e7aeaaaa96efe1a74f59fca8371de93544b7af22862eb0e574cec49c7c3ddbf5ecca5c8086afde1fb4f551e9e6400e94f4428fe7fb5559da5cffa654cc1(Tam liste: loldrivers.io)- Device open: Legitimate Dell update tooling dışındaki process'lerden
\\.\DBUtil_2_3hedefleyen herhangi birCreateFileçağrısında alert üret. - ETW:
dbutil_2_3.sysiçin driver load (ImageLoad) event'i; yükleyen process'in bilinen bir Dell updater olduğunu doğrula. Sertifika ilk açıklamada revoke edilmemişti, dolayısıyla tek başına signature geçerliliği yetersizdir. - IOCTL monitoring:
0x9B0C1EC4/0x9B0C1EC8code'luDeviceIoControlçağrılarını logla. - Token change detection:
_EPROCESS.Tokendeğişikliklerini izleyen EDR ya da kernel callback'leri (ör. token karşılaştırmasıyla birleştirilenPsSetCreateProcessNotifyRoutine) privilege swap'i yakalayabilir. - Sysmon / WDAC audit: Driver hash'i için Sigma rule'ları ve Sysmon config'leri LOLDrivers üzerinde yayınlanmıştır.
Mitigation¶
- Apply Dell DSA-2021-088: Dell patch'li bir driver yayınladı; vulnerable sürüm kaldırılıp değiştirilmelidir. Dell'in advisory'si bir removal tool içerir.
- Microsoft Vulnerable Driver Blocklist:
dbutil_2_3.syshash'leri, WDAC tarafından enforce edilen Microsoft önerilen driver block list'ine dahildir. - HVCI: Hypervisor-Protected Code Integrity gereksinimlerini karşılamayan driver'ların yüklenmesini engeller ve kernel memory corruption primitive'lerinden gelen zararı sınırlar.
- WDAC deny policy: Sertifikaya (etkilenen sürüm için Dell Inc. firmware signing cert) ya da belirli bir file hash'e göre engelle.
- Restrict Dell tooling: Dell SupportAssist / firmware updater gerekli değilse, kaldır ya da application control policy ile engelle.
- Driver ACL hardening (development): Device object'ler üzerinde her zaman kısıtlayıcı bir security descriptor ayarla; kernel R/W açan herhangi bir driver için
SeLoadDriverPrivilegeya da açık bir ACL girdisi iste.