Skip to content

Hyper-V Reverse-RDP (Poisoned RDP) synthetic device attack

Poisoned bir RDP server gibi davranan malicious bir guest, Hyper-V Manager'ın enhanced-session channel'ından host'a kaçmak için host RDP client'ındaki bir path-traversal'ı (CVE-2019-0887) exploit eder.

Mechanism

Note

Hyper-V Manager bir guest'e ulaşmak için custom bir display protocol kullanmaz. Bir administrator "Enhanced Session Mode" ile bir VM console'u açtığında, host guest içindeki bir synthetic RDP endpoint'ine (VMBus üzerinden loopback), sıradan remote desktop'lar için kullanılan aynı mstscax.dll RDP client'ı kullanarak bağlanır. Bu da host'u RDP client ve guest'i RDP server yapar — olağan trust yönünün tersi, dolayısıyla "Reverse RDP".

Check Point'in araştırması Windows RDP client'ının clipboard file-copy verisini yanlış ele aldığını gösterdi. Clipboard sharing etkinken, bir RDP server kopyalanacak dosyaları tanımlayan bir FileGroupDescriptorW clipboard format'ı push edebilir. Client o dosya adlarını canonicalize etmeden yazıyordu, bu yüzden ..\ path-traversal sequence'ları içeren server-supplied bir ad, attacker-controlled dosyaları amaçlanan drop dizininin dışına — örneğin bir Startup klasörüne — yazabilir ve client üzerinde code execution verebilirdi.

Isolation boundary aşılır çünkü guest, enhanced-session channel'ının RDP-server tarafını kontrol eder. Compromise edilmiş bir guest poisoned clipboard içeriği servis eder; host'un mstscax.dll'i bunu host privilege'leriyle işler, böylece bir guest-to-host write primitive bir guest-to-host escape'e dönüşür. Microsoft bunu başlangıçta standalone bir RDP-client bug'ı olarak ele aldı; Check Point Hyper-V isolation boundary bypass'ini gösterdikten sonra Microsoft CVE-2019-0887 patch'ini yayımladı.

Warning

Bu yalnızca bir administrator clipboard redirection etkin untrusted bir guest'e bir Enhanced Session console'u açtığında erişilebilir. Tehlike, rutin admin eylemlerinin (bir VM console açma) trigger hâline gelmesidir.

Walkthrough

Kavramsal reproduction path'i public Check Point write-up'ını yansıtır. Malicious bir guest, host bir dosyayı paste/drag-drop ettiğinde crafted bir clipboard FileGroupDescriptorW blob'u inject eden bir RDP server çalıştırır.

Traversal yüklü bir file descriptor adı (illustrative):

FileGroupDescriptorW entry:
  cFileName = "..\\..\\..\\..\\..\\Users\\<admin>\\AppData\\Roaming\\Microsoft\\
               Windows\\Start Menu\\Programs\\Startup\\payload.exe"

Patch öncesi, vulnerable client decode path'i dosyayı ham, server-supplied relative ad ile yazıyordu:

Vulnerable vs. patched decode (conceptual, from the write-up)
// Pre-patch CFormatDataPacket::DecodeFormatData()
//   builds destination path by concatenating the drop dir with the
//   server-supplied cFileName -- no canonicalization -> traversal escapes.

// Post-patch (CVE-2019-0887): each name is canonicalized and compared.
canon = PathCchCanonicalize(serverFileName);
if (canon != expectedJoin(dropDir, serverFileName))
    reject();   // "." / ".." sequences now fail the validity check

Vulnerable bir host'ta beklenen etki: Operatörün almayı hiç amaçlamadığı bir dosya privileged bir konuma (örn. host kullanıcısının Startup klasörü) düşer ve bir sonraki logon'da çalışır — VM dışında code execution.

Detection

  • Hyper-V host'ları: Bir Enhanced Session console bağlantısının hemen ardından user profile Startup, AppData\Roaming\Microsoft\Windows\Start Menu ya da diğer auto-run path'leri altında beklenmedik dosya oluşturulmasını izleyin.
  • RDP clipboard channel anomalileri: .. sequence'ları içeren clipboard FileGroupDescriptorW transfer'leri anormaldir; EDR/clipboard-redirection telemetry, transfer edilen dosya adlarındaki traversal karakterlerini işaretleyebilir.
  • vmconnect.exe / mstsc enhanced-session aktivitesini, synthetic adapter üzerinde bir RDP-server listener expose eden bir guest'e karşı ilişkilendirin.

Mitigation

  • CVE-2019-0887'yi düzelten Temmuz 2019 cumulative update'ini uygulayın (clipboard decode path'ine PathCchCanonicalize tabanlı validation ekler).
  • Untrusted guest'lere bağlanırken Enhanced Session Mode için clipboard/drive redirection'ı devre dışı bırakın ya da Basic Session Mode kullanın.
  • Untrusted bir VM'e bir Enhanced Session console açmayı privileged bir eylem olarak ele alın; untrusted tenant VM'lerinin yönetimini ayırın.

References