← Back to Feed CACHED · 2026-09-13 11:12:04 · CACHE_KEY CVE-2023-20867
CVE-2023-20867 · CWE-287 · Disclosed 2023-06-13

A fully compromised ESXi host can force VMware Tools to fail to authenticate host-to-guest operations

ASSESSED — NOISGATE V0.5
Vendor
Reassessed
Verdict:
Do you agree?
01 · The Real Story

The skeleton key that lets a burglar who already owns the building walk into every apartment without tripping a single alarm

CVE-2023-20867 is an authentication bypass in the vgauth module of VMware Tools (versions 10.3.0 through 12.2.4) and open-vm-tools. When an attacker has root-level access to an ESXi hypervisor, they can invoke Guest Operations — StartProgramInGuest, InitiateFileTransferToGuest, InitiateFileTransferFromGuest — against any guest VM running VMware Tools without authenticating to the guest OS. Critically, these operations generate no logging events by default on the guest, meaning EDR and SIEM see nothing. The fix is VMware Tools 12.2.5+ or equivalent distro backports (RHEL via RHSA-2023:3944, Debian 11 via 2:11.2.5-2+deb11u2, Ubuntu via 12.2.5-1+).

VMware rated this LOW (3.9) because the CVSS vector requires the attacker to already have full root on the ESXi host — a legitimately steep prerequisite. But that framing ignores the operational reality: ESXi hosts *are* being compromised at scale (CVE-2023-34048, CVE-2021-21974, ESXiArgs ransomware), and once one falls, CVE-2023-20867 is the mechanism that converts a single-host hypervisor compromise into silent, unlogged access to every guest VM on that host. UNC3886, a Chinese state-sponsored espionage group tracked by Mandiant, weaponized this as a zero-day since at least late 2021 — over 18 months before disclosure. The vendor severity dramatically underweights the blast radius and real-world exploitation context.

"Vendor says LOW but a nation-state APT weaponized this for silent fleet-wide VM compromise since 2021"
02 · The Attack Path

5 steps from start to impact.

STEP 01

Compromise ESXi host

The attacker gains root access to an ESXi hypervisor via a separate vulnerability (e.g., CVE-2023-34048 unauthenticated RCE in vCenter → credential harvesting → ESXi access via vpxuser, or direct exploitation of ESXi OpenSLP/SSH). This is the hardest step and the primary gate for the entire chain. UNC3886 used CVE-2023-34048 in vCenter to harvest vpxuser credentials and pivot to connected ESXi hosts.
Conditions required:
  • Root-level access to ESXi host
  • Separate vulnerability or credential compromise to reach ESXi
Where this breaks in practice:
  • Requires a distinct, often critical-severity exploit chain to reach ESXi root
  • ESXi management interfaces should be on isolated VLAN, not reachable from user networks
  • MFA and vCenter access controls limit credential theft paths
Detection/coverage: vCenter logs show vpxuser login anomalies — look for non-VMware user agents like pyvmomi Python/3.x or unexpected PowerCLI strings. GreyNoise/Shodan show ~8,900 internet-exposed ESXi instances (down from 85K in 2023).
STEP 02

Identify target guest VMs

From the compromised ESXi host, the attacker enumerates all running guest VMs and confirms VMware Tools is installed and running. This is trivial — vim-cmd vmsvc/getallvms lists every VM, and VMware Tools status is visible via vim-cmd vmsvc/get.summary. Every enterprise VM typically has VMware Tools installed as standard practice.
Conditions required:
  • ESXi root shell (from step 1)
  • VMware Tools running on target guests (nearly universal)
Where this breaks in practice:
  • Virtually no friction — VMware Tools is installed on >95% of enterprise guest VMs
Detection/coverage: No guest-side detection for enumeration. ESXi hostd logs may show API calls but are rarely forwarded to SIEM.
STEP 03

Exploit CVE-2023-20867 to bypass guest authentication

The attacker uses the vgauth bypass to invoke Guest Operations without providing valid guest credentials. UNC3886 used a Python script that takes the vpxuser credentials and target command as parameters, calling the VIX API to execute StartProgramInGuest (VIX code 185). The vgauth module fails to validate the authentication token, accepting the host-level privilege as sufficient.
Conditions required:
  • Unpatched VMware Tools (<12.2.5) on the target guest
  • ESXi root access (from step 1)
Where this breaks in practice:
  • Patched VMware Tools (12.2.5+) blocks this entirely
  • Organizations that aggressively patch guest-side tooling are protected
Detection/coverage: No default logging on the guest VM. The vmsvc.log is disabled by default even with VMware Tools installed. EDR tracks process creation from vmtoolsd.exe/vmtoolsd but does NOT track file read operations. Without enabling debug-level vmsvc logging, this step is invisible.
STEP 04

Execute commands and exfiltrate data from guests

With authenticated Guest Operations, the attacker runs arbitrary commands as root/SYSTEM on each guest VM: credential harvesting (/etc/shadow, SAM, LSASS), lateral movement tool deployment, and file exfiltration via InitiateFileTransferFromGuest. UNC3886 deployed backdoored SSH clients and the MEDUSA credential harvester. All file transfers occur over the VMware backplane, never touching the guest's network stack.
Conditions required:
  • Successful auth bypass (step 3)
  • Target commands/tools prepared
Where this breaks in practice:
  • Application-level controls (e.g., application whitelisting) on guests may block unknown binaries
  • LSASS protections (Credential Guard) limit credential theft on Windows guests
Detection/coverage: EDR may detect new process spawning from vmtoolsd.exe/vmtoolsd parent process, but file read exfiltration is invisible to most EDR. Network-based detection sees nothing — transfers use VMware's internal channel.
STEP 05

Establish persistent VMCI backdoor

UNC3886 deployed VIRTUALPITA and VIRTUALPIE backdoors communicating over VMCI (Virtual Machine Communication Interface) sockets — a direct host-to-guest channel that bypasses all network monitoring. VMCI sockets support a 32-bit port range (0–2,147,483,647), making port scanning impractical. The backdoor persists across reboots and provides ongoing C2 invisible to network-layer defenses.
Conditions required:
  • Code execution on guest (from step 4)
  • VMCI driver present (standard with VMware Tools)
Where this breaks in practice:
  • Application whitelisting may block the backdoor binary
  • Host-based integrity monitoring could detect new listening sockets
Detection/coverage: Run lsof -A on Linux guests to identify processes listening on SOCKET_VMCI type sockets. On Windows, look for unusual vmtoolsd child processes. No standard SIEM integration exists for VMCI traffic.
03 · Intelligence Metadata

The supporting signals.

In-the-Wild StatusActively exploited by UNC3886 (Chinese state-sponsored APT) since at least late 2021, per Mandiant/Google Threat Intelligence. Targets include US defense, technology, and telecom organizations in US and Asia-Pacific regions.
CISA KEVListed — added 2023-06-23, remediation due date 2023-07-14. CISA KEV Catalog
PoC AvailabilityNo public standalone PoC exploit repository identified. UNC3886 used custom Python scripts leveraging the VIX/Guest Operations API with harvested vpxuser credentials. The exploitation technique is well-documented in Mandiant's blog posts, lowering the bar for reproduction by skilled attackers.
EPSS0.1353 (13.53%) — elevated for a LOW-rated CVE, reflecting the KEV listing and real-world exploitation signal.
CVSS VectorCVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:C/C:L/I:L/A:N (3.9) — Scope: Changed (host→guest boundary cross). The LOW C/I ratings undercount the operational impact: silent command execution on every guest VM is not 'low' confidentiality/integrity impact in practice.
Affected VersionsVMware Tools 10.3.0 – 12.2.4 (all platforms). open-vm-tools prior to 12.2.5. Essentially every VMware guest VM deployed before mid-2023 unless patched.
Fixed VersionsVMware Tools 12.2.5+. Distro backports: RHEL (RHSA-2023:3944 through :3950), Debian 11 (2:11.2.5-2+deb11u2), Debian 12 (2:12.2.0-1+deb12u1), Ubuntu (12.2.5-1+). Fedora: dnf upgrade --advisory FEDORA-2023-20b6ac4b6c.
Exposure / ScanningShodan shows ~8,900 internet-facing ESXi instances (down from ~85,000 in Feb 2023 per Forescout). However, internet exposure of ESXi is NOT required — this is a post-compromise, internal-only attack path. Every unpatched VMware Tools instance behind the firewall is in scope.
Disclosure2023-06-13 (VMware advisory VMSA-2023-0013). Exploited as 0-day by UNC3886 since late 2021, approximately 18 months before public disclosure.
Reporting ResearcherMandiant (now Google Threat Intelligence), in collaboration with VMware Product Security. Research published by Mandiant researchers tracking UNC3886 espionage campaigns.
04 · The Call

noisgate verdict.

Final Verdict
UPGRADED to HIGH (7.5/10)

The single most decisive factor is the role multiplier — VMware Tools runs on every guest VM in a VMware environment, and the affected hypervisor context means successful exploitation converts a single ESXi host compromise into silent, unlogged access to potentially hundreds of guest VMs including domain controllers, databases, and backup servers. Active nation-state exploitation (KEV-listed, UNC3886 since 2021) confirms this is not theoretical — it is a proven fleet-compromise amplifier in real campaigns against defense and telecom targets.

HIGH Exploitation in the wild and threat actor attribution (Mandiant primary source)
HIGH Affected version range and patch availability
MEDIUM Current patch adoption rate across enterprise VMware fleets

Why this verdict

  • Active nation-state exploitation: UNC3886 weaponized this as a zero-day since late 2021, 18 months before disclosure. CISA KEV-listed. This is not a theoretical risk — it is a proven espionage tool targeting US defense and telecom.
  • Role multiplier: VMware Tools is installed on >95% of enterprise VMs. The affected component sits at the hypervisor-to-guest trust boundary. Successful exploitation from a compromised ESXi host grants command execution on *every* guest VM — including domain controllers, production databases, backup servers, and CI/CD infrastructure. Blast radius is fleet-scale (host → all guests → potentially domain-scale). This floors the verdict at HIGH.
  • Stealth multiplier: No default logging on guest VMs. EDR does not track file read operations from vmtoolsd. Network monitoring sees nothing (VMware backplane / VMCI sockets). This dramatically extends attacker dwell time — UNC3886 operated undetected for 18+ months.
  • Prerequisite friction (partial downward pressure): Requires full root on ESXi, which is a significant gate. But ESXi compromises are happening — CVE-2023-34048, CVE-2021-21974, ESXiArgs ransomware campaigns demonstrate this prerequisite is routinely met by both nation-states and ransomware operators.
  • CVSS undercount: The vector rates C:L/I:L, but executing arbitrary commands as SYSTEM/root on every guest VM with no logging is operationally high-impact, not low-impact. The CVSS model fails to capture the multiplicative effect across all guests on a host.

Why not higher?

Not CRITICAL because the vulnerability itself does not provide initial access — it requires a separate, fully successful exploit chain to first compromise the ESXi host at root level. The CVE is a post-compromise amplifier, not a standalone entry point. If ESXi root access were easier or if the VMware Tools bug itself were remotely exploitable, this would be CRITICAL.

Why not lower?

Not MEDIUM or LOW because of three hard factors: (1) KEV-listed with confirmed active exploitation by a nation-state APT since 2021, (2) the role multiplier floors the verdict at HIGH — VMware Tools is canonically a hypervisor-context component where >10% of installs sit on hosts running high-value workloads, and (3) the stealth characteristics (no default logging, EDR blind spots, VMCI invisibility) mean this vulnerability dramatically amplifies the impact of any ESXi compromise that does occur.

05 · Compensating Control

What to do — in priority order.

  1. Enable debug-level vmsvc logging on all guest VMs immediately — Set vmsvc.level = debug and vmsvc.handler = file in VMware Tools configuration on every guest (Windows: C:\ProgramData\VMware\VMware Tools\tools.conf, Linux: /etc/vmware-tools/tools.conf). This is the only way to get visibility into Guest Operations exploitation. Deploy within the noisgate mitigation SLA of 30 days, but prioritize domain controllers and production databases within 7 days.
  2. Forward ESXi hostd and VM logs to SIEM — Configure vmx.log.destination = syslog-and-disk on all VMs and forward ESXi /var/log/hostd.log to your SIEM. Set log.keepOld = 20 minimum. Alert on vpxuser logins with non-standard user agents (anything other than VMware-client/X.X.X). Deploy within 30 days per noisgate mitigation SLA.
  3. Patch VMware Tools to 12.2.5+ on all guest VMs — This is the definitive fix. Prioritize VMs on ESXi hosts that are internet-adjacent or in less-trusted network zones. Use vCenter Update Manager for bulk deployment. Target completion within 180 days per noisgate remediation SLA for HIGH, but push critical infrastructure guests (DCs, backup servers) to 30 days.
  4. Isolate ESXi management interfaces on dedicated VLAN with strict ACLs — ESXi management (port 443, SSH) should only be reachable from a hardened jump host on a dedicated management VLAN. This reduces the attack surface for the prerequisite ESXi compromise. If not already in place, deploy within 30 days.
  5. Hunt for VMCI backdoors on existing guests — Run lsof -A on all Linux guests and review for SOCKET_VMCI type entries from non-VMware processes. On Windows, audit child processes of vmtoolsd.exe. Any unexpected VMCI listener is a high-confidence indicator of compromise. Execute hunt sweep within 7 days.
  6. Monitor for anomalous vmtoolsd child processes via EDR — Create EDR detection rules alerting on unusual child process trees from vmtoolsd.exe (Windows) or vmtoolsd (Linux). Common legitimate children are limited; any shell, PowerShell, or unknown binary is suspicious. Deploy detection rule within 30 days.
What doesn't work
  • Network-layer IDS/IPS — Guest Operations and VMCI socket communications traverse the VMware internal backplane, never touching the guest's network interface. Network monitoring tools (Zeek, Suricata, firewall logs) are completely blind to this attack path.
  • Standard guest OS audit logging — Windows Security Event Log and Linux auditd will see process creation but NOT the VMware Tools authentication bypass itself. Without vmsvc debug logging enabled, the initial exploitation is invisible.
  • Patching ESXi alone — The vulnerability is in VMware Tools (guest-side), not in ESXi. Patching the hypervisor does not fix this. You must patch VMware Tools inside every guest VM individually.
  • vCenter access controls / RBAC — Once the attacker has ESXi root (bypassing vCenter), vCenter-level permissions are irrelevant. The Guest Operations API is called directly on the ESXi host.
06 · Verification

Crowdsourced verification payload.

Run this script on each Linux guest VM (not on the ESXi host) as root or with sudo. It checks the installed open-vm-tools / VMware Tools version against the patched version. Example: sudo bash check_cve_2023_20867.sh

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/bin/bash
# CVE-2023-20867 VMware Tools Authentication Bypass Check
# Run on: Linux guest VMs (not ESXi hosts)
# Requires: root or sudo
# Outputs: VULNERABLE / PATCHED / UNKNOWN

set -euo pipefail

PATCHED_VERSION="12.2.5"
RESULT="UNKNOWN"

# Function to compare versions
version_gte() {
  printf '%s\n%s' "$1" "$2" | sort -V | head -n1 | grep -qx "$2"
}

# Check if VMware Tools / open-vm-tools is installed
if command -v vmware-toolbox-cmd &>/dev/null; then
  TOOLS_VERSION=$(vmware-toolbox-cmd -v 2>/dev/null | grep -oP '[0-9]+\.[0-9]+\.[0-9]+' | head -1)
  if [ -z "$TOOLS_VERSION" ]; then
    # Fallback: try vmtoolsd
    TOOLS_VERSION=$(vmtoolsd --version 2>/dev/null | grep -oP '[0-9]+\.[0-9]+\.[0-9]+' | head -1)
  fi
elif command -v vmtoolsd &>/dev/null; then
  TOOLS_VERSION=$(vmtoolsd --version 2>/dev/null | grep -oP '[0-9]+\.[0-9]+\.[0-9]+' | head -1)
else
  echo "[*] VMware Tools / open-vm-tools not found on this host."
  echo "[*] If this is not a VMware guest VM, this CVE does not apply."
  echo "UNKNOWN"
  exit 2
fi

if [ -z "$TOOLS_VERSION" ]; then
  echo "[!] Could not determine VMware Tools version."
  echo "UNKNOWN"
  exit 2
fi

echo "[*] Detected VMware Tools version: $TOOLS_VERSION"
echo "[*] Patched version: >= $PATCHED_VERSION"

if version_gte "$TOOLS_VERSION" "$PATCHED_VERSION"; then
  echo "[+] VMware Tools $TOOLS_VERSION >= $PATCHED_VERSION"
  RESULT="PATCHED"
else
  echo "[-] VMware Tools $TOOLS_VERSION < $PATCHED_VERSION"
  RESULT="VULNERABLE"
fi

# Also check for distro-specific backport patches via package manager
if command -v dpkg &>/dev/null; then
  PKG_VER=$(dpkg -l open-vm-tools 2>/dev/null | awk '/^ii/{print $3}' || true)
  if [ -n "$PKG_VER" ]; then
    echo "[*] Distro package version: $PKG_VER"
    # Check for known patched Debian/Ubuntu versions
    if echo "$PKG_VER" | grep -qP '(deb11u[2-9]|deb12u[1-9]|12\.[2-9]\.[5-9]|12\.[3-9])'; then
      echo "[+] Distro backport patch detected."
      RESULT="PATCHED"
    fi
  fi
elif command -v rpm &>/dev/null; then
  PKG_VER=$(rpm -q open-vm-tools 2>/dev/null || true)
  if [ -n "$PKG_VER" ] && [ "$PKG_VER" != "package open-vm-tools is not installed" ]; then
    echo "[*] RPM package: $PKG_VER"
    # RHSA-2023:3944 and later contain the fix
    echo "[*] Verify against RHSA-2023:3944 errata for your RHEL version."
  fi
fi

# Check vmsvc logging status
TOOLS_CONF="/etc/vmware-tools/tools.conf"
if [ -f "$TOOLS_CONF" ]; then
  if grep -qi 'vmsvc.level.*=.*debug' "$TOOLS_CONF" 2>/dev/null; then
    echo "[+] vmsvc debug logging is ENABLED (good for detection)."
  else
    echo "[!] vmsvc debug logging is NOT enabled. Guest Operations exploitation will be invisible."
  fi
else
  echo "[!] $TOOLS_CONF not found. vmsvc logging is likely at defaults (disabled)."
fi

# Check for VMCI backdoor indicators
if command -v lsof &>/dev/null; then
  VMCI_SOCKETS=$(lsof -A 2>/dev/null | grep -i 'SOCKET_VMCI' | grep -v 'vmtoolsd' || true)
  if [ -n "$VMCI_SOCKETS" ]; then
    echo "[!!!] SUSPICIOUS: Non-VMware processes listening on VMCI sockets:"
    echo "$VMCI_SOCKETS"
    echo "[!!!] Investigate immediately — potential VIRTUALPITA/VIRTUALPIE backdoor."
  fi
fi

echo ""
echo "$RESULT"
exit $([ "$RESULT" = "PATCHED" ] && echo 0 || echo 1)
07 · Bottom Line

If you remember one thing.

TL;DR
This is a KEV-listed vulnerability with confirmed nation-state exploitation — treat it as an active threat, not a backlog item. Despite the vendor's LOW (3.9) rating, noisgate reassesses this as HIGH (7.5) due to fleet-scale blast radius through the hypervisor trust boundary and proven use by UNC3886 since 2021. Under the noisgate mitigation SLA for HIGH, deploy compensating controls within 30 days: enable vmsvc debug logging on all guests (prioritize DCs and production databases within 7 days), forward ESXi logs to SIEM, and run a VMCI backdoor hunt sweep immediately. However, because this is KEV-listed with active exploitation, you should override the standard SLA and patch VMware Tools to 12.2.5+ on your highest-value VMs within days, not weeks. Under the noisgate remediation SLA for HIGH, complete patching across your full VM fleet within 180 days. If you have not already done so, isolate ESXi management interfaces on a dedicated VLAN — the prerequisite ESXi compromise is the gate, and hardening that gate is your best leverage.

Sources

  1. Mandiant — VMware ESXi Detection, Containment & Hardening
  2. Mandiant — Chinese VMware Exploitation Since 2021
  3. The Hacker News — UNC3886 Exploits Fortinet, VMware 0-Days
  4. Qualys ThreatPROTECT — CVE-2023-20867 Advisory
  5. Red Hat Security Advisory RHSA-2023:3944
  6. Forescout — VMware ESXi: A Major Attack Vector for Ransomware
  7. CISA Known Exploited Vulnerabilities Catalog
  8. GitHub Advisory GHSA-qm59-f7vh-3m2p
Peer Review

What defenders are saying.

Submit a review attribution: handle + country only
0 flags selected · stored anonymously
Validation Results

Crowdsourced verification outputs.

Results submitted by users who ran the verification payload against their environment.