A rusty lock on the vault door — the flaws are unglamorous, but the vault is a hypervisor from a decade ago
Tenable plugin 105486 rolls up VMSA-2017-0021 and VMSA-2018-0002 against ESXi 5.5, 6.0, and 6.5. The bundle covers four CVEs: CVE-2017-4940 (stored XSS in the ESXi Host Client), CVE-2017-4941 (stack overflow via an authenticated VNC session that yields code execution *inside* the guest VM — not a host escape), and CVE-2017-5715 / CVE-2017-5753 (Spectre v2 and v1 microcode/hypervisor mitigations). Fixes shipped in ESXi 6.5 Patch 02 (build 7526125), 6.0 U3e (build 7504637), and 5.5 U3g (build 7504623).
Vendor severity of MEDIUM is roughly fair *for the individual bugs* — none of these is a clean unauthenticated guest-to-host escape, and the Spectre pair is a side-channel mitigation, not an RCE. But the vendor label misses the real question: the affected products are all end-of-general-support. ESXi 5.5 EOL'd in September 2018, 6.0 in March 2020, 6.5 in October 2022. If plugin 105486 is firing in 2026, the finding you're chasing is not CVE-2017-4941 — it's *why do we still have ESXi 6.5 hosts in production*. That reframes it as HIGH.
4 steps from start to impact.
Land on an unsupported ESXi host
- Management network access to the ESXi host
- Host not upgraded past October 2022
- Well-run environments segment vMotion/mgmt vLANs off user networks
- vCenter and ESXi mgmt typically behind jump host + MFA
Abuse CVE-2017-4941 via VNC to code-exec inside a guest
.vmx) can trigger the stack overflow and gain code execution *in the guest*. This is *not* an escape to the hypervisor — it's a way to compromise a VM you can already console to. Weaponized proof-of-concepts exist in the xairy/vmware-exploitation reference collection but are not point-and-click.RemoteDisplay.vnc.enabled = TRUEon target VM, or vSphere VNC console rights- Network reach to VNC port on the VM
- VNC on VMs is disabled by default
- vSphere console access is normally gated by role-based access
- Impact is contained to the VM — nothing new for someone who already has console rights
RemoteDisplay.vnc.enabled; vCenter audit logs record console sessionsAbuse CVE-2017-4940 stored XSS in ESXi Host Client
https://<esxi>/ui/) can hijack another admin's browser session. Requires an admin to browse the poisoned page. Realistic only as a lateral-movement helper after a low-privilege ESXi account is already burned.- Low-priv account on ESXi Host Client
- Second admin browses affected UI element
- Host Client is not typically exposed beyond ops teams
- Modern browsers/CSP reduce XSS payload utility
Side-channel data leakage via CVE-2017-5715 / 5753 (Spectre)
- Co-tenant VM under attacker control
- Long-running observation window
- Un-microcoded CPU
- Modern CPUs and hypervisors ship microcode + IBPB/IBRS mitigations
- Extremely slow data exfiltration, noisy in profilers
The supporting signals.
| CVE bundle | CVE-2017-4940 (XSS), CVE-2017-4941 (VNC stack overflow → guest RCE), CVE-2017-5715 (Spectre v2), CVE-2017-5753 (Spectre v1) |
|---|---|
| Vendor advisories | VMSA-2017-0021, VMSA-2018-0002 |
| In-the-wild status | None of the four CVEs in this bundle are on CISA KEV. The hosts themselves are frequently ransomware targets, but via *later* ESXi CVEs (CVE-2021-21974, CVE-2020-3992, CVE-2024-37085) |
| EPSS | CVE-2017-4941 ~0.5%, CVE-2017-4940 ~0.4%, Spectre pair effectively noise (<0.2%). Individually low; collectively irrelevant given host EOL status |
| PoC availability | Spectre PoCs are public and canonical. CVE-2017-4941 discussed in the xairy/vmware-exploitation reference set; no maintained Metasploit module |
| Affected builds | ESXi 5.5 < build 7504623, 6.0 < 7504637, 6.5 < 7526125 — all three lines are EOL as of 2026 |
| Fixed builds | 5.5 U3g (7504623), 6.0 U3e (7504637), 6.5 Patch 02 (7526125). Real fix in 2026 is to move to ESXi 7.0 U3 or 8.0 U2+ |
| Exposure data | Shodan shows ~2k publicly exposed ESXi 6.5 instances globally as of mid-2026; most compromises pivot through mgmt-net, not direct internet exposure |
| Disclosure | VMSA-2017-0021 published 2017-12-19; VMSA-2018-0002 (Spectre) published 2018-01-04 |
| Reporter | Nico Golde & Ralf-Philipp Weinmann (Comsecuris) credited for CVE-2017-4941; Google Project Zero for Spectre |
noisgate verdict.
The individual CVEs are unremarkable — authenticated VNC RCE-in-guest, XSS, and Spectre — but the plugin only fires against ESXi 5.5/6.0/6.5, which are all end-of-support hypervisors. The decisive factor is the role multiplier: an unsupported hypervisor is missing 8+ years of subsequent patches and is the canonical entry point for ESXiArgs/Akira/Scattered Spider ransomware campaigns.
Why this verdict
- Role multiplier — hypervisor: ESXi is a canonical high-value-role component; a chain that ends in host compromise ends in *fleet* compromise (every guest, every snapshot, every datastore). The floor for a hypervisor finding is HIGH.
- Vendor MEDIUM understates the deployment reality: the plugin's affected-version set is entirely EOL. Any host firing this in 2026 is also carrying CVE-2020-3992, CVE-2021-21974, CVE-2024-37085 — bugs that *are* KEV-listed and actively used by ransomware crews.
- Individual CVE friction is real: CVE-2017-4941 needs authenticated VNC and only yields *in-guest* code exec; XSS needs a second admin to click; Spectre needs co-tenancy and is impractical. That's what keeps this from being CRITICAL on the bundle alone.
- Not on KEV, EPSS is low: so this is not an emergency *because of these specific CVEs*. It is an emergency *because the box is unsupported*.
Why not higher?
None of the four CVEs is a clean unauthenticated guest-to-host escape, none are KEV-listed, and none have wormable public exploits. CRITICAL is reserved for hypervisor bugs where the chain provably lands host-code-exec from an unprivileged guest (e.g., CVE-2024-22252/22253).
Why not lower?
MEDIUM would be defensible if this plugin were firing against a *supported* build with the fix simply skipped. It is not — it fires only on EOL versions, and an EOL hypervisor is a fleet-scale liability regardless of the specific CVE list on the report.
What to do — in priority order.
- Isolate ESXi management network — Restrict TCP/443, /902, /5988-5989 on ESXi mgmt vmk interfaces to a dedicated jump-host subnet, enforce MFA on that jump host. Complete within 30 days per the noisgate HIGH mitigation SLA.
- Disable VNC on all VMs — Remove
RemoteDisplay.vnc.enabled = TRUEandRemoteDisplay.vnc.portfrom every.vmx. This kills the CVE-2017-4941 vector entirely and is a hardening baseline anyway. Push via PowerCLI within 30 days. - Enable ESXi Lockdown Mode (Strict) — Cuts off direct DCUI/SSH/Host Client access, forces all admin through vCenter with audit trail. Deploy across the fleet within the 30-day mitigation window.
- Plan migration off ESXi 5.5/6.0/6.5 — The only durable fix is upgrading to a supported line (7.0 U3 or 8.0 U2+). Land the migration plan inside the noisgate HIGH remediation SLA of ≤ 180 days.
- Snapshot + immutable backup of guest data — In case the host is already compromised by a later CVE, an offline immutable backup means ESXiArgs-style encryption is recoverable. Verify restore tests during the migration window.
- Guest-OS EDR alone — a hypervisor compromise sees under the guest kernel, so in-guest agents will not report the escape
- Web Application Firewall in front of ESXi Host Client — the exploitation vectors (VNC, Spectre, XSS to an internal admin) don't traverse a WAF path
- Microcode updates on the physical host — mitigate Spectre but do nothing for the VNC or XSS bugs in this bundle
- Perimeter firewall rules — most exploitation of unsupported ESXi happens post-initial-access on the internal mgmt network, not from the internet
Crowdsourced verification payload.
Run on an auditor workstation with PowerCLI 12+ installed and a vCenter read-only account. Invoke as: .\Check-VMSA-2017-0021.ps1 -vCenter vcsa.corp.local. Reports each ESXi host as VULNERABLE / PATCHED / UNKNOWN based on build number against the VMSA-2017-0021 / VMSA-2018-0002 fixed builds.
#requires -Modules VMware.PowerCLI
# Check-VMSA-2017-0021.ps1
# Reports ESXi hosts vulnerable to VMSA-2017-0021 / VMSA-2018-0002 bundle (Tenable 105486)
param(
[Parameter(Mandatory=$true)][string]$vCenter
)
# Fixed builds per VMware KB (see VMSA-2017-0021 / VMSA-2018-0002)
$fixedBuilds = @{
'5.5.0' = 7504623
'6.0.0' = 7504637
'6.5.0' = 7526125
}
try {
Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -Confirm:$false | Out-Null
Connect-VIServer -Server $vCenter -ErrorAction Stop | Out-Null
} catch {
Write-Host "UNKNOWN: cannot connect to $vCenter - $_"
exit 2
}
$anyVuln = $false
foreach ($h in Get-VMHost) {
$ver = $h.Version
$build = [int]$h.Build
if ($fixedBuilds.ContainsKey($ver)) {
if ($build -lt $fixedBuilds[$ver]) {
Write-Host ("VULNERABLE: {0} ESXi {1} build {2} (< fixed build {3}) - also EOL" -f $h.Name,$ver,$build,$fixedBuilds[$ver])
$anyVuln = $true
} else {
Write-Host ("PATCHED (still EOL train): {0} ESXi {1} build {2}" -f $h.Name,$ver,$build)
}
} elseif ($ver -match '^(7|8)\.') {
Write-Host ("PATCHED (supported line): {0} ESXi {1} build {2}" -f $h.Name,$ver,$build)
} else {
Write-Host ("UNKNOWN: {0} ESXi {1} build {2}" -f $h.Name,$ver,$build)
}
}
Disconnect-VIServer -Confirm:$false -Force | Out-Null
if ($anyVuln) { exit 1 } else { exit 0 }
If you remember one thing.
Sources
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.