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:
- SLP servisi erişilebilir bir ESXi host tespit edin:
- Meşru protokol, header'ları string ve list length'leri bildiren SLP attribute/service-request PDU'larını kullanır.
- Kötü niyetli bir PDU, daemon'ın yer ayırdığı veriden daha büyük bir length
bildirir; kontrol edilmeyen copy
slpdiçindeki heap chunk'ı taşırır. - 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:
slpdcrash/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.7ESXi670-202102401-SG, 6.5ESXi650-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.