Skip to content

VMware ESXi OpenSLP heap-overflow remote RCE (ESXiArgs)

VMware ESXi ile gelen OpenSLP servisindeki network'ten erişilebilir bir heap overflow (CVE-2021-21974): TCP/UDP 427 üzerindeki kötü niyetli bir SLP mesajı bir host heap buffer'ını taşırarak hypervisor üzerinde remote code execution verir — ESXiArgs ransomware kampanyasının kitlesel olarak exploit ettiği bug.

Mechanism

Note

ESXi, host management domain'inde — herhangi bir guest'in dışında — çalışan gömülü bir OpenSLP daemon'ı (slpd) aracılığıyla port 427'de Service Location Protocol (SLP) directory/agent'ını açar. SLP mesajları length-prefix'li wire structure'larıdır. Isolation açısından ilgili invariant şudur: daemon, kopyalamadan önce attacker-sağlanan her length field'ını içine parse ettiği heap buffer'ın size'ına karşı doğrulamalıdır. CVE-2021-21974 klasik bir CWE-787 out-of-bounds write'tır: hazırlanmış bir SLP mesajı, servisin güvendiği oversized bir length taşır, dolayısıyla copy allocate edilmiş heap chunk'ı aşıp komşu host heap metadata'sına/object'lerine yazar. slpd bir host tarafı network servisi olduğu (guest device backend'i değil) için, burada geçilen boundary guest → host değil, network attacker → host hypervisor'dır. Aynı network segment'inde port 427'ye erişimi olan bir attacker credential'a ihtiyaç duymaz.

Bu, device/protocol backend'lerindeki diğer length-field memory-safety hatalarının SLP-parsing analogudur; guest tarafı device-emulation pattern'i için VMware vmxnet3 integer overflow ile karşılaştırın.

Walkthrough

Public, patch'li sorun (VMSA-2021-0002). Atıf yapılan advisory'lerden kavramsal reproduction path'i — weaponize edilmiş exploit yok:

  1. SLP servisi erişilebilir bir ESXi host tespit edin:
    nmap -p 427 -sV <esxi-host>          # 427/tcp open  svrloc
    
  2. Meşru protokol, header'ları string ve list length'leri bildiren SLP attribute/service-request PDU'larını kullanır.
  3. Kötü niyetli bir PDU, daemon'ın yer ayırdığı veriden daha büyük bir length bildirir; kontrol edilmeyen copy slpd içindeki heap chunk'ı taşırır.
  4. Sonraki SLP allocation'larının heap grooming'i komşu object'leri şekillendirir, böylece overflow bir control structure'ı corrupt eder ve host servisinde execution'ı yönlendirir.

Exploit olmayan bir girişimde gözlemlenebilir: anormal 427 trafiğiyle korele bir slpd crash / watchdog restart. ESXiArgs kampanyasında post-exploitation adımı datastore'lardaki VM dosyalarını (.vmdk, .vmx) encrypt etti.

Warning

Bug sınıfı için belgelenmiş, tarihsel, patch'li güvenlik açığı. Exploit geometrisi ya da shellcode sağlanmamıştır.

Detection

  • Network: 427/tcp(udp)'ye beklenmedik inbound bağlantılar; oversized SLP length field'ları için IDS signature'ları (vendor'lar ESXiArgs/CVE-2021-21974 kuralları yayınladı).
  • Host: slpd crash/restart'ları; ESXiArgs dalgası sırasında datastore'larda ransomware artifact'larının (encrypt, .args, ransom note'ları) oluşturulması.

Mitigation

  • Patch'li build'leri uygulayın: ESXi 7.0 ESXi70U1c-17325551, 6.7 ESXi670-202102401-SG, 6.5 ESXi650-202102101-SG (VMSA-2021-0002).
  • Patch geciktiğinde workaround: ESXi'de SLP servisini devre dışı bırakın (/etc/init.d/slpd stop, policy'yi off yapın) ve port 427'yi firewall'layın.
  • Management ağını 427 asla güvenilmeyen segment'lere açılmayacak şekilde kısıtlayın.

References