Skip to content

Parallels Desktop WinAppHelper improper access control LPE (CVE-2021-34864)

Low-privileged bir guest process, düzgün access control'den yoksun olan WinAppHelper bileşenine ulaşıp hypervisor'ın context'ine privilege escalation yapabiliyordu.

Mechanism

Note

Parallels Tools, host (macOS) ile guest OS arasında bir iletişim proxy'si gibi davranır ve guest Windows uygulamalarını başlatma ve entegre etme gibi "coherence" feature'larını destekler. WinAppHelper bileşeni o guest<->host tesisatının bir parçasıdır ve bir IPC channel (named-pipe / local endpoint) üzerinden erişilebilir.

Kırılan invariant o endpoint üzerindeki access control'dür: helper, isteyenin yetkili olduğunu yeterince doğrulamadan IPC channel'ında gelen isteklere güvendi. ZDI advisory'sine göre, "the issue results from the lack of proper access control." Guest içindeki low-privileged bir process WinAppHelper'a bağlanıp onu sürebildiği için, channel'ın açtığı privileged işlevselliği invoke edebiliyordu. ZDI, bir saldırganın "escalate privileges and execute arbitrary code in the context of the hypervisor" yapabildiğini belirtir — yani eksik authorization check'i, low-trust bir guest principal'ının daha yüksek privileged Parallels bileşen sınırına geçmesine izin veren şeydir.

Walkthrough

Bu bir Pwn2Own 2021 girişiydi (ZDI-21-1000), Sunjoo Park'a (grigoritchy) atfedildi. Burada yalnızca üst seviye, herkese açık advisory şekli verilir — silahlandırılmış hiçbir ayrıntı yok:

  1. Bir saldırgan önce guest içinde low-privileged kod çalıştırma yeteneğini elde eder (belgelenmiş ön koşul).
  2. O kod, Parallels Tools tarafından açılan WinAppHelper IPC endpoint'ine bağlanır.
  3. Endpoint caller'ı düzgün authenticate/authorize etmediği için, saldırgan privileged helper işlevselliğini çalıştıran istekler gönderir.
  4. Access control eksikliği escalation'a izin verir; advisory hypervisor context'inde code execution'ı tanımlar.
Fix shape (conceptual)

Parallels sorunu Parallels Desktop 17'de ele aldı (eski sürümler için herkese açık raporlanan geçici/"inconvenient" bir mitigation ile). Bu bug sınıfı için savunma pattern'i, privileged bir IPC endpoint'inde her caller'ı authenticate ve authorize etmek ve channel'a örtük güvenmek yerine guest tarafı bir client'ın isteyebileceği operation'ları kısıtlamaktır.

Warning

Yalnızca kavramsal giriş. Bu, bir IPC endpoint'i üzerinde bir access-control / improper-authorization açığıdır (CWE-284 sınıfı), bir memory-corruption primitive'i değil — named-pipe vektörü ve "hypervisor context" çerçevelemesi doğrudan herkese açık ZDI advisory'sinden gelir; tam internal'ler bilinçli olarak atlanmıştır.

Detection

  • Parallels Desktop çalıştıran host'larda, kurulu sürümü envanterle; 16.x ve öncesi (pre-17) ilgili maruziyet penceresidir.
  • Guest tarafı process davranışını, low-privilege process'lerden Parallels Tools / WinAppHelper IPC endpoint'lerine yapılan beklenmedik bağlantılar ve böyle bir IPC aktivitesini izleyen privilege geçişleri için izle.
  • Endpoint/host telemetrisi: beklenmedik child process'ler spawn eden ya da normal coherence-feature kullanımıyla tutarsız eylemler gerçekleştiren Parallels helper process'lerinde uyar.
  • Keyfi low-priv kod çalıştırabilen herhangi bir guest'i bunu deneyebilecek olarak ele al; tespit en iyi sürüm envanteriyle eşleştirilir.

Mitigation

  • Patch / upgrade. Parallels Desktop'ı CVE-2021-34864'ü ele alan sürüm 17 veya sonrasına güncelle. Hemen yükseltilemeyen sürümler için vendor'un geçici rehberliğini uygula.
  • Guest güvenini azalt. Parallels Tools kurulu guest'lerde untrusted kod çalıştırma; gerekmediği yerde coherence/shared-application entegrasyon feature'larını devre dışı bırak.
  • IPC'yi kısıtla. Yapılandırılabilir olduğu yerde, hangi guest principal'larının host-integration helper'larına ulaşabileceğini sınırla.
  • Guest'leri patch'li tut ki bir saldırgan exploit'in varsaydığı low-privilege dayanağını kolayca elde edemesin.

References