← Back to Feed CACHED · 2026-09-23 15:42:24 · CACHE_KEY CVE-2024-38508
CVE-2024-38508 · CWE-78 · Disclosed 2024-07-26

A privilege escalation vulnerability was discovered in the web interface or SSH captive command shell…

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

Like finding a lockpick that only works if you already have the building manager's keycard

CVE-2024-38508 is an OS command injection flaw in Lenovo XClarity Controller (XCC/XCC2), the baseboard management controller embedded in Lenovo ThinkSystem servers (MX3330, SD650-V3, SN550, SR630, and many others). The vulnerable code lives in libvmtrans.so, specifically the mount_remote_folder routine used by the remote-media transport. It builds a /bin/mount command as a formatted string and passes it to a shell running under the root-privileged xferd daemon. The SMB domain and mount-option parameters are filtered against only 9 characters (space, quotes, apostrophe, slash, exclamation mark), allowing shell metacharacters like ;, $(), backticks, |, and & to pass through unescaped. Exploitation requires an authenticated XCC user with at least Operator/Remote-Media privilege level. Affected firmware includes XCC2 versions prior to v8.80; IBM lists fixed XCC versions as 6.20 for SN550 and 9.97 for SR630.

Lenovo's HIGH / 7.2 rating is defensible but slightly generous for real-world conditions. The CVSS vector correctly reflects PR:H (high privileges required), but the score does not account for the operational reality that BMC interfaces should live on isolated out-of-band management networks, drastically limiting the reachable attacker population. IBM scored a related assessment at 8.8 using PR:L, which overstates the privilege floor. The truth sits between: the vuln is serious because BMC root is hardware-level persistent access, but the prerequisite of already holding elevated BMC credentials means you are escalating from an already-compromised position, not breaking in from scratch. No in-the-wild exploitation and an EPSS of ~1% reinforce that this is a real but non-urgent threat.

"BMC command injection needs elevated creds but yields root on the hardware controller"
02 · The Attack Path

4 steps from start to impact.

STEP 01

Obtain BMC network access

The attacker must reach the XCC management interface over the network, either via an out-of-band management VLAN or, in misconfigured environments, from the production network or internet. Best practice places BMC on a dedicated management network with strict ACLs. Approximately 36,800 IPMI/BMC endpoints of all vendors are publicly exposed globally (Lava research, May 2026), but Lenovo XCC IPMI-over-LAN is disabled by default.
Conditions required:
  • Network path to XCC web interface (TCP 443) or SSH (TCP 22)
Where this breaks in practice:
  • BMC interfaces are typically on isolated management VLANs with ACL restrictions
  • IPMI-over-LAN is disabled by default on Lenovo XCC
  • Firewalls and jump-box architectures limit lateral movement to management plane
Detection/coverage: Network scanners (runZero, Shodan, Censys) can enumerate exposed XCC interfaces via Redfish/IPMI fingerprinting. GreyNoise tags can flag internet-facing BMC probes.
STEP 02

Authenticate with elevated XCC credentials

The attacker must possess valid XCC credentials at the Operator level or higher (specifically with Remote-Media privileges). These credentials are separate from host OS credentials and are managed through XCC's own user database or LDAP integration. In many enterprises, BMC passwords are set via provisioning templates and may be shared or predictable across a fleet.
Conditions required:
  • Valid XCC user account with Operator or Administrator role
  • Remote-Media privilege enabled for that account
Where this breaks in practice:
  • Credential rotation policies for BMC accounts vary; many orgs use unique per-host IPMI passwords via provisioning automation
  • MFA is not commonly available on BMC interfaces, but credential theft still requires prior compromise or social engineering
  • LDAP-integrated XCC deployments may enforce stronger password policies
Detection/coverage: XCC audit logs record login events. SIEM integration via SNMP traps or syslog forwarding can detect anomalous BMC logins.
STEP 03

Inject shell commands via remote-media mount

With authenticated access, the attacker initiates a remote-media (SMB/CIFS) mount operation through the XCC web interface or API. They inject shell metacharacters into the domain or mountoption parameter fields. For example, setting mountoption=vers=3.0;id or domain=x$(whoami) causes the injected command to execute in the shell context of the xferd daemon, which runs as root on the BMC's embedded Linux OS.
Conditions required:
  • Authenticated session at Operator level or above
  • Access to the remote-media mount functionality
Where this breaks in practice:
  • The attack surface is limited to the remote-media feature, which not all authenticated sessions exercise
  • Payload must fit within parameter length constraints
Detection/coverage: XCC audit logs may record remote-media mount operations. Anomalous mount parameters with shell metacharacters could be flagged by log analysis rules.
STEP 04

Achieve root execution on BMC

The injected commands execute as root on the BMC's embedded Linux environment. From this position, the attacker can modify BMC configuration, create new administrative accounts, alter boot settings, mount malicious virtual media to compromise the host OS on next boot, or establish persistent backdoor access below the host operating system. BMC-level persistence survives host OS reinstallation.
Conditions required:
  • Successful command injection from step 3
Where this breaks in practice:
  • BMC firmware integrity checks in newer XCC versions may limit persistence options
  • Host-side attestation (TPM, Secure Boot) may detect tampered boot media
Detection/coverage: Firmware integrity monitoring tools (e.g., Lenovo XClarity Administrator, Eclypsium) can detect unauthorized BMC configuration changes or firmware modifications.
03 · Intelligence Metadata

The supporting signals.

In-the-Wild ExploitationNo known exploitation. Not listed in CISA KEV. No campaigns or threat actor usage documented as of September 2026.
Proof-of-ConceptDetailed technical writeup available. runZero Research (Tod Beardsley) published a thorough N-day analysis describing the vulnerable code path in libvmtrans.so and injection vectors via mountoption and domain parameters. No weaponized public exploit tool identified.
EPSS Score0.01006 (1.0%) — bottom quartile. The model estimates low short-term exploitation probability, consistent with the elevated privilege requirement.
KEV StatusNot listed. No CISA Known Exploited Vulnerabilities catalog entry as of 2026-09-23.
CVSS VectorCVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H (Lenovo: 7.2). IBM scored a related assessment at CVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H (8.8) using PR:L. The PR:H vector is more accurate since Operator-class privileges are required.
Affected VersionsLenovo XCC and XCC2 firmware across ThinkSystem servers including MX3330, SD650-V3, SN550, SR630, OEMSR630, and others. XCC2 versions prior to v8.80 are vulnerable. Full model-to-firmware matrix is in LEN-156781.
Fixed VersionsXCC2: v8.80 (July 2026). IBM Cloud Pak System: 2.3.4.1. Per-model: SN550 XCC 6.20 (TEI3F2H), SR630/OEMSR630 XCC 9.97 (CDO3B4B). Lenovo states security fixes are cumulative.
Scanning/ExposureLava research (May 2026) found ~36,872 BMC/IPMI endpoints exposed on the public internet across all vendors. Supermicro accounted for >50%. Lenovo XCC share is a fraction of this. IPMI-over-LAN is disabled by default on XCC.
Disclosure Date2024-07-26 (Lenovo advisory LEN-156781). runZero independently rediscovered and published deeper analysis in July-September 2026.
Researcher/OrgOriginal discovery credited to Lenovo PSIRT. Independent rediscovery and detailed root-cause analysis by Tod Beardsley, VP Security Research at runZero.
04 · The Call

Final Verdict
= UNCHANGED to HIGH (6.8/10)

Why this verdict

  • Elevated privileges already required: The CVSS PR:H is accurate. An attacker must already hold Operator-class XCC credentials with Remote-Media access before the injection is reachable. This is not an unauthenticated attack; it assumes prior credential compromise of a privileged BMC account, which is itself a non-trivial prerequisite.
  • Management network isolation: Enterprise best practice and Lenovo's own defaults place XCC on isolated out-of-band management VLANs. IPMI-over-LAN is disabled by default. Of ~36,800 internet-exposed BMCs globally (all vendors), Lenovo XCC represents a minority. The reachable population from an external attacker perspective is very small (<1% of deployments).
  • No exploitation evidence: Zero in-the-wild exploitation, no KEV listing, EPSS at 1.0%. No weaponized exploit tool exists publicly. The runZero writeup is a technical analysis, not a turnkey exploit.
  • Role multiplier: BMC/XCC is canonically a high-value component. It provides hardware-level control below the host OS: virtual media mount, power control, console access, and firmware modification. A compromised BMC survives OS reinstalls. In typical data center deployments, 100% of affected servers have XCC in this high-value role by definition. If the chain succeeds, blast radius is host-level (single server), but can extend to fleet-level if BMC credentials are shared across hosts (common in many enterprises). This high-value role floors the verdict at HIGH despite the steep prerequisite chain.
  • Downgrade from 7.2 to 6.8: The vendor score does not discount the operational reality that BMC interfaces are rarely reachable even from internal networks without management VLAN access. The combination of PR:H + management network isolation + no wild exploitation justifies a modest downgrade, but the BMC high-value role floor prevents going below HIGH.

Why not higher?

The chain does not warrant CRITICAL because the attacker must already possess elevated BMC credentials (Operator-class), which represents a significant prior compromise. The blast radius is primarily single-host unless BMC credentials are shared, and even then requires per-host exploitation. There is no unauthenticated or low-privilege path, no wormable component, and no evidence of active exploitation or weaponized tooling.

Why not lower?

BMC is a canonically high-value infrastructure component present on every affected server. Root access on the BMC grants persistent hardware-level control that survives OS reinstallation, enables host compromise via virtual media, and provides a foothold invisible to host-based security tools (EDR, AV). Shared BMC credentials are common enough in enterprise environments that a single exploit could chain into fleet-wide hardware-level compromise. The HIGH floor is firmly set by the component's role.

05 · Compensating Control

What to do — in priority order.

  1. Isolate BMC interfaces on dedicated management VLANs with strict ACLs — XCC management interfaces must not be reachable from production networks, user workstations, or the internet. Enforce network segmentation with ACLs allowing only authorized jump-box hosts. This is the single most effective control and should be verified within the noisgate mitigation SLA of 30 days for HIGH severity.
  2. Audit and rotate XCC credentials fleet-wide — Enumerate all XCC accounts with Operator or Administrator roles. Rotate passwords to unique per-host values using provisioning automation (e.g., Lenovo XClarity Administrator, Ansible IPMI modules). Disable unused accounts. Shared BMC passwords dramatically increase blast radius.
  3. Disable remote-media mount if not operationally required — If your operational workflows do not require XCC remote-media functionality, disable it in XCC configuration to eliminate the attack surface entirely. This removes the vulnerable code path from the reachable API surface.
  4. Apply firmware update to fixed XCC version — Update XCC firmware to the fixed version for your hardware model (XCC2 v8.80+, or per-model versions from LEN-156781). Deploy within the noisgate remediation SLA of 180 days for HIGH severity. Use Lenovo XClarity Administrator or UpdateXpress for fleet-wide firmware deployment.
  5. Enable XCC audit logging and forward to SIEM — Configure XCC to send audit logs via syslog or SNMP traps to your SIEM. Create detection rules for anomalous remote-media mount operations and unexpected login patterns to BMC interfaces.
What doesn't work
  • Host-based EDR/AV does not help. The exploit runs entirely within the BMC's embedded Linux environment, which is invisible to any agent running on the host OS. EDR cannot inspect or block BMC-level command execution.
  • Host OS patching does not remediate this. The vulnerability is in BMC firmware, not the server's operating system. Patching RHEL/Windows/ESXi on the host has zero effect on XCC firmware.
  • Network IDS/IPS signature matching is unreliable. The injection occurs within an authenticated HTTPS session to the BMC web interface. Without TLS inspection of management traffic (which most orgs do not perform on BMC VLANs), network signatures cannot detect the payload.
06 · Verification

Crowdsourced verification payload.

Run this script from an auditor workstation that has network access to the target XCC management interface. Requires curl and network connectivity to the BMC on port 443. Usage: bash check_xcc_cve2024_38508.sh <XCC_IP> <USERNAME> <PASSWORD>. No elevated privileges needed on the auditor host.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# check_xcc_cve2024_38508.sh
# Checks Lenovo XCC firmware version against CVE-2024-38508 fixed versions
# Exit codes: 0=PATCHED, 1=VULNERABLE, 2=UNKNOWN

set -euo pipefail

if [ $# -lt 3 ]; then
  echo "Usage: $0 <XCC_IP> <USERNAME> <PASSWORD>"
  echo "Example: $0 192.168.70.10 USERID PASSW0RD"
  exit 2
fi

XCC_IP="$1"
USERNAME="$2"
PASSWORD="$3"

echo "[*] Querying XCC firmware version at ${XCC_IP}..."

RESPONSE=$(curl -sk -u "${USERNAME}:${PASSWORD}" \
  "https://${XCC_IP}/redfish/v1/UpdateService/FirmwareInventory/BMC-Primary" \
  --connect-timeout 10 --max-time 30 2>/dev/null) || {
  echo "[!] Failed to connect to XCC at ${XCC_IP}"
  echo "UNKNOWN"
  exit 2
}

FW_VERSION=$(echo "${RESPONSE}" | grep -oP '"Version"\s*:\s*"\K[^"]+' 2>/dev/null) || true

if [ -z "${FW_VERSION}" ]; then
  # Try alternative Redfish path
  RESPONSE=$(curl -sk -u "${USERNAME}:${PASSWORD}" \
    "https://${XCC_IP}/redfish/v1/Managers/1" \
    --connect-timeout 10 --max-time 30 2>/dev/null) || true
  FW_VERSION=$(echo "${RESPONSE}" | grep -oP '"FirmwareVersion"\s*:\s*"\K[^"]+' 2>/dev/null) || true
fi

if [ -z "${FW_VERSION}" ]; then
  echo "[!] Could not determine XCC firmware version"
  echo "UNKNOWN"
  exit 2
fi

echo "[*] Detected XCC firmware version: ${FW_VERSION}"

# Extract major.minor version numbers for comparison
# XCC2 versions are like 8.80, vulnerable below that
# XCC versions vary by model
MAJOR=$(echo "${FW_VERSION}" | grep -oP '^[0-9]+' 2>/dev/null) || MAJOR=0
MINOR=$(echo "${FW_VERSION}" | grep -oP '\.[0-9]+' | head -1 | tr -d '.' 2>/dev/null) || MINOR=0

echo "[*] Parsed version: major=${MAJOR}, minor=${MINOR}"

# XCC2 fixed at v8.80+
if [ "${MAJOR}" -gt 8 ] 2>/dev/null; then
  echo "[+] Firmware version ${FW_VERSION} is above known fixed version (8.80)"
  echo "PATCHED"
  exit 0
elif [ "${MAJOR}" -eq 8 ] && [ "${MINOR}" -ge 80 ] 2>/dev/null; then
  echo "[+] Firmware version ${FW_VERSION} meets or exceeds fixed version (8.80)"
  echo "PATCHED"
  exit 0
else
  echo "[-] Firmware version ${FW_VERSION} is below fixed version (8.80 for XCC2)"
  echo "[-] Note: Fixed versions vary by model. Check LEN-156781 for your specific hardware."
  echo "[-] Known fixed versions: SN550=6.20(TEI3F2H), SR630=9.97(CDO3B4B)"
  echo "VULNERABLE"
  exit 1
fi
07 · Sources

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.