← Back to Feed CACHED · 2026-10-08 16:37:34 · CACHE_KEY CVE-2026-76460
CVE-2026-76460 · CWE-648 · Disclosed 2026-09-16

Cisco ISE Unauthenticated API Authentication Bypass (Root RCE)

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

It's as if someone removed the lock on the door to your building's security control room and the intruders are already inside

CVE-2026-76460 is an authentication bypass in a privileged API endpoint of Cisco Identity Services Engine (ISE) and ISE Passive Identity Connector (ISE-PIC). The vulnerable code path fails to enforce the same authorization and session validation applied to the web UI, meaning API calls that should require an authenticated administrative session can be invoked without one. A remote, unauthenticated attacker sends a crafted HTTP request to TCP/443 or TCP/9060 and obtains root-level command execution on the appliance. All ISE versions from 3.0 (EOL) through 3.5 are affected regardless of configuration. Fixed releases are ISE 3.1 Patch 12, 3.2 Patch 11, 3.3 Patch 12, 3.4 Patch 7, and 3.5 Patch 4.

Cisco's CVSS 10.0 CRITICAL rating is not only accurate — it may *understate* the operational impact. A CVSS score cannot capture the fact that ISE is the identity and authorization backbone for every 802.1X, RADIUS, and TACACS+ decision on your network. Root on ISE means the attacker can authorize arbitrary devices onto the network, harvest RADIUS/TACACS+ shared secrets and Active Directory machine-account credentials, extract EAP-TLS certificate material, push malicious context through pxGrid to firewalls and SIEMs, and erase their own audit trail. This was a zero-day at disclosure — Cisco confirmed active exploitation before the advisory dropped — and CISA added it to KEV the same day with a 3-day federal remediation deadline. There is no workaround. Vendor severity matches reality.

"Unauth root on your NAC policy engine — active exploitation, no workaround, domain-scale blast radius."
02 · The Attack Path

5 steps from start to impact.

STEP 01

Identify reachable ISE management interface

The attacker scans for Cisco ISE admin portals on TCP/443 (admin UI) or TCP/9060 (ISE-PIC admin). ZoomEye fingerprinting on September 22, 2026, found 4,076 internet-facing ISE management interfaces. Internal attackers post-initial-access can typically reach ISE management from multiple VLANs, as ISE must be routable to every authenticating switch and AP.
Conditions required:
  • Network reachability to ISE management plane (TCP/443 or TCP/9060)
Where this breaks in practice:
  • Well-segmented environments restrict ISE management to a dedicated OOB management VLAN
  • Internet-facing ISE management is a misconfiguration, but ~4,076 instances are confirmed exposed
Detection/coverage: ZoomEye/Shodan/Censys fingerprinting for ISE admin portals; runZero asset inventory for internal ISE nodes
STEP 02

Send crafted API request to bypass authentication

The attacker sends a specially crafted HTTP request directly to the privileged REST/ERS API endpoint (/ers/config/, /admin/API/, /api/v1/), bypassing the web-based login flow entirely. The vulnerable code path does not enforce session validation on these endpoints. No credentials, cookies, or tokens are required. The exploit is configuration-independent — no optional ISE features need to be enabled.
Conditions required:
  • HTTP connectivity to the vulnerable API endpoint
  • No authentication credentials needed
Where this breaks in practice:
  • Infrastructure ACLs restricting management traffic would block the request
  • No WAF signature existed at disclosure (zero-day)
Detection/coverage: Sigma rules matching direct API requests to /ers/config/, /admin/API/, /api/v1/ from non-admin source IPs; review ise-kong/access.log for suspicious usernames
STEP 03

Obtain root shell on ISE appliance

Successful exploitation yields root-level command execution on the ISE node. The attacker now has full control of the appliance OS, all running services, and all data stored on the node. This includes the ISE application database, configuration files, cryptographic material, and log infrastructure.
Conditions required:
  • Successful API bypass from Step 2
Where this breaks in practice:
  • None — exploitation is deterministic once the API is reachable
Detection/coverage: Process monitoring for unexpected shells; anomalous outbound connections from ISE; log entries showing dummyuser or unusual usernames in ise-kong/access.log
STEP 04

Harvest identity and network credentials

With root access, the attacker extracts RADIUS/TACACS+ shared secrets for every managed network device, Active Directory join credentials (machine account), EAP-TLS certificates and private keys, and any locally cached admin credentials. These credentials unlock lateral movement to switches, routers, wireless controllers, and Active Directory itself.
Conditions required:
  • Root access on ISE node
Where this breaks in practice:
  • Credential vaulting or HSM-backed key storage would limit extraction — but ISE stores these in its local database by default
Detection/coverage: Unusual database queries or file access on ISE; credential use from unexpected source IPs on downstream devices
STEP 05

Manipulate network access policy and erase evidence

The attacker modifies ISE authorization policies to whitelist their devices, pushes malicious context through pxGrid integrations to firewalls and SIEM platforms, and deletes or truncates local ISE logs to cover their tracks. Because ISE sits upstream of the audit trail — it is where identity decisions originate — the attacker can become invisible to NAC-dependent detection.
Conditions required:
  • Root access on ISE node
  • pxGrid integrations configured (common in mature deployments)
Where this breaks in practice:
  • External syslog forwarding preserves evidence if ISE logs are shipped before deletion
  • Network device logs on downstream switches/routers may show policy changes
Detection/coverage: Correlate upstream firewall/proxy logs for anomalous data transfers; monitor pxGrid topic subscriptions; compare ISE policy snapshots against known-good baselines
03 · Compensating Control

1
CRITICAL 10.0→HIGH 7.5
SEVERITY REDUCED
Restrict ISE management to dedicated OOB network via infrastructure ACLs immediately — Configure infrastructure ACLs (iACLs) on upstream routers and firewalls to permit ISE management traffic (TCP/443, TCP/9060) only from known administrative jump hosts and deny all other sources. This is Cisco's only recommended mitigation. Per the noisgate mitigation SLA for CRITICAL, deploy within 3 days. This does not fix the vulnerability but eliminates the remote attack vector for unauthorized sources.
2
CRITICAL 10.0→HIGH 7.0
SEVERITY REDUCED
Block ISE management ports from the internet at the perimeter firewall — Add explicit deny rules for inbound TCP/443 and TCP/9060 to ISE management IPs at your internet edge. Verify with external port scanning. If you have any of the ~4,076 internet-exposed instances, this is your most urgent action — do it within hours. Per the noisgate mitigation SLA for CRITICAL, deploy within 3 days.
3
CRITICAL 10.0→IGNORE 0.0
SEVERITY REDUCED
Patch all ISE nodes to fixed versions — Upgrade to ISE 3.1P12, 3.2P11, 3.3P12, 3.4P7, or 3.5P4. ISE 3.0 nodes must be migrated to a supported branch first. This is the only actual remediation. Per the noisgate remediation SLA for CRITICAL, complete within 90 days, but given active exploitation, patch as fast as operationally possible — ideally within days. Stage patches to secondary nodes first, promote, then patch primary.
4
CRITICAL 10.0→LOW 2.0
SEVERITY REDUCED
Rotate all ISE-held credentials post-patch — After patching, rotate: (1) RADIUS/TACACS+ shared secrets on all managed network devices, (2) Active Directory machine-account credentials used by ISE, (3) EAP-TLS certificates and private keys, (4) ISE admin passwords. Assume all credentials stored on unpatched ISE nodes are compromised. This eliminates persistent access from pre-patch exploitation.
5
CRITICAL 10.0→CRITICAL 10.0
Hunt for indicators of compromise on all ISE nodes — Run admin#show logging application ise-kong/access.log | include dummyuser on every ISE node. Cross-reference firewall logs for unexpected outbound data transfers from ISE IPs. Check for unauthorized admin accounts or policy changes. If compromise is confirmed, reimage the node — do not attempt in-place remediation, as root-level attackers can persist beyond a patch.
What doesn't work
  • Web Application Firewall (WAF) in front of ISE — ISE management is not typically proxied through a WAF, and the crafted API requests may not match standard WAF rulesets since no public PoC exists for signature development.
  • ISE local logging alone — An attacker with root access can delete or modify ise-kong/access.log entries. Local log review is necessary but not sufficient; you must correlate with external syslog, firewall, and NetFlow data.
  • Network-level IDS/IPS signatures — No public exploit signatures exist as of 2026-10-09. Snort/Suricata rules cannot be written without PoC details. Detection must rely on behavioral indicators, not payload matching.
  • Disabling specific ISE features — Cisco confirms the vulnerability is configuration-independent. No feature toggle, API disable, or service restart mitigates it.
04 · Intelligence Metadata

The supporting signals.

In-the-Wild ExploitationConfirmed active. Cisco PSIRT acknowledged exploitation before advisory publication on 2026-09-16. CISA added to KEV the same day under BOD 26-04 with a 3-day federal remediation window.
Proof-of-Concept StatusNo public PoC on GitHub, pocindex.io, ExploitDB, or Metasploit as of 2026-10-09. However, KEV listing confirms working exploits exist in adversary hands. Treat as weaponized. No nuclei template available yet.
EPSS Score0.14026 (14.03% probability of exploitation in next 30 days) — places this in approximately the 97th percentile of all scored CVEs. Extremely high.
CISA KEV StatusListed 2026-09-16. Federal remediation deadline was 2026-09-19 (3 days). Added alongside CVE-2026-87886 (Acronis Backup).
CVSS Vector InterpretationCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H — Network-accessible, low complexity, no privileges, no user interaction, scope changed (impact beyond ISE itself), maximum CIA impact. Perfect 10.0. Every metric is worst-case.
Affected Version RangesCisco ISE 3.0 (EOL — no fix, must migrate), 3.1 (< Patch 12), 3.2 (< Patch 11), 3.3 (< Patch 12), 3.4 (< Patch 7), 3.5 (< Patch 4). ISE-PIC also affected across same ranges.
Fixed VersionsISE 3.1P12, 3.2P11, 3.3P12, 3.4P7, 3.5P4. No backport for 3.0 (EOL).
Internet ExposureZoomEye scan (2026-09-22) found 4,076 internet-facing ISE management interfaces. Version cannot be determined from fingerprint alone. ISE admin services on TCP/443 and TCP/9060.
Disclosure Date2026-09-16 (zero-day — exploitation preceded disclosure). Cisco Bug ID: CSCww39530.
Reporting ResearcherNot publicly attributed. Cisco PSIRT credited internal detection of exploitation activity.

Sources.

  1. Cisco Security Advisory cisco-sa-ISE-ABP-VNSW7Tn5
  2. CISA KEV Alert — September 16, 2026
  3. Help Net Security — Unauthenticated attackers bypassing Cisco ISE
  4. Security Arsenal — CVE-2026-76460 Detection and Remediation Guide
  5. SOCPrime — CVE-2026-76460 Cisco ISE Zero-Day Exploited
  6. DEV Community — 4,076 ISE Fingerprint Matches on the Internet
  7. DEV Community — Cisco ISE CVE-2026-76460: Policy Engine as Weakest Link
  8. Cisco Community Knowledge Base — CVE-2026-76460
05 · The Call

Final Verdict
= UNCHANGED to CRITICAL (10.0/10)

Why this verdict

  • Unauth RCE with zero friction: The attack chain is two steps — reach the management interface, send one HTTP request, get root. No credentials, no user interaction, no special configuration required. Attack complexity is genuinely low.
  • KEV-listed active zero-day: Exploitation was confirmed *before* the advisory. CISA gave federal agencies 3 days. EPSS at 14.03% is 97th percentile. This is not theoretical — adversaries have working exploits today.
  • Role multiplier: Cisco ISE is canonically identity and trust infrastructure. 100% of ISE deployments occupy the high-value identity/NAC role — that is ISE's only purpose. Root on ISE yields RADIUS/TACACS+ shared secrets for every managed switch and router, Active Directory machine-account credentials, EAP-TLS certificate material, and pxGrid context-sharing to firewalls and SIEMs. The blast radius is domain-scale to fleet-scale: an attacker can authorize arbitrary devices, harvest credentials for lateral movement to AD, manipulate network segmentation policy, and erase their own audit trail. This meets the CRITICAL floor for canonical high-value-role components with domain-takeover blast radius.
  • No workaround exists: Cisco explicitly states there are no software workarounds. The only mitigation is network ACLs restricting management access — a compensating control, not a fix.
  • 4,076 internet-facing instances: While ISE management should never be internet-exposed, thousands of deployments are. Even for internal-only deployments, ISE management must be routable from every authenticating network device, giving internal attackers (post-initial-access) a wide attack surface.

Why not higher?

This is already rated at the maximum CVSS score of 10.0 and assessed as CRITICAL — the highest severity tier. There is no higher category to assign.

Why not lower?

Every downgrade pressure point fails: (1) The 'requires network access to management interface' friction is negated by 4,076+ confirmed internet-facing instances and the fact that ISE management must be broadly routable internally. (2) The 'no public PoC' argument is irrelevant — KEV listing proves adversaries already have working exploits. (3) ISE is a canonical high-value-role component (100% of installs are identity infrastructure) with domain-scale blast radius, setting a CRITICAL verdict floor that friction cannot breach. Downgrading this would require evidence that <1% of the installed base is reachable, which the exposure data directly contradicts.

06 · Verification

Crowdsourced verification payload.

Run this script on the ISE appliance itself via SSH as an admin user (or from a remote host with SSH access). Invoke with: bash check_cve_2026_76460.sh <ise_hostname_or_ip>. Requires SSH credentials for the ISE admin CLI. The script checks the running ISE version and patch level against known-fixed releases.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# CVE-2026-76460 Cisco ISE Authentication Bypass - Version Check
# Usage: bash check_cve_2026_76460.sh <ISE_HOST>
# Requires: SSH access to ISE admin CLI
# Output: VULNERABLE / PATCHED / UNKNOWN

set -euo pipefail

HOST="${1:-}"
if [[ -z "$HOST" ]]; then
  echo "Usage: $0 <ISE_HOST>"
  echo "  Checks ISE patch level against CVE-2026-76460 fixed versions."
  exit 3
fi

echo "[*] Connecting to $HOST to retrieve ISE version..."
VERSION_OUTPUT=$(ssh -o ConnectTimeout=10 -o StrictHostKeyChecking=accept-new "admin@${HOST}" 'show version' 2>/dev/null) || {
  echo "[!] SSH connection failed. Verify connectivity and credentials."
  echo "UNKNOWN"
  exit 2
}

# Extract version and patch level
# Typical output line: "Version      : 3.3.0.430"
# Patch line:          "Patch        : 11"
ISE_VERSION=$(echo "$VERSION_OUTPUT" | grep -i '^Version' | awk -F: '{print $2}' | tr -d ' ')
ISE_PATCH=$(echo "$VERSION_OUTPUT" | grep -i '^Patch' | awk -F: '{print $2}' | tr -d ' ')

if [[ -z "$ISE_VERSION" ]]; then
  echo "[!] Could not parse ISE version from output."
  echo "UNKNOWN"
  exit 2
fi

echo "[*] Detected ISE Version: $ISE_VERSION"
echo "[*] Detected ISE Patch Level: ${ISE_PATCH:-none}"

# Extract major.minor
MAJOR_MINOR=$(echo "$ISE_VERSION" | grep -oP '^\d+\.\d+')
PATCH_NUM=${ISE_PATCH:-0}

case "$MAJOR_MINOR" in
  3.0)
    echo "[!] ISE 3.0 is END-OF-LIFE. No fix available. Must migrate."
    echo "VULNERABLE"
    exit 1
    ;;
  3.1)
    FIXED_PATCH=12
    ;;
  3.2)
    FIXED_PATCH=11
    ;;
  3.3)
    FIXED_PATCH=12
    ;;
  3.4)
    FIXED_PATCH=7
    ;;
  3.5)
    FIXED_PATCH=4
    ;;
  *)
    echo "[?] Unrecognized ISE version: $MAJOR_MINOR"
    echo "UNKNOWN"
    exit 2
    ;;
esac

if [[ "$PATCH_NUM" -ge "$FIXED_PATCH" ]]; then
  echo "[+] ISE $MAJOR_MINOR Patch $PATCH_NUM >= fixed Patch $FIXED_PATCH"
  echo "PATCHED"
  exit 0
else
  echo "[-] ISE $MAJOR_MINOR Patch $PATCH_NUM < fixed Patch $FIXED_PATCH"
  echo "VULNERABLE"
  exit 1
fi