Skip to content

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.

  1. 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.
  2. 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".
  3. 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.
  4. 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)

obj = lookup_or_create(guest_request)   # host object tied to guest action
free_if(some_condition)                  # path A releases obj
...                                      # attacker re-enters via path B
use(obj)                                 # MISSING: obj may already be freed -> UAF
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/vmms crash'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 / -VMMS anomalileri (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.

References