This is a booby-trapped SSO turnstile, not a hole in every WebSphere wall
CVE-2026-9330 is a deserialization flaw in the SAML Web Single Sign-On path of IBM WebSphere Application Server traditional. IBM says affected releases are 9.0.0.0 through 9.0.5.28 and 8.5.0.0 through 8.5.5.29, with fixes in 9.0.5.29 and 8.5.5.30 or the interim fix for APAR PH71453. The bug can lead to remote code execution through a crafted HTTP request, but only when the SAML SSO component is actually installed and enabled and a usable gadget chain exists in the target JVM.
IBM's HIGH 8.5 score is technically defensible in a lab, but it overstates average enterprise urgency. The big downward pressures are PR:L, AC:H, the need for a gadget chain, and the fact that the vulnerable path is feature-specific rather than core-request handling for every WebSphere node. For a 10,000-host estate, this is a targeted federated-access problem, not an all-hands internet RCE event.
4 steps from start to impact.
Find a SAML-enabled WebSphere edge
- Target runs WebSphere Application Server traditional 8.5 or 9.0 in an affected level
- SAML Web SSO / SAML TAI is installed and enabled
- Attacker can reach the relevant HTTP(S) endpoint
- Many WebSphere estates never enable SAML Web SSO on most nodes
- A large share of WAS is internal-only or fronted by proxies
- Exposure is narrower than the vendor-wide version range suggests
Satisfy the low-privilege precondition
- Attacker has the required low-privileged position implied by IBM's CVSS
- The SAML flow and trust configuration accept the attacker's traffic path
- Low privileges still mean a prior foothold, tenant account, or partner-path access
- MFA, IdP controls, reverse proxies, and segmentation can reduce real reachability
- This prerequisite sharply cuts the exposed population compared with PR:N bugs
Land a deserialization payload with a usable gadget chain
ysoserial—that matches libraries present on the target classpath.- A compatible gadget chain exists in the target application's libraries
- The payload survives any proxy, encoding, and size restrictions
- The attacker understands the target's SAML request handling well enough to hit the sink
- IBM rated AC:H for a reason: this is not a one-size-fits-all exploit
- Classpath differences break many Java gadget chains
- WAFs and reverse proxies may disrupt malformed or unusual request bodies
Execute inside the app-server JVM and pivot
- Successful deserialization to code execution
- Service account has meaningful local or network access
- Process isolation, constrained service accounts, and egress controls can limit post-exploitation value
- EDR on supported platforms can catch child-process or memory-behavior anomalies
java, unusual outbound connections, and app-server log anomalies are your best post-compromise signals.The supporting signals.
| In-the-wild status | No public evidence of active exploitation found in the retrieved primary sources. CISA KEV does not list this CVE. |
|---|---|
| Proof-of-concept availability | No public PoC confirmed in the retrieved sources. IBM published advisory + fixes, but no vendor exploit details; public GitHub/Exploit-DB discovery was not evident in the retrieved results. |
| EPSS | 0.00355 (~0.355% 30-day exploitation probability). That is low and fits a niche, harder-to-weaponize enterprise middleware issue. *Percentile was not confirmed from retrieved FIRST output.* |
| KEV status | Not KEV-listed after the 2026-06-01 disclosure in the retrieved CISA catalog sources. |
| CVSS vector meaning | CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:H means network reachable, but high complexity and low privileges required. That PR:L is the biggest real-world downgrade versus a true unauthenticated edge RCE. |
| Affected scope | IBM lists WebSphere Application Server traditional 9.0 and 8.5 as affected; remediation guidance narrows that to 9.0.0.0-9.0.5.28 and 8.5.0.0-8.5.5.29. |
| Fixed versions | Fixed in 9.0.5.29+ and 8.5.5.30+; IBM also ships interim fixes via APAR PH71453 for supported earlier maintenance levels. |
| Reachability constraint | Per IBM's SAML docs, the vulnerable path is only relevant when the SAML ACS application is installed and the SAML Trust Association Interceptor is enabled. *Inference:* many WebSphere nodes in large estates will be version-affected but path-unreachable. |
| Scanning / exposure data | No CVE-specific GreyNoise, Censys, or Shodan exposure telemetry was found in the retrieved sources. Treat internet-facing federated portals as the likely exposure cluster rather than the full WebSphere fleet. |
| Disclosure / source | Published by IBM on 2026-06-01; NVD shows the record as received from IBM Corporation and still undergoing enrichment. |
noisgate verdict.
The decisive factor is attacker position plus feature gating: IBM itself scored this with PR:L, and the vulnerable path only matters on SAML-enabled traditional WebSphere nodes. That makes this a narrower post-auth or semi-trusted-path RCE problem, not a broad unauthenticated internet wormable event.
Why this verdict
- Prior foothold required: IBM's own vector says
PR:L, which means the attacker is not coming in cold from the internet the way they would with aPR:Nedge bug. - Feature-gated exposure: the vulnerable path sits in the SAML Web SSO / Trust Association Interceptor stack, so only a subset of WebSphere nodes are truly reachable.
- Exploit chain is brittle:
AC:Hplus the need for a working Java gadget chain materially lowers operational exploit reliability across mixed classpaths. - Threat intel is quiet: no KEV listing, no retrieved public exploitation evidence, and a low EPSS all argue against treating this like an active-fire emergency.
Why not higher?
If this were PR:N on a default-exposed WebSphere component, it would land much closer to HIGH or CRITICAL. But the required low-privileged position, feature-specific reachability, and gadget-chain dependency all compound downward pressure on real-world severity.
Why not lower?
This still ends in server-side code execution on a valuable middleware tier, and some federated SSO nodes are absolutely internet-facing. If you do run SAML-enabled traditional WebSphere at the edge, the blast radius can be significant even though the reachable population is smaller.
What to do — in priority order.
- Constrain SAML ingress — Allow SAML ACS / federation endpoints to receive traffic only from expected IdPs, reverse proxies, or partner networks. For a MEDIUM verdict there is no mitigation SLA; use this as targeted hardening while you work the 365-day remediation window.
- Disable unused SAML Web SSO — If a WebSphere node does not need SAML federation, remove or disable the SAML ACS application and associated trust association interceptor. This shrinks the reachable population immediately; for MEDIUM, there is no mitigation SLA — go straight to the 365-day remediation window.
- Prioritize exposed federation nodes — Inventory which traditional WebSphere servers are both affected and SAML-enabled, then separate internet-facing or partner-facing nodes from internal-only nodes. For MEDIUM, there is no mitigation SLA, but this triage should drive which systems you patch first inside the remediation window.
- Hunt for anomalous SAML traffic — Review reverse-proxy, WAF, IdP, and application logs for unusual POSTs to SAML endpoints, payload-size anomalies, repeated failed assertion handling, or suspicious Java-child-process events. This is a detection control, not a fix, and fits the normal remediation cadence for MEDIUM.
- A generic perimeter WAF is not enough by itself; Java deserialization payloads can be encoded and app-specific, and the vulnerable sink is inside the SAML processing path.
- Version-only inventory is not enough; it will overstate risk because many affected WebSphere installs do not have the SAML Web SSO path enabled.
- MFA alone does not neutralize the issue; it may reduce attacker access to the low-privilege prerequisite, but it does not remove the vulnerable code path once that prerequisite is met.
Crowdsourced verification payload.
Run this on each traditional WebSphere target host where you know the install path. Invoke it as bash check_cve_2026_9330.sh /opt/IBM/WebSphere/AppServer; it needs only read access to versionInfo.sh output and maintenance package history, not root.
#!/usr/bin/env bash
# check_cve_2026_9330.sh
# Detects likely exposure to CVE-2026-9330 on IBM WebSphere Application Server traditional.
# Usage: bash check_cve_2026_9330.sh /opt/IBM/WebSphere/AppServer
# Exit codes: 0=PATCHED, 1=VULNERABLE, 2=UNKNOWN
set -u
WAS_HOME="${1:-}"
if [ -z "$WAS_HOME" ]; then
echo "UNKNOWN - usage: bash $0 <WAS_HOME>"
exit 2
fi
VERSION_CMD="$WAS_HOME/bin/versionInfo.sh"
if [ ! -x "$VERSION_CMD" ]; then
echo "UNKNOWN - cannot execute $VERSION_CMD"
exit 2
fi
OUT="$($VERSION_CMD -maintenancePackages 2>/dev/null)"
if [ -z "$OUT" ]; then
OUT="$($VERSION_CMD 2>/dev/null)"
fi
if [ -z "$OUT" ]; then
echo "UNKNOWN - failed to read WebSphere version information"
exit 2
fi
# Fast path: interim fix / APAR present
if printf '%s\n' "$OUT" | grep -qi 'PH71453'; then
echo "PATCHED - APAR PH71453 interim fix detected"
exit 0
fi
# Extract a version string like 9.0.5.27 or 8.5.5.29
VERSION="$(printf '%s\n' "$OUT" | grep -Eo '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | head -n1)"
if [ -z "$VERSION" ]; then
echo "UNKNOWN - could not parse WebSphere version"
exit 2
fi
ver_ge() {
# returns 0 if $1 >= $2
[ "$(printf '%s\n%s\n' "$1" "$2" | sort -V | tail -n1)" = "$1" ]
}
ver_lt() {
# returns 0 if $1 < $2
! ver_ge "$1" "$2"
}
# Fixed baselines from IBM advisory / APAR PH71453
FIX_90="9.0.5.29"
FIX_85="8.5.5.30"
case "$VERSION" in
9.*)
if ver_ge "$VERSION" "$FIX_90"; then
echo "PATCHED - version $VERSION is at or above $FIX_90"
exit 0
else
echo "VULNERABLE - version $VERSION is below fixed level $FIX_90 and no PH71453 fix was detected"
exit 1
fi
;;
8.5.*)
if ver_ge "$VERSION" "$FIX_85"; then
echo "PATCHED - version $VERSION is at or above $FIX_85"
exit 0
else
echo "VULNERABLE - version $VERSION is below fixed level $FIX_85 and no PH71453 fix was detected"
exit 1
fi
;;
*)
echo "UNKNOWN - parsed version $VERSION is not in an expected 8.5.x or 9.0.x traditional WAS branch"
exit 2
;;
esac
If you remember one thing.
Sources
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.