Hyper-V memory-handling EoP (CVE-2020-0917)¶
Host'un bir guest'e servis verirken bellekteki bir object'i yanlış ele aldığı ve authenticated bir saldırganın partition boundary boyunca privilege yükseltmesine izin veren bir Hyper-V elevation-of-privilege bug'ı (CVE-2020-0917, kardeşi CVE-2020-0918 ile).
Mechanism¶
Bug class / invariant
"Improper handling of objects in memory", Microsoft'un temporal ya da spatial bir memory-safety lifecycle defect'i için kullandığı standart ifadedir — stale/dangling bir reference, eksik bir bounds ya da state check'i ya da sahip olan context'i değiştikten sonra kullanılan bir object. Hyper-V'de ilgili host kodu bir guest'ten kaynaklanan request'lere (VMBus üzerinden / worker process ve destekleyici kernel bileşenleri aracılığıyla) servis verir. Invariant şudur: guest-influenced operasyonlardan ulaşılabilen herhangi bir host object'inin lifetime'ı ve bounds'ları, guest request'lerinin sırasından veya içeriğinden bağımsız olarak tutarlı olmalıdır.
CVE-2020-0917 (ve ayrı olan CVE-2020-0918) elevation-of-privilege sorunlarıdır: "an elevation of privilege vulnerability exists when Windows Hyper-V on a host server fails to properly handle objects in memory." Bunlar adjacent-vector, authenticated bug'lardır — saldırgan, boundary'nin host tarafında sahip olmaması gereken privilege'leri elde etmek için host object handling'i etkiler. Kavramsal olarak bu sınıf yaygın olarak bir use-after-free'e veya bir corruption primitive'i veren ilgili bir state-confusion'a indirgenir.
Input-validation RCE ailesinden farklı olarak, bunlar EoP olarak çerçevelenir: altta yatan memory-safety defect aynı tür root cause olsa da, kazanç temiz bir guest-to-host code-execution path'i yerine yanlış ele alınan object aracılığıyla privilege kazanımıdır.
Kardeş not'tan farkı
Bu not özellikle 2020 "improper handling of objects in memory" çiftini (CVE-2020-0917/-0918, host-side UAF/state-confusion, adjacent-vector authenticated) ele alır. Daha geniş, hypervisor-merkezli ve daha yeni EoP ID ailesi (CVE-2022-21901 ve sonrası) ayrı bir teknik olarak Hyper-V EoP not'unda toplanır.
Walkthrough¶
Sadece kavramsal
Microsoft bu çift için exploit internal'ları değil advisory seviyesinde bilgi yayınladı. Aşağıdaki, public "objects in memory" ifadesiyle ve Hyper-V'nin mimarisiyle tutarlı high-level modeldir. Hiçbir offset, struct field veya exploit kodu verilmemiştir.
- Guest'ten ulaşılabilen bir host path'ini sür. Authenticated bir guest, host'un parent-partition tarafında dahili bir object'i allocate etmesine, reference vermesine ya da güncellemesine neden olan request'ler verir.
- Object state'ini desenkronize et. Bu request'leri sıralayarak ya da şekillendirerek saldırgan, host'un object'i tutarsız şekilde free ettiği, yeniden allocate ettiği veya yeniden yorumladığı bir state'e ulaşır — "improper handling".
- Bir corruption primitive elde et. Dangling ya da yanlış bounded bir reference daha sonra kullanılır ve saldırgana host bellek içeriği veya control data üzerinde etki verir.
- Privilege yükselt. Primitive, host üzerinde yükseltilmiş privilege kazanacak şekilde şekillendirilir ve amaçlanan isolation boundary aşılır.
State-confusion pattern (illustrative pseudo-logic)
Defect, eksik olan "bu object bu state'te hâlâ geçerli mi?" check'idir.Detection¶
Host / telemetry sinyalleri
- Host kernel / worker fault'ları: Belirli bir guest'in request pattern'leriyle
ilişkilendirilmiş bugcheck'ler veya
vmwp.exe/vmmscrash'leri; crash dump'ları ve pool-corruption göstergelerini toplayın. - Pool-corruption telemetry: Hyper-V bileşenlerindeki use-after-free ve pool overrun'ları yüzeye çıkarmak için lab/repro'da Special Pool / Driver Verifier'ı etkinleştirin.
- Hyper-V event log'ları: Tek bir VM'e bağlı
Microsoft-Windows-Hyper-V-Worker/-Hypervisor/-VMMSanomalileri (partition error'ları, beklenmedik object teardown). - Host üzerinde EDR: Host üzerinde VM-servicing process'lerin etrafından kaynaklanan beklenmedik privilege değişiklikleri veya token/handle anomalileri için alarm verin.
Mitigation¶
Patch & hardening
- Nisan 2020 update'lerini uygula. Microsoft CVE-2020-0917 ve CVE-2020-0918'i Windows 10 1809/1903/1909 ve Windows Server 2019 için Nisan 2020 cumulative update'lerinde düzeltti — patch'lemek birincil kontroldür.
- Kernel mitigation'larını etkin tut: HVCI/VBS, kernel CFG ve pool hardening, bir memory-handling bug'ını güvenilir privilege kazanımına çevirmenin maliyetini yükseltir.
- Untrusted guest'leri sınırla: Bir host üzerinde untrusted VM'leri kimin çalıştırabileceğini kısıtlayın ve bir EoP contained kalsın diye multi-tenant host'ları segmentleyin.
- İzle ve hemen patch'le:
vmwp.exe, VMBus ve integration bileşenlerinin Hyper-V bileşen sürümlerini patch'lenmiş build'lere karşı takip edin.