The WebLogic HTTP listener gets a fresh no-auth kick-in-the-door, and it's the same door thousands of shops still leave facing the internet
CVE-2026-60199 is a Core-component flaw in Oracle WebLogic Server reachable over the standard HTTP listener (siblings CVE-2026-60198/60202/60204 hit T3/IIOP and CVE-2026-60200 hits SOAP). Oracle's terse advisory language is the giveaway: AV:N/AC:L/PR:N/UI:N with full CIA impact and CWE-306 (missing authentication) — a pre-auth request path lands remote code execution. Affected versions per the July 2026 CPU are 12.2.1.4.0, 14.1.1.0.0, 14.1.2.0.0, and 15.1.1.0.0; fix is the cumulative July 2026 CPU bundle.
Vendor severity matches reality. WebLogic has been the poster child for unauth deserialization-class RCEs for a decade (CVE-2017-10271, CVE-2019-2725, CVE-2020-14882, CVE-2023-21839) and Oracle almost never overstates on these — if anything the vector tends to be under-described. HTTP is the *most* exposed listener of the WebLogic quartet: it fronts admin consoles, /console, /wls-wsat, and app deployments, and it's the one most likely to survive a perimeter review because 'it's just a web app.' A working exploit will surface fast; treat the clock as already ticking.
5 steps from start to impact.
Discover reachable WebLogic HTTP listener
X-Powered-By, /console/login/LoginForm.jsp, and default error pages. Tooling: Shodan (product:"Oracle WebLogic"), Censys, FOFA, weblogicScanner, nuclei weblogic templates.- Network reachability to WebLogic HTTP listener
- Target on 12.2.1.4 / 14.1.1 / 14.1.2 / 15.1.1
- Mature shops front WebLogic with a WAF or reverse proxy that strips admin paths
- Many prod WebLogic clusters are internal-only behind LB VIPs
Send crafted HTTP request to vulnerable endpoint
curl one-liners within days of PoC drop. Expect a public PoC from Y4er, potatos1ng, or the VulhubOSS crew within 2–4 weeks.- Unauthenticated HTTP reach to the vulnerable handler
- Handler exposed by default (not disabled)
- Some deployments disable specific handlers (
/wls-wsat,/_async) after prior CPUs - WAF rules for prior WebLogic CVEs may catch naive payloads
Achieve RCE as WebLogic service account
oracle on Linux or a dedicated service account on Windows. Attacker deploys a JSP webshell (AntSword, Behinder/冰蝎, Godzilla/哥斯拉) into a served context, or spawns a Cobalt Strike / Sliver beacon.- Successful exploit from step 2
- WebLogic process has write access to a served directory or
stage/path
- EDR on the app tier (CrowdStrike, SentinelOne, Defender for Endpoint) flags JSP-drop and
java → cmd/sh → whoamichains reliably - Egress filtering blocks beacon C2 on well-instrumented networks
java → shell) alerting is a default rule in most platforms.Credential and pivot harvest from the domain
SerializedSystemIni.dat + config.xml to decrypt datasource passwords with WebLogicPasswordDecryptor, pulls JDBC creds to Oracle/MSSQL backends, and lifts saved LDAP bind credentials. On Windows, mimikatz/nanodump against the service account or Kerberoast if the account is a domain user.- Local read on
security/SerializedSystemIni.datandconfig/config.xml - Service account has meaningful privileges
- Least-privilege service accounts limit lateral value
- Vaulted secrets (CyberArk, Vault agent injection) mean config.xml is bereft of usable creds
Lateral movement to data tier or Oracle Identity plane
- Reachable data tier from WebLogic subnet
- OIM/OAM/SOA Suite co-tenanted on same domain
- Network segmentation from app tier to data tier
- Separate WebLogic domains for OIM vs. LOB apps
The supporting signals.
| In-the-wild status | No confirmed exploitation as of 2026-07-24 (3 days post-disclosure). CyCognito and SOCRadar have flagged it in the emerging-threat bucket; no KEV listing yet. |
|---|---|
| Proof-of-concept | None public as of 2026-07-24. Expect drop from Y4er, potatos1ng, threedr3am, or VulhubOSS within 2–4 weeks based on prior WebLogic CPU pattern (CVE-2023-21839 had public PoC in ~10 days). |
| EPSS | 0.00393 (~0.4%) — low today because scoring is regression-based on public exploit signals; expect a 10–50× jump within a month if PoC lands. |
| KEV status | Not listed as of 2026-07-24. WebLogic RCEs are frequent KEV entries — historical time-to-KEV is 30–90 days from CPU. |
| CVSS vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H — *network, low complexity, no auth, no UI, full CIA*. Matches CWE-306 (missing authentication). |
| Affected versions | WebLogic 12.2.1.4.0, 14.1.1.0.0, 14.1.2.0.0, 15.1.1.0.0. Older 10.3.6 / 12.1.3 are out of Premier Support — assume vulnerable, no patch coming. |
| Fixed version | Oracle July 2026 Critical Patch Update cumulative bundle. Patches are per-version PSUs; no standalone hotfix. |
| Exposure data | Shodan typically shows ~14–18k internet-facing WebLogic instances; Censys ~20k. HTTP listener (7001/7002/443) is the modal exposure. |
| Disclosed | 2026-07-21 in Oracle's quarterly CPU. |
| Reporter | Not individually credited in the CPU summary; Oracle's CPU acknowledgements page will list the researcher when it updates. |
noisgate verdict.
Unauthenticated network-reachable RCE (CWE-306) in a middleware product with a ~15k-instance internet-exposed population and a decade-long track record of same-class bugs being weaponized within weeks. Role multiplier is decisive: WebLogic canonically hosts Oracle Identity Manager, SOA Suite, and Fusion Apps — compromise of one instance frequently pivots to identity-plane or regulated-data-tier takeover.
Why this verdict
- Pre-auth network RCE stands on its own merits — no user interaction, no credentials, HTTP transport. Every friction adjustment starts from a floor of HIGH, not MEDIUM.
- Role multiplier: WebLogic is a canonical high-value-role component. It underpins Oracle Identity Manager, Access Manager, SOA Suite, and Fusion Middleware applications; a compromise ends in identity-plane or regulated-data takeover in a majority of enterprise deployments. This alone floors the verdict at CRITICAL.
- Historical base rate is damning. Every prior 9.8-class WebLogic Core CVE (2017-10271, 2019-2725, 2020-14882, 2023-21839) reached public PoC within weeks and KEV within months. There is no reason to believe this one is different.
- Installed base is large and durably exposed. ~15–20k internet-facing instances per Shodan/Censys; internal exposure is an order of magnitude higher. Even a 5% patch lag leaves a target-rich environment.
- Friction is thin. WAF virtual-patching helps *specific* payloads once PoC exists but does not remove pre-auth reach; the AC:L designation means no exotic prerequisites.
Why not higher?
Score is capped at 9.8 by CVSS 3.1 for this vector; my 9.6 sits fractionally below Oracle's 9.8 to reflect that (a) no public PoC exists yet as of 2026-07-24, and (b) HTTP listener is more commonly WAF-fronted than the T3 sibling CVEs. This is a rounding delta, not a bucket change.
Why not lower?
Downgrading to HIGH would require either a credible authentication prerequisite (there is none — CWE-306) or a narrow affected-version slice (four major branches are hit). Neither exists. The 'internet-facing WebLogic is rare in mature shops' argument does not survive contact with Shodan telemetry, and the internal blast radius is worse than the external one when OIM/OAM co-tenants exist.
What to do — in priority order.
- Block WebLogic HTTP listener at the perimeter today — For any WebLogic instance that does not need direct internet reach, block tcp/7001/7002 and any non-standard WebLogic HTTP ports at the edge firewall / cloud SG. Deploy within 3 days per the noisgate mitigation SLA for CRITICAL. This does not fix internal exposure but removes the highest-risk population from opportunistic scanners.
- Restrict
/console,/wls-wsat,/_async,/em,/soa-infraat reverse proxy / WAF — Even if you cannot pull the whole listener offline, most exploited WebLogic endpoints live in a small set of admin/service paths. Deny these paths at F5 / Nginx / Apache / Cloudflare in front of WebLogic within 72 hours. Combine with source-IP allowlisting to admin bastions. - Enable vendor WAF virtual patches for July 2026 WebLogic CPU — F5 ASM, Akamai Kona, Cloudflare Managed Rules, Imperva, and AWS WAF Managed Rules ship WebLogic virtual-patch signatures within 3–7 days of a CPU. Turn them on in *blocking* mode, not detect-only, within the 3-day mitigation window.
- Apply Oracle July 2026 CPU bundle to all four affected branches — The real fix. Roll through non-prod → prod using your standard change window; target full remediation within 90 days per the noisgate remediation SLA for CRITICAL. Escalate immediately to *within hours* if a public PoC drops or CISA adds this to KEV.
- Hunt for prior compromise now, not after PoC drops — Look for JSP files in
servers/*/tmp/_WL_user/, unexpected.wardeployments,SerializedSystemIni.datreads by non-service users,java.exe/javaspawningcmd.exe//bin/sh. Retention ≥ 60 days ideally; assume some subset of instances was hit by researchers or early opportunists.
- Changing default WebLogic admin password — this is a *missing-auth* bug (CWE-306), not weak credentials. Rotation does nothing.
- Disabling the T3 protocol — a common WebLogic hardening step, but this CVE is over HTTP, not T3. Sibling CVEs (60198/60202/60204) are T3/IIOP; disable-T3 helps those, not this one.
- Network IDS in detect-only mode — telling you *after* the fact that a pre-auth RCE landed is not a control, it is a post-mortem.
- Relying on 'we're behind a load balancer' — LBs terminate TLS and forward HTTP; the vulnerable handler still gets the request.
Crowdsourced verification payload.
Run on a Linux auditor workstation or jump host with read access to the WebLogic install directory (typically the oracle or WebLogic service account). Invoke as ./check_cve_2026_60199.sh /u01/oracle/middleware where the argument is the WebLogic MW_HOME. Requires read access to registry.xml and OPatch. Exits 2 = VULNERABLE, 0 = PATCHED, 1 = UNKNOWN.
#!/usr/bin/env bash
# check_cve_2026_60199.sh — WebLogic July 2026 CPU (CVE-2026-60199) verifier
# Usage: ./check_cve_2026_60199.sh <MW_HOME>
# Exit: 0 PATCHED | 1 UNKNOWN | 2 VULNERABLE
set -u
MW_HOME="${1:-}"
if [[ -z "$MW_HOME" || ! -d "$MW_HOME" ]]; then
echo "UNKNOWN: pass a valid MW_HOME as arg 1" >&2; exit 1
fi
REG="$MW_HOME/registry.xml"
if [[ ! -r "$REG" ]]; then
echo "UNKNOWN: cannot read $REG" >&2; exit 1
fi
# Extract WebLogic component version from registry.xml
WLS_VER=$(grep -Eo 'name="WebLogic Server"[^/]*version="[0-9.]+"' "$REG" \
| grep -Eo 'version="[0-9.]+"' | head -1 | cut -d'"' -f2)
if [[ -z "$WLS_VER" ]]; then
echo "UNKNOWN: could not parse WebLogic version from $REG" >&2; exit 1
fi
echo "Detected WebLogic version: $WLS_VER"
# Vulnerable branches (unpatched)
case "$WLS_VER" in
12.2.1.4.0|14.1.1.0.0|14.1.2.0.0|15.1.1.0.0) BRANCH_VULN=1 ;;
*) echo "PATCHED: $WLS_VER not in affected branch list"; exit 0 ;;
esac
# Confirm via OPatch that the July 2026 CPU bundle is applied.
# Oracle assigns per-branch patch IDs; check for CPUJUL2026 marker in lsinventory.
OPATCH="$MW_HOME/OPatch/opatch"
if [[ ! -x "$OPATCH" ]]; then
echo "UNKNOWN: OPatch not found or not executable at $OPATCH" >&2; exit 1
fi
INV=$("$OPATCH" lsinventory 2>/dev/null)
if [[ -z "$INV" ]]; then
echo "UNKNOWN: opatch lsinventory returned empty" >&2; exit 1
fi
if echo "$INV" | grep -Eiq 'CPUJul2026|JUL2026|Patch ?37[0-9]{6}.*WLS'; then
echo "PATCHED: July 2026 CPU marker present in OPatch inventory"
exit 0
fi
echo "VULNERABLE: WebLogic $WLS_VER without July 2026 CPU marker in inventory"
echo " Apply Oracle CPUJul2026 for your branch immediately."
exit 2
If you remember one thing.
Sources
- Oracle Critical Patch Update Advisory — July 2026
- CyCognito — Emerging Threat: Oracle WebLogic Multiple Critical RCEs (July 2026 CPU)
- secnews.gr — Oracle WebLogic CPU July 2026: 5 critical RCEs
- SOCRadar — Oracle July 2026 CPU: 1,449 Patches, 10 Score Max
- Tenable — Oracle July 2026 Critical Patch Update Addresses 1235 CVEs
- Threat-Modeling.com — Oracle July 2026 CPU: 5 Critical and 12+ High Severity
- byteiota — Oracle CPU July 2026: Ten CVSS 10.0 Flaws
- CISA Known Exploited Vulnerabilities Catalog
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.