Hyper-V elevation of privilege (in-the-wild exploited)¶
CVE-2024-38080: Hyper-V
Vid.sysExo-broker IOCTL path'inde, local bir kullanıcının SYSTEM'e yükselmesine izin veren bir integer overflow. Temmuz 2024'te patch'lendi; Microsoft tarafından exploited-in-the-wild olarak işaretlendi ve CISA KEV kataloğunda listelendi (public technical analysis patch sonrasında 1-day olarak yayımlandı).
Mechanism¶
Bug class ve boundary
Component: Virtualization Infrastructure Driver (Vid.sys), yani user-mode VM Worker Process (vmwp.exe) ile hypervisor (hvix64.exe) arasındaki istekleri broker'layan kernel-mode driver. Vulnerable handler VidExoBrokerIoctlReceive'dir ve \Device\VidExo device object'i üzerinden erişilir (public 1-day analizine göre).
Trust boundary: host'ta unprivileged/low-privileged user-mode → kernel (SYSTEM). "Exo" broker mekanizması Hyper-V'nin partition-management altyapısının parçasıdır, dolayısıyla device'a bir handle'a sahip local authenticated bir aktör IOCTL surface'ini sürebilir. Microsoft bunu local bir Elevation of Privilege olarak sınıflandırır (CVSS 7.8, CWE-190 Integer Overflow). Host'ta SYSTEM'e ulaşmak için tam bir guest-to-host escape gerektirmez; kernel attack surface'i local olarak erişilebilirdir.
Vuln class: bir size hesaplamasında integer overflow / wraparound (CWE-190). Overflow olmuş size bir length check'i bypass eder ve non-paged pool'da out-of-bounds write'lara yol açar — klasik bir "kötü aritmetik bir memmove'u besler" kernel pool corruption'ı. Microsoft bunun in-the-wild exploit edildiğini belirtir ve CISA'nın Known Exploited Vulnerabilities kataloğunda listelenir. (Not: bu bir zero-day değildir — public exploitation, Temmuz 2024 patch'i yayımlandıktan sonra ortaya çıkmıştır; atıf yapılan public analiz de patch sonrası bir 1-day yazısıdır. "İlk/bilinen ilk Hyper-V zero-day'i" gibi kategorik iddialar doğrulanamaz ve bu doc tarafından öne sürülmez; doc yalnızca teyit edilmiş in-the-wild exploitation ve CISA KEV listelemesini iddia eder.)
Walkthrough¶
Public hackyboiz/pwndorei 1-day yazısından konsept reproduction path (patch'lenmiş, halihazırda açıklanmış bir build'e karşı — yalnızca illustrative):
- Local bir process, Exo broker device'a bir handle açar ve receive IOCTL'ünü verir (
0x22128C,VidExoBrokerIoctlReceive; eşi olan send0x221288'dir). - Handler, request structure'ındaki saldırgan tarafından etkilenen field'lardan bir output size hesaplar: per-handle bir terim artı bir data-length terimi.
- Her iki aritmetik adım da 32/64-bit bir size'ı wrap edebilir, dolayısıyla hesaplanan size küçülürken amaçlanan copy büyük olur.
- Boyutu yetersiz kalan sonuç, caller'ın output length'ine karşı length check'i geçer ve sonraki copy / object-duplication, pool'daki allocation'ın ötesine yazar.
Yalnızca illustrative
Aşağıdaki fragment, public decompilation'dan aritmetik şeklin temsili bir reconstruction'ıdır. Çalışan bir exploit değildir ve çevredeki IOCTL setup, spray ve corruption-to-control adımlarını atlar. Tam field adlarını/offset'lerini, atıf yapılan yazının belirli driver build'i dışında doğrulanmamış kabul edin.
Temsili size-calculation şekli (illustrative)
// Pre-patch (conceptual, from public 1-day analysis of Vid.sys 10.0.22621.3672)
// NumHandles and DataLen are taken from the request structure.
size_t v12 = 8 * Source->NumHandles + 16; // [overflow #1] if NumHandles >= 0x1ffffffe
size_t v13 = Source->DataLen + v12; // [overflow #2] wraps again
if (v13 <= OutputLen) { // wrapped-small size passes the check
memmove(dst, src, /* large intended length */); // OOB write in non-paged pool
ObDuplicateObject(...); // further OOB writes
}
- Patch'in neyi değiştirdiği (10.0.22621.3880): Microsoft, buffer operasyonlarından önce açık overflow guard'ları ekledi — çarpma sonucu 32-bit bir sınırı aştığında (
v15 > 0xFFFFFFFF/>= 0xFFFFFFF0) ve toplama wrap ettiğinde (TotalLength < v16) request'i reddediyor. Her iki check de herhangi bir copy çalışmadan önce request'i başarısız kılar.
Detection¶
- Patch state: Temmuz 2024 cumulative update'in kurulu olduğunu doğrulayın (22H2/23H2'de
Vid.sys>= 10.0.22621.3880). İlgili KB içinwinver/Get-HotFixdenetimi yapın (bkz. Mitigation). - Behavioral: Hyper-V host'larında beklenmeyen host bugcheck'leri veya pool-corruption crash'leri (
!analyze'ın non-paged pool yakınında corruption göstermesi) başarısız/kısmi exploitation'a işaret edebilir. Host crash dump'larını toplayıp triyaj edin. - Telemetry: virtualization-management olmayan process'lerden
\Device\VidExoaçan / Hyper-V VID IOCTL'leri veren olağandışı local process'lere EDR alert'i. Normal bir host'ta bu device'a yalnızca Hyper-V bileşenleri dokunmalıdır. - Exploitation local-to-SYSTEM olduğundan, initial-access detection'larıyla korele edin: SYSTEM seviyesindeki aktivitenin hemen öncesinde Hyper-V IOCTL'lerine pivot eden bir foothold process.
Mitigation¶
- Temmuz 2024 security update'ini uygulayın. Otoriter fix budur. Etkilenen: Windows 11 (21H2/22H2/23H2) ve Windows Server 2022. Public KB'ler arasında KB5040431, KB5040437, KB5040438, KB5040442 bulunur (Rapid7/Wiz'e göre). Hyper-V host'larını önceliklendirin — Microsoft ve ZDI, aktif olarak exploit edildiği ve ransomware için cazip olduğu için bunu hızlı deployment olarak işaretledi.
- Defense-in-depth: Hyper-V host'larında kimin local kod çalıştırabileceğini kısıtlayın (bug local authenticated erişim gerektirir); host'ları genel amaçlı/interactive workload'lardan uzak tutun; least privilege uygulayın ki low-priv bir foothold device'a kolayca ulaşamasın.
- Monitoring: yukarıdaki IOCTL/device-access telemetry'sine ve açıklamayı takip eden host bugcheck'lerine alert üretin.