← Back to Feed CACHED · 2026-07-01 11:45:37 · CACHE_KEY CVE-2026-10540
CVE-2026-10540 · CWE-328 · Disclosed 2026-07-01

The Control-M/Enterprise Manager uses weak protections for stored hashes of account passwords

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

A safe with a paper-thin lock, but you have to already be inside the vault to touch it

Control-M/Enterprise Manager (BMC's job-scheduling console) stores account password hashes using a weak algorithm — no adaptive KDF, insufficient computational effort per CWE-328. An attacker who can read the hash store can run offline cracking (hashcat/john) against captured hashes and recover plaintext passwords, potentially enabling lateral movement into other systems that share credentials. Affected releases are the unsupported 9.0.20.x branch and earlier out-of-support versions; supported 9.0.21+ lines should be verified against BMC's advisory.

The vendor's MEDIUM (5.6) rating already reflects the constraint that shows up in the CVSS vector: AV:L/PR:H. In plain terms, you need local access to the EM host AND high privileges on it before you can read the hash file. If an attacker already has that position, the hash quality is the least of your problems — they can dump service credentials, tamper with jobs, and pivot directly. This is a credential-hygiene defect, not an exploitation vector. Realistic verdict is LOW.

"Local, high-privilege prerequisite means the attacker already owns the box. Vendor's MEDIUM is generous — this is backlog hygiene."
02 · The Attack Path

4 steps from start to impact.

STEP 01

Gain privileged foothold on the EM host

Attacker must first achieve local, high-privilege access on the Control-M/EM server — typically root/Administrator or the ctmuser/service account that owns the EM database and configuration store. This is not a remote exploit; it is a post-compromise position. Common ways to arrive here include stolen ops credentials, a separate RCE on the same host, or malicious insider.
Conditions required:
  • Local shell on the EM server
  • Privileges sufficient to read EM's credential/hash store
Where this breaks in practice:
  • EM servers are typically management-tier, firewalled off from user networks
  • PAM/jump-host workflows govern admin access in mature shops
  • EDR on management servers will alert on interactive shells
Detection/coverage: EDR (CrowdStrike, SentinelOne, Defender for Endpoint) flags anomalous access to EM binaries and DB files; SIEM should already alert on non-approved logons to job-scheduling servers.
STEP 02

Extract stored password hashes

With privileged local access, read hashes out of the EM configuration database or credential file. This is a cat/SQL-select operation — no exploit code required. The vulnerability is that the stored representation is a fast, unsalted (or weakly-iterated) hash rather than PBKDF2/bcrypt/argon2.
Conditions required:
  • Read access to EM DB tables or on-disk secret store
  • Knowledge of hash location (documented or reversible)
Where this breaks in practice:
  • File integrity monitoring (Tripwire, Wazuh) may flag reads of sensitive config files
  • Database auditing on the EM repository catches ad-hoc SELECTs
Detection/coverage: DB audit logs, auditd/Sysmon file-read events on the hash store.
STEP 03

Offline crack with hashcat / john

Exfiltrate the hash blob and run it through hashcat -m <mode> on GPU rigs. Because the algorithm lacks computational hardening (CWE-328), even 10–12 character passwords fall within days on a modest 4×RTX cluster; short or reused passwords fall in minutes. No network callback needed.
Conditions required:
  • Copy of the hash blob
  • GPU compute or cloud rental
Where this breaks in practice:
  • Strong, long, unique passwords (16+ char random) resist even weak hashing
  • Password rotation windows shorter than crack time reduce value
Detection/coverage: None — cracking is offline and invisible to the victim.
STEP 04

Reuse cracked passwords for lateral movement

Recovered EM account passwords are then tried against LDAP/AD, other Control-M nodes, agent hosts, and downstream systems where operators may have reused credentials. Impact scales with password-reuse hygiene, not with the bug itself.
Conditions required:
  • Recovered plaintext credential
  • Reachability to systems where the operator reused the same password
Where this breaks in practice:
  • MFA on downstream systems neutralizes reuse
  • Privileged accounts under PAM rotate credentials on checkout
  • Distinct service-account passwords per system
Detection/coverage: Impossible-travel and credential-stuffing detections in the IdP; failed-logon spikes in AD.
03 · Intelligence Metadata

The supporting signals.

In-the-wild exploitationNone observed. No public campaigns, no incident-response case studies referencing this CVE.
Public PoCNone published. Exploitation is generic offline cracking — hashcat and john cover the class without a CVE-specific tool.
EPSSNot yet scored at disclosure; expected <0.5% given AV:L/PR:H profile.
KEV statusNot listed. CISA KEV requires evidence of active exploitation; local, post-auth hash-quality issues rarely qualify.
CVSS vectorCVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:H/I:L/A:Llocal, high-privilege attacker, no user interaction. Impact skewed toward confidentiality (the recovered password).
Affected versionsControl-M/Enterprise Manager 9.0.20.x and earlier unsupported releases per BMC advisory.
Fixed versionsUpgrade to a currently supported EM branch (9.0.21+ / current LTS). BMC's advisory is the authoritative source for the specific fix build.
Exposure dataControl-M/EM is a management-tier product — not intended to be internet-exposed. Shodan/Censys queries for EM web consoles return small footprints, mostly misconfigured lab instances.
Disclosure2026-07-01 — reported and published via BMC's coordinated disclosure.
ReporterCredited via BMC's security advisory (see sources).
04 · The Call

noisgate verdict.

Final Verdict
DOWNGRADED to LOW (3.4/10)

The single decisive factor is the AV:L/PR:H prerequisite: an attacker must already hold high-privilege local access to the EM server before the weak hash matters, which means they are past the point at which most defenders would consider the box compromised. Blast radius is bounded by password reuse hygiene downstream, not by the bug itself.

HIGH That exploitation requires prior privileged foothold
HIGH That no wormable / unauthenticated path exists
MEDIUM That downstream credential reuse is the real risk vector

Why this verdict

  • Attacker starts post-compromise. AV:L/PR:H means the operator must already be root/service-account on the EM host. Every remaining step is amplification of an existing breach, not a new entry.
  • No remote reach. Zero pre-auth surface, no network vector, no phishing angle. Cannot be used for initial access.
  • Role multiplier — Control-M/EM is a scheduling console, not identity/PKI/hypervisor. Blast radius on the EM host itself is already assumed lost at step 1; the bug adds *hash-cracking* on top, which only pays off where operators reused passwords elsewhere. Not a high-value-role floor trigger — no fleet, identity, backup, or supply-chain pivot inherent to the component.
  • Cracking is optional, not required. An attacker with the prerequisites can dump service credentials, hijack scheduled jobs, or plant payloads directly — the weak hash is a convenience, not a chokepoint.
  • No KEV, no PoC, no observed campaigns. EPSS will land near the floor.

Why not higher?

MEDIUM would imply the bug adds meaningful new risk on top of the prerequisites. It does not — an attacker with PR:H local access to Control-M/EM already controls the scheduling plane. HIGH would require a remote or lower-privilege vector, which the vector explicitly rules out.

Why not lower?

IGNORE would be wrong because there IS a real credential-reuse pivot when operators share passwords across systems, and the fix is straightforward. LOW captures that: fix it on the normal patch cycle, don't lose sleep.

05 · Compensating Control

What to do — in priority order.

  1. Restrict local access to the EM host under PAM — The whole attack chain dies at step 1 if only PAM-brokered, MFA-authenticated sessions can reach the EM server. Enforce via CyberArk/BeyondTrust/Delinea jump-host policies. No mitigation SLA at LOW — fold into normal privileged-access hardening cycle.
  2. Enable database and file-read auditing on the EM credential store — Even if the hashes leak, you want to see the leak happen. Turn on DB audit for the EM repository and auditd/Sysmon file-read events for the on-disk secret files. Backlog hygiene — schedule alongside other audit-coverage gaps.
  3. Rotate EM operator passwords with long, random values — A 20-character random password brute-forced against a weak (but not trivial) hash still costs an attacker meaningful GPU-time. Push operators through a password manager and set 16+ char minimums. Combine with the routine credential-rotation cycle.
  4. Kill password reuse between EM and downstream systems — The only path to blast-radius growth is reuse. Enforce distinct credentials per system; where humans authenticate, front everything with SSO+MFA so a cracked EM password doesn't unlock anything else.
  5. Upgrade off unsupported 9.0.20.x branch — You should already be doing this — running unsupported EM means you're missing more than just this fix. Move to a supported branch during the next maintenance window; noisgate remediation SLA for LOW is backlog (≤365 days is a reasonable cap).
What doesn't work
  • Perimeter firewall rules — the bug is local; the firewall was never in the path.
  • WAF / IPS signatures — no network protocol to inspect; cracking happens offline on the attacker's hardware.
  • Rotating only the EM admin password without addressing reuse across downstream systems — you fix one account and leave the pivot intact.
06 · Verification

Crowdsourced verification payload.

Run on each Control-M/Enterprise Manager server as the ctmuser (or equivalent EM owner) account. Invoke as ./check-cve-2026-10540.sh — no arguments needed. Requires read access to the EM installation directory ($CONTROLM_SERVER_HOME / $EM_HOME).

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# check-cve-2026-10540.sh
# Detects Control-M/Enterprise Manager versions affected by weak password hashing (CWE-328).
# Exit codes: 0=PATCHED, 1=VULNERABLE, 2=UNKNOWN

set -u

EM_HOME="${EM_HOME:-${CONTROLM_SERVER_HOME:-}}"

if [[ -z "${EM_HOME}" ]]; then
  # Try common install paths
  for candidate in /opt/bmc/ControlM-EM /home/*/ctm_em /usr/openv/ControlM-EM; do
    if [[ -d "${candidate}" ]]; then EM_HOME="${candidate}"; break; fi
  done
fi

if [[ -z "${EM_HOME}" || ! -d "${EM_HOME}" ]]; then
  echo "UNKNOWN: Control-M/EM installation directory not found. Set EM_HOME and retry."
  exit 2
fi

# Prefer the version tool if present
VER=""
if [[ -x "${EM_HOME}/bin/em_version" ]]; then
  VER=$("${EM_HOME}/bin/em_version" 2>/dev/null | grep -Eo '[0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?' | head -1)
elif [[ -x "${EM_HOME}/scripts/version.sh" ]]; then
  VER=$("${EM_HOME}/scripts/version.sh" 2>/dev/null | grep -Eo '[0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?' | head -1)
elif [[ -f "${EM_HOME}/data/em_version.txt" ]]; then
  VER=$(grep -Eo '[0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?' "${EM_HOME}/data/em_version.txt" | head -1)
fi

if [[ -z "${VER}" ]]; then
  echo "UNKNOWN: could not determine Control-M/EM version in ${EM_HOME}"
  exit 2
fi

echo "Detected Control-M/EM version: ${VER}"

# Vulnerable: 9.0.20.x and earlier unsupported branches
MAJOR=$(echo "${VER}" | cut -d. -f1)
MINOR=$(echo "${VER}" | cut -d. -f2)
PATCH=$(echo "${VER}" | cut -d. -f3)

if [[ "${MAJOR}" -lt 9 ]]; then
  echo "VULNERABLE: pre-9.x, unsupported branch"; exit 1
fi
if [[ "${MAJOR}" -eq 9 && "${MINOR}" -eq 0 && "${PATCH}" -le 20 ]]; then
  echo "VULNERABLE: 9.0.${PATCH} is in the affected/unsupported range for CVE-2026-10540"; exit 1
fi

echo "PATCHED: ${VER} is outside the documented affected range. Confirm against BMC advisory for exact fix build."
exit 0
07 · Bottom Line

If you remember one thing.

TL;DR
This is a LOW-priority finding for anyone running Control-M/EM inside a properly segmented management VLAN. Under the noisgate mitigation SLA, LOW carries no mandatory mitigation deadline — but if you are still on unsupported 9.0.20.x, prioritize the upgrade because you are exposed to more than just this bug. Under the noisgate remediation SLA, plan the version uplift within the standard ≤365-day backlog window, and in parallel enforce PAM-brokered access to EM hosts, kill password reuse between EM operators and downstream systems, and enable audit logging on the credential store. Do not carve an emergency change window for this one — spend that political capital on the CRITICALs.

Sources

  1. BMC Software — Security Advisories
  2. NVD — CVE-2026-10540 (once published)
  3. MITRE CVE record — CVE-2026-10540
  4. CWE-328: Use of Weak Hash
  5. CWE-916: Use of Password Hash With Insufficient Computational Effort
  6. CISA KEV Catalog
  7. FIRST EPSS
  8. hashcat — password recovery reference
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.