Skip to content

Hyper-V NT Kernel Integration VSP heap overflow EoP, exploited (CVE-2025-21333)

Hyper-V NT Kernel Integration VSP driver'ında (vkrnlintvsp.sys) unprivileged bir local kullanıcının SYSTEM'e kadar sürebileceği bir heap-based buffer overflow; in the wild exploit edildi ve Ocak 2025'te patch'lendi.

Mechanism

Bug class / invariant

vkrnlintvsp.sys, Windows Sandbox ve Defender Application Guard gibi lightweight, container-style VM'leri destekleyen bir Virtualization Service Provider olan NT Kernel Integration VSP'dir. Public analiz (pwnfuzz Labs breakdown) defect'i security-descriptor handling routine'i VkiRootAdjustSecurityDescriptorForVmwp()'a yerleştirir. Invariant, kernel copy'leri için evrensel olandır: destination allocation, kopyalanan veri için boyutlandırılmış olmalı ve user input'tan türetilen herhangi bir size doğrulanmalıdır.

Bug klasik bir heap-based buffer overflow'dur (CWE-122). Routine user-supplied bir SECURITY_DESCRIPTOR işlerken, DACL'yi attacker-controlled Dacl->AclSize field'ından alınan bir length ile kopyalar — kavramsal olarak memmove(dst, Dacl, Dacl->AclSize)o size'ı destination'a karşı check etmeden. Şişirilmiş bir AclSize, bir Paged Pool allocation'ını overrun eder. Vulnerable routine, malicious security descriptor'ı içeren bir OBJECT_ATTRIBUTES taşıyan (undocumented) cross-VM event syscall yüzeyi (NtCreateCrossVmEvent / NtCreateCrossVmMutant) üzerinden low-privilege bir caller'dan ulaşılabilir. Bu da onu bir guest escape değil, bir local elevation of privilege yapar.

Bu, klasik bir out-of-bounds write ile aynı root-cause ailesindendir: pool'a controlled-length bir overflow, bir read/write primitive'ine şekillendirilir.

Walkthrough

Sadece kavramsal

Aşağıdaki adımlar public writeup'ları (pwnfuzz/Quarkslab breakdown ve MrAle98 PoC açıklaması) mantıksal seviyede özetler. Hiçbir offset, gadget chain ya da copy-paste exploit yeniden üretilmemiştir; pool-grooming ayrıntıları ve çalışan primitive atlanmıştır.

  1. Prerequisite. Cross-VM event syscall'ları ve vkrnlintvsp.sys'in user mode'dan ulaşılabilir olması için Windows Sandbox / NT Kernel Integration VSP özelliği mevcut olmalıdır.
  2. Overflow'u tetikle. Saldırgan, security descriptor'ı oversized bir AclSize'a sahip bir DACL taşıyan bir OBJECT_ATTRIBUTES ile cross-VM event creation path'ini çağırır ve unchecked copy'nin bir Paged Pool allocation'ını overflow etmesine neden olur (public PoC, onlarca KB mertebesinde, yalnızca kısmen kontrol edilebilen bir overflow olduğunu not eder).
  3. Komşu object'leri groom et. Overflow, paged pool'a yerleştirilen WNF (Windows Notification Facility) state-data object'lerine yönlendirilir ve komşu bir victim object'i corrupt eder.
  4. Bir I/O ring'e pivot et. Corrupt edilmiş WNF entry'leri free edilip yeniden allocate edilir; böylece saldırgan bir I/O ring'in registered-buffer array'inin bir entry'sini (_IOP_MC_BUFFER_ENTRY, pool tag IrRB) kontrol eder ve onu attacker user-space belleğine yönlendirir.
  5. Arbitrary read/write. I/O ring read/write operasyonları submit etmek daha sonra attacker-controlled buffer entry'sini dereference eder ve controlled kernel read/write verir — bu da SYSTEM'e escalate edilir.
The unchecked copy (illustrative pseudo-logic)
# vkrnlintvsp.sys security-descriptor handling (conceptual)
dst = ExAllocatePool(PagedPool, expected_size)
# MISSING: validate Dacl->AclSize <= expected_size
memmove(dst, Dacl, Dacl->AclSize)   # attacker-inflated AclSize -> pool overflow

Detection

Host / telemetry sinyalleri

  • Tuhaf caller'lar tarafından sandbox-driver kullanımı: Windows Sandbox / WDAG olmayan, cross-VM event yüzeyini açan ya da vkrnlintvsp.sys'e dokunan path'leri yükleyen process'ler.
  • Paged-pool corruption bugcheck'leri: BAD_POOL_HEADER / pool-corruption crash'leri; lab/repro'da vkrnlintvsp.sys üzerinde Driver Verifier + Special Pool'u etkinleştirin.
  • I/O ring abuse heuristic'leri: Pool grooming sonrası alışılmadık NtSubmitIoRing / I/O ring registered-buffer aktivitesi; IoRing object manipülasyonu üzerine EDR telemetry.
  • WNF anomalileri: WNF state-data object'lerinin kitlesel free/realloc'u, bu ve benzeri pool exploit'leri için bilinen bir grooming sinyalidir.
  • Known-exploited status: Microsoft, CVE-2025-21333'ü release'te in the wild exploit edildi olarak işaretledi — patch'lenmemiş host'larda hunting'i önceliklendirin.

Mitigation

Patch & hardening

  • Ocak 2025 patch'lerini uygula. Microsoft CVE-2025-21333'ü Ocak 2025 Patch Tuesday'de düzeltti; in the wild exploit edildiği için patch'lemek acildir.
  • Feature surface'i azalt: Windows Sandbox / Defender Application Guard / container özelliklerine ihtiyaç yoksa, bunları devre dışı bırakmak vulnerable syscall'ların ve driver'ın erişilebilirliğini kaldırır.
  • Kernel exploit-mitigation'larını açık tut: HVCI/VBS, kernel CFG ve pool integrity korumaları, overflow'u güvenilir read/write'a çevirmenin maliyetini yükseltir.
  • Least privilege + EDR: Hassas host'larda local code execution'ı kısıtlayın ve yukarıdaki I/O ring / WNF grooming pattern'lerinin EDR kapsamına güvenin.

References