← Back to Feed CACHED · 2026-06-30 01:52:41 · CACHE_KEY CVE-2026-20195
CVE-2026-20195 · CWE-204 · Disclosed 2026-05-06

A vulnerability in an identity management API endpoint of Cisco ISE could

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

A talkative front desk that says "never heard of him" differently than "wrong password"

CVE-2026-20195 is an *observable response discrepancy* (CWE-204) in an identity-management API endpoint of Cisco Identity Services Engine. The endpoint returns subtly different responses — body content, status code, or response time — depending on whether a queried identity exists, lets an unauthenticated remote caller enumerate valid usernames/identities or infer whether an authorization decision applies. The bug is reachable on ISE 3.3 < P11, 3.4 < P6, and 3.5 < P3; fixes shipped April 13–22, 2026 ahead of the May 6 disclosure.

Cisco's MEDIUM (5.3) rating is accurate. The CVSS vector AV:N/AC:L/PR:N/UI:N/C:L/I:N/A:N correctly captures the impact: information disclosure only, no write, no DoS, no auth bypass. There is no privilege gain from this bug standing alone — it is a *recon primitive* that an attacker chains with a password-spraying or relay attack. The vendor severity does not need adjusting; the practitioner question is whether the ISE admin/PSN interface that exposes this endpoint is reachable to the attacker at all.

"Cisco ISE leaks valid-vs-invalid identity hints through an API timing/error-discrepancy oracle — username enumeration, not RCE."
02 · The Attack Path

4 steps from start to impact.

STEP 01

Reach the ISE identity API endpoint

The attacker must have network reachability to the affected ISE node's API surface — typically the PSN (Policy Service Node) or PAN (Admin) interface on TCP/443 or TCP/9060 (ERS). In well-segmented environments this is restricted to a management VLAN.
Conditions required:
  • Network path to ISE admin/PSN interface
  • TLS handshake permitted (no mutual-TLS gating)
Where this breaks in practice:
  • Cisco's own hardening guide recommends restricting ERS and admin APIs to a management subnet
  • Most enterprises front ISE with an internal-only ACL
Detection/coverage: Qualys QID and Tenable plugin 218xxx series flag unpatched ISE banners; netflow to TCP/9060 from non-management subnets is anomalous
STEP 02

Probe the vulnerable identity endpoint

Send crafted queries for candidate usernames/identity strings. Compare response body, HTTP status, and timing between known-good and known-bad identities to build a valid-user dictionary. Tools like ffuf, Burp Intruder, or a hand-rolled Python httpx loop suffice — no public weaponized PoC has been published.
Conditions required:
  • A candidate username wordlist (LinkedIn scrape, common-name dictionary)
  • Stable network path for timing comparisons
Where this breaks in practice:
  • Rate-limiting on ISE API can throttle enumeration
  • Response variance over WAN connections erodes timing oracles
Detection/coverage: High-volume 4xx responses from a single source IP against the identity endpoint; ISE syslog code-correlation rules
STEP 03

Pivot to credential attack

Feed validated usernames into a password-spray or AD lockout-aware brute force against ISE's RADIUS/TACACS or the upstream IdP (AD/LDAP). The discrepancy oracle materially raises spray success rate by eliminating invalid-user noise.
Conditions required:
  • Spray-capable auth endpoint reachable (RADIUS, 802.1X, VPN, OWA, etc.)
  • Account lockout policy that does not lock on bad usernames
Where this breaks in practice:
  • MFA on perimeter auth blocks the chain
  • Smart lockout / risk-based auth (Azure AD, Duo) detects the spray
Detection/coverage: 4625 spike on DCs; Duo/Okta anomalous auth events; ISE failed-auth rate
STEP 04

Leverage harvested identity

Successful authentication grants network access policy (NAC bypass), VPN, or admin pivots depending on the role of the compromised account. ISE itself is not RCE'd by this CVE.
Conditions required:
  • Compromised account has meaningful entitlements
Where this breaks in practice:
  • Conditional access policies
  • Segmentation between user VLAN and crown jewels
Detection/coverage: Sentinel/Splunk impossible-travel and new-device rules
03 · Intelligence Metadata

The supporting signals.

In-the-wild exploitationNone observed as of 2026-06-30 — no GreyNoise tag, no Talos/Mandiant campaign attribution
Public PoCNo weaponized PoC published; the bug class (response discrepancy) is trivially reproducible with Burp/ffuf but no named researcher has dropped a tool
EPSS0.00275 (~0.3%) — bottom-quartile likelihood of exploitation over the next 30 days
CISA KEVNot listed
CVSS vectorCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N — network, unauth, low-complexity, low confidentiality only
CWECWE-204 (Observable Response Discrepancy) — i.e. user-enumeration class
Affected versionsCisco ISE 3.3 < P11, 3.4 < P6, 3.5 < P3
Fixed versionsISE 3.3 P11 (2026-04-17), 3.4 P6 (2026-04-22), 3.5 P3 (2026-04-13)
Internet exposureShodan/Censys queries for ISE admin/ERS portals (TCP/443, TCP/9060) typically return <500 hosts globally — ISE is overwhelmingly an internal appliance
Disclosed / Bug ID2026-05-06, internal bug CSCwr77445; reporter credited as Cisco internal security testing
04 · The Call

noisgate verdict.

Final Verdict
= UNCHANGED to MEDIUM (4.3/10)

This is a username-enumeration oracle (CWE-204) with confidentiality-only impact and no path to code execution, privilege escalation, or DoS — the single decisive factor is that the chain ends in *reconnaissance*, not compromise. The affected interface is almost universally deployed on an internal management network, further capping real-world exposure.

HIGH impact ceiling (info disclosure only)
MEDIUM exploitation likelihood absent a PoC
HIGH patch availability and accuracy of affected-version list

Why this verdict

  • Confidentiality-only, no integrity/availability impact — CVSS vector cleanly bounds the blast radius at username/identity disclosure.
  • ISE management plane is rarely internet-exposed — Shodan/Censys data shows a low-hundreds population, and Cisco's own deployment guidance restricts admin/ERS APIs to management subnets.
  • Role multiplier — ISE is canonically an identity/NAC component, but THIS bug does not grant any identity-trust primitive. It only reveals which usernames exist. The chain to fleet compromise requires a separate spray/MFA-bypass step that this CVE does not provide — the floor stays at MEDIUM rather than escalating.
  • No KEV listing, EPSS 0.00275, no public PoC — exploitation pressure is low and there is no indication of mass scanning.
  • Patch shipped weeks before disclosure (April 13–22 vs. May 6 advisory) — defenders had a head start and the fix is a standard ISE patch bundle, not a version upgrade.

Why not higher?

Upgrading to HIGH would require either a credential or auth-bypass primitive (this bug has neither), KEV listing, or evidence of mass enumeration campaigns — none are present. The ISE role multiplier does not trigger because the bug yields no identity-trust impact; it only narrows the attacker's spray dictionary.

Why not lower?

Downgrading to LOW would be wrong because ISE underpins NAC and 802.1X for the entire enterprise — any reconnaissance primitive against the identity store has compounding value to a determined attacker, and unauthenticated network-reachable info disclosure on an identity appliance is not backlog hygiene.

05 · Compensating Control

What to do — in priority order.

  1. Restrict ISE admin and ERS API interfaces (TCP/443, TCP/9060) to a hardened management subnet — An ACL on the upstream switch or firewall denying everything outside the mgmt VLAN eliminates the reachable population for this bug. Deploy within the 365-day noisgate remediation window if not already in place — this is also baseline Cisco hardening guidance regardless of this CVE.
  2. Enable API rate limiting and lockout on ISE — Caps the rate at which a discrepancy oracle can be probed and produces signal for SOC alerting. Configure under Administration → System → Settings → API Settings.
  3. Apply the ISE patch bundle (3.3 P11 / 3.4 P6 / 3.5 P3) — Standard in-place patch via the ISE GUI or application patch install CLI. No data migration, brief services restart on PSN. Schedule within the 365-day noisgate remediation SLA for MEDIUM.
  4. Force MFA on every downstream auth surface — Removes the value of harvested usernames by breaking step 3 of the attack path. Layer Duo/Azure Conditional Access on VPN, OWA, and RDP gateways.
What doesn't work
  • WAF signatures — the request pattern is indistinguishable from legitimate ERS API queries; signature tuning produces false positives faster than catches.
  • Renaming default usernames — the oracle reveals ANY existing identity, not just defaults.
  • Strong password policies alone — they raise the spray cost but do not block enumeration itself.
06 · Verification

Crowdsourced verification payload.

Run on an auditor workstation with network reach to the ISE node. Invoke as ./check_cve_2026_20195.sh <ise-host> — e.g. ./check_cve_2026_20195.sh ise-pan01.corp.example.com. No credentials required; this only fingerprints the ISE build via the unauthenticated TLS service banner and the /admin/login.jsp build string.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# noisgate verifier — CVE-2026-20195 (Cisco ISE observable response discrepancy)
# Usage: ./check_cve_2026_20195.sh <ise-host>
# Output: VULNERABLE | PATCHED | UNKNOWN
set -u
HOST="${1:-}"
if [[ -z "$HOST" ]]; then
  echo "UNKNOWN: usage $0 <ise-host>" >&2
  exit 2
fi

# Pull build banner from the admin login page (unauth-readable)
BODY=$(curl -sk --max-time 10 "https://${HOST}/admin/login.jsp" || true)
if [[ -z "$BODY" ]]; then
  echo "UNKNOWN: no response from https://${HOST}/admin/login.jsp"
  exit 2
fi

# Build strings look like: ise-version-3.4.0.608 patch-5
VER=$(echo "$BODY" | grep -oE 'ise-version-[0-9.]+' | head -1 | sed 's/ise-version-//')
PATCH=$(echo "$BODY" | grep -oE 'patch-[0-9]+' | head -1 | sed 's/patch-//')

if [[ -z "$VER" ]]; then
  echo "UNKNOWN: could not parse ISE version banner — check manually in GUI Administration → System → Maintenance"
  exit 2
fi

PATCH=${PATCH:-0}
MAJ=$(echo "$VER" | cut -d. -f1)
MIN=$(echo "$VER" | cut -d. -f2)

status="UNKNOWN"
case "${MAJ}.${MIN}" in
  3.3) [[ "$PATCH" -ge 11 ]] && status="PATCHED" || status="VULNERABLE" ;;
  3.4) [[ "$PATCH" -ge 6  ]] && status="PATCHED" || status="VULNERABLE" ;;
  3.5) [[ "$PATCH" -ge 3  ]] && status="PATCHED" || status="VULNERABLE" ;;
  *)   status="UNKNOWN" ;;
esac

echo "Host: ${HOST}  Version: ${VER}  Patch: ${PATCH}  => ${status}"
case "$status" in
  PATCHED)    exit 0 ;;
  VULNERABLE) exit 1 ;;
  *)          exit 2 ;;
esac
07 · Bottom Line

If you remember one thing.

TL;DR
Treat CVE-2026-20195 as routine ISE hygiene. With the verdict at MEDIUM, the noisgate mitigation SLA has no fixed deadline — go straight to the noisgate remediation SLA of ≤ 365 days to roll ISE 3.3→P11 / 3.4→P6 / 3.5→P3 during your next normal patch window. By Monday: (1) confirm the ISE admin/ERS interfaces are ACL'd to a management subnet — that single control collapses the reachable population, (2) queue the patch in your existing ISE maintenance cycle, and (3) verify MFA is enforced on every downstream auth surface so harvested usernames yield no value. Do NOT page anyone out-of-cycle for this one; spend the on-call budget on the unauth-RCE CVEs from the same advisory bundle instead.

Sources

  1. Cisco Community — ISE CVE-2026-20193 & 20195 KB
  2. Cisco PSIRT — ISE Multi-CVE Advisory (cisco-sa-ise-multi-G5WP8vv)
  3. Cisco PSIRT — ISE RCE & Path Traversal (cisco-sa-ise-rce-traversal-8bYndVrZ)
  4. CVE Details — Cisco ISE vulnerability list
  5. MITRE CWE-204 — Observable Response Discrepancy
  6. FIRST CVSS v3.1 Specification
  7. CISA KEV Catalog
  8. FIRST EPSS
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.