← Back to Feed CACHED · 2026-06-25 03:58:12 · CACHE_KEY tenable:166313
tenable:166313 · CWE-1395 · Disclosed 2022-10-18

Oracle WebLogic Server

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

A four-year-old patch bundle sitting on the application server that runs your finance, ERP and SSO front-ends

Tenable plugin 166313 fires when Oracle WebLogic Server 12.2.1.3.0, 12.2.1.4.0 or 14.1.1.0.0 is missing the October 2022 Critical Patch Update. The bundle remediates a stack of issues including CVE-2022-21616 (Core component, network-reachable, low complexity), CVE-2022-22971 (Spring Framework DoS via specially-crafted requests), CVE-2020-28052 (Bouncy Castle BKS-V1 keystore bypass — affects TLS trust), CVE-2020-17521 (Apache Groovy temp-file disclosure), CVE-2021-29425 (Apache Commons IO path traversal), and CVE-2023-23437 (Xerces-J infinite loop). Tenable rates the plugin HIGH (8.1 CVSS v3) — the MEDIUM tag in your queue is from a downstream aggregation, not Oracle's own scoring.

Vendor severity here is *understated*. WebLogic is a canonical enterprise middleware target with a long, ugly history in CISA's KEV catalog (CVE-2017-10271, CVE-2019-2725, CVE-2020-2883, CVE-2020-14882, CVE-2023-21839 — all WebLogic). Mass scanning for WebLogic T3/IIOP and /console is continuous on GreyNoise. A host still at the pre-Oct-2022 patch level in 2026 has also missed every subsequent quarterly CPU, meaning the actual exposed CVE set is much larger than what 166313 alone signals.

"Oct 2022 CPU bundle on WebLogic — a perennial KEV magnet running on enterprise middleware. MEDIUM massively underrates it."
02 · The Attack Path

4 steps from start to impact.

STEP 01

Discover exposed WebLogic listener

Attackers fingerprint WebLogic via the default /console login page, /em Enterprise Manager, or T3/T3s on 7001/7002. Shodan and Censys queries like http.title:"Oracle WebLogic Server Administration Console" return tens of thousands of results. Mass scanners (weblogicScanner, Nuclei templates) hit these every hour.
Conditions required:
  • Network reachability to WebLogic admin port
  • Service banner / /console reachable
Where this breaks in practice:
  • Most mature shops put WebLogic behind a reverse proxy that strips /console
  • T3 is usually firewalled at the perimeter — internal exposure remains the norm
Detection/coverage: GreyNoise tags WebLogic Scanner, Oracle WebLogic RCE Attempt; Shodan facet on weblogic
STEP 02

Trigger Core/Spring/Groovy weakness

An attacker leverages CVE-2022-21616 against the Core component over network protocols, or feeds crafted Spring data binding payloads (CVE-2022-22971) to trigger DoS / memory exhaustion. Public PoC patterns for Groovy and Commons IO chain into file disclosure when WebLogic apps consume attacker-controlled paths.
Conditions required:
  • Reachable WebLogic endpoint
  • Vulnerable component loaded in a deployed application
Where this breaks in practice:
  • Some flaws are auth-required low-priv (Groovy)
  • Spring binder issues need specific app patterns to be reachable
Detection/coverage: Nessus 166313 flags version, but exploitation telemetry comes from WAF rules + WebLogic access logs
STEP 03

Pivot via Bouncy Castle BKS-V1 trust bypass

CVE-2020-28052 lets an attacker forge BKS-V1 keystore HMACs, breaking the integrity assumption behind WebLogic's internal TLS trust stores. In a chained attack this enables MITM between WebLogic and downstream identity providers / databases. Weaponization is limited (researcher PoCs only) but real for adversaries who have already established adjacent network position.
Conditions required:
  • Internal network position
  • Use of BKS-V1 keystores (legacy Java)
Where this breaks in practice:
  • Modern deployments use JKS/PKCS12, not BKS-V1
Detection/coverage: Not detected by network scanners; only Nessus version check
STEP 04

Application takeover / lateral movement

Once a vulnerable component is reached, attacker uses the WebLogic-hosted application's identity to query the backend DB, dump JNDI-stored credentials, or drop a JSP webshell into the deployment directory (servers/AdminServer/tmp/_WL_internal/...). This is the same playbook used against every prior WebLogic RCE family. From the middleware tier the attacker often has DB creds, AD service-account tokens, and SSO keys in one place.
Conditions required:
  • Code execution or auth bypass from prior step
  • Writable deployment directory
Where this breaks in practice:
  • EDR on the host should flag JSP shell drops and Java spawning cmd/bash
Detection/coverage: EDR Java-spawning-shell rules; AppArmor/SELinux confinement on the WebLogic JVM
03 · Intelligence Metadata

The supporting signals.

Patch bundleOracle Critical Patch Update October 2022
Affected versionsWebLogic Server 12.2.1.3.0, 12.2.1.4.0, 14.1.1.0.0
Primary CVEsCVE-2022-21616, CVE-2022-22971, CVE-2020-28052, CVE-2020-17521, CVE-2021-29425, CVE-2023-23437
CVSS v3 (plugin rollup)8.1 / HIGHAV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
Vendor severity stated by userMEDIUM — understated; Tenable's own plugin rates HIGH
KEV status (Oct 2022 CPU CVEs)None of the *exact* Oct 2022 CPU CVEs are individually KEV-listed, but the WebLogic product family has 5+ entries in CISA KEV (CVE-2017-10271, 2019-2725, 2020-2883, 2020-14882, 2023-21839)
EPSS (CVE-2022-21616)~0.6%, percentile ~70 — modest, but WebLogic CVEs historically migrate upward post-PoC
In-the-wild activityContinuous GreyNoise tags for Oracle WebLogic scanners; Shodan returns ~5k internet-exposed admin consoles globally
Public PoCSpring CVE-2022-22971 PoC in spring-framework issue tracker; Bouncy Castle BKS-V1 PoC published with the original disclosure
Fixed versionApply Oct 2022 PSU patch on top of 12.2.1.3, 12.2.1.4, or 14.1.1; better, jump to the latest CPU (Apr 2026) since you have missed ~15 CPUs
Disclosure date2022-10-18 (Oracle CPU release)
04 · The Call

noisgate verdict.

Final Verdict
UPGRADED to HIGH (7.8/10)

Role multiplier is the decisive factor: WebLogic is canonical enterprise middleware — by definition it hosts the application tier for ERP, finance, SSO and customer portals, so an unpatched WebLogic host is rarely a low-value role. WebLogic's documented history of mass-exploited RCE families plus the fact that a host stuck at Oct-2022 patch level has *also* missed every CPU since then floors this above MEDIUM.

HIGH Affected version detection accuracy
HIGH WebLogic role as high-value middleware
MEDIUM Direct in-the-wild exploitation of the *Oct 2022* CVE set specifically

Why this verdict

  • Role multiplier — WebLogic is high-value middleware by definition: it hosts the line-of-business app tier (ERP, financial systems, identity gateways). Chain ends in app-layer takeover plus access to backend DB creds and JNDI secrets — fleet-scale blast radius once leveraged.
  • Stale-patch tax: a host failing 166313 in 2026 has missed ~15 subsequent CPUs (Jan 2023 → Apr 2026), including KEV-listed CVE-2023-21839 and CVE-2024-21006/21181. The plugin is a proxy for *systemic* patch-program failure on that host.
  • Continuous scanner pressure: GreyNoise and Shodan show daily mass-scanning for WebLogic admin endpoints. Friction is not 'no one looks' — friction is 'is the console externally reachable.'
  • Friction adjustment downward: CVE-2022-21616 has AC:H, and several bundled CVEs (Groovy, Commons IO) need authenticated or app-specific reach. That is what keeps the score at 7.8 instead of 9.x — but it does not pull below HIGH given role.

Why not higher?

Bundle does *not* contain an unauthenticated, low-complexity, wormable RCE on par with CVE-2020-14882 or CVE-2023-21839. The headline CVE (2022-21616) is AC:H, and the Bouncy Castle / Groovy / Commons IO components require specific runtime conditions. Absent confirmation that *this specific host* exposes T3 to the internet, CRITICAL would overstate it.

Why not lower?

MEDIUM ignores WebLogic's role as the application-tier identity-and-data fan-out point and its persistent KEV history. A host missing the Oct 2022 CPU is missing every CPU after it as well — treating this as backlog hygiene gives attackers a free runway. The combination of installed-base sensitivity and continuous scanner targeting floors this at HIGH.

05 · Compensating Control

What to do — in priority order.

  1. Block T3/T3s (7001/7002) at the perimeter and segment internally — Use the WebLogic Connection Filter (weblogic.security.net.ConnectionFilterImpl) to deny T3/T3s except from a known admin allowlist, and confirm perimeter firewalls drop 7001/7002. T3 is the historic vector for almost every WebLogic worm. Deploy within the noisgate mitigation SLA of 30 days.
  2. Remove /console and /em from external exposure — Use the front-end reverse proxy (NGINX/Apache/F5) to deny /console, /em, /wls-wsat, /wls_utc. These paths gate authentication- and Spring-based vectors. Same 30-day window.
  3. Deploy WAF virtual patches for known WebLogic payload patterns — Enable F5 ASM, Akamai, or ModSecurity OWASP CRS rules for Java deserialization markers (rO0AB), wls-wsat POSTs, and Spring binder anomalies. Bridges the gap until the CPU lands.
  4. Jump straight to the latest CPU, not just Oct 2022 — Catching up patch-by-patch is wasted change-window. Test against the current quarter (Apr 2026 CPU) and roll one big upgrade. Remediation must land within the noisgate remediation SLA of 180 days.
  5. Audit WebLogic service-account scope — Constrain the OS user running WebLogic to a non-root account with no write access outside domains/. Limits webshell drop and reduces lateral movement when (not if) the next WebLogic 0-day lands.
What doesn't work
  • Network-only EDR / IDS signatures for these specific CVEs — most exploitation is over TLS or T3 (binary) and signatures rot fast.
  • 'It's only internal' assumption — internal-only WebLogic has been the lateral-movement target of every recent WebLogic incident; segmentation matters more than perimeter posture.
  • Java patch on the OS — Oracle ships the JDK inside the WebLogic distribution; updating the system JDK does not patch WebLogic.
  • Reverse proxy SSL termination alone — does not stop authenticated low-priv vectors (Groovy/Commons IO) once an attacker has any app-level identity.
06 · Verification

Crowdsourced verification payload.

Run this on the WebLogic application host as the user that owns the WebLogic install (often oracle or weblogic). Invoke with ./check_wls_oct2022.sh /u01/app/oracle/middleware where the argument is $MW_HOME. Read-only; no privileges beyond access to the install directory.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# noisgate verification — Oracle WebLogic Oct 2022 CPU (Tenable 166313)
# Exit 0=PATCHED, 1=VULNERABLE, 2=UNKNOWN
set -u
MW_HOME="${1:-}"
if [[ -z "$MW_HOME" || ! -d "$MW_HOME" ]]; then
  echo "usage: $0 <MW_HOME>"; echo "UNKNOWN"; exit 2
fi

# 1. Identify base WLS version
REG="$MW_HOME/inventory/registry.xml"
if [[ ! -f "$REG" ]]; then
  # fallback: parse from product.properties
  PROP=$(find "$MW_HOME" -name product.properties -path '*wlserver*' 2>/dev/null | head -n1)
  [[ -z "$PROP" ]] && { echo "UNKNOWN: no registry.xml or product.properties"; exit 2; }
  WLS_VER=$(awk -F= '/^WLS_PRODUCT_VERSION/ {print $2}' "$PROP" | tr -d '\r')
else
  WLS_VER=$(grep -oE 'WebLogic Server" version="[0-9.]+' "$REG" | head -n1 | awk -F'"' '{print $4}')
fi
echo "WLS base version: ${WLS_VER:-unknown}"

if [[ -z "$WLS_VER" ]]; then echo "UNKNOWN"; exit 2; fi

# 2. Plugin scope: 12.2.1.3.0, 12.2.1.4.0, 14.1.1.0.0
case "$WLS_VER" in
  12.2.1.3.0|12.2.1.4.0|14.1.1.0.0) ;;
  *) echo "PATCHED (version $WLS_VER outside 166313 scope)"; exit 0 ;;
esac

# 3. Check for Oct 2022 PSU and later via OPatch
OPATCH="$MW_HOME/OPatch/opatch"
[[ ! -x "$OPATCH" ]] && OPATCH=$(find "$MW_HOME" -name opatch -type f 2>/dev/null | head -n1)
if [[ -z "$OPATCH" || ! -x "$OPATCH" ]]; then
  echo "UNKNOWN: opatch not found"; exit 2
fi

ORACLE_HOME="$MW_HOME" "$OPATCH" lsinventory -oh "$MW_HOME" 2>/dev/null > /tmp/wls_inv.$$
if ! [[ -s /tmp/wls_inv.$$ ]]; then
  echo "UNKNOWN: opatch lsinventory empty"; rm -f /tmp/wls_inv.$$; exit 2
fi

# Oct 2022 PSU patch IDs per Oracle Doc 2806740.2
# 12.2.1.3.0 -> 34604561 ; 12.2.1.4.0 -> 34601861 ; 14.1.1.0.0 -> 34601734
declare -A PSU=(
  [12.2.1.3.0]=34604561
  [12.2.1.4.0]=34601861
  [14.1.1.0.0]=34601734
)
REQ=${PSU[$WLS_VER]}
if grep -qE "Patch[[:space:]]+($REQ|[0-9]{8})" /tmp/wls_inv.$$ && grep -qE "WLS PATCH SET UPDATE (12|14)\.[0-9.]+" /tmp/wls_inv.$$; then
  # any installed PSU >= Oct 2022? look for date strings 2022-10 or later
  if grep -qE '2022-1[0-2]|202[3-9]-[0-9]{2}' /tmp/wls_inv.$$; then
    echo "PATCHED (PSU at or after Oct 2022 detected)"; rm -f /tmp/wls_inv.$$; exit 0
  fi
fi

echo "VULNERABLE: $WLS_VER without Oct 2022 PSU (expected patch $REQ or newer)"
rm -f /tmp/wls_inv.$$
exit 1
07 · Bottom Line

If you remember one thing.

TL;DR
Treat this as HIGH, not MEDIUM. Monday morning: pull the 166313 hit list, cross-reference against external exposure (Shodan/Censys for your ASNs, internal scans for 7001/7002 reachability), and stand up the Connection Filter + reverse-proxy /console block within the noisgate mitigation SLA of 30 days. In parallel, kick off a project to bring every affected WebLogic host to the April 2026 CPU — do not patch to Oct 2022 only, that wastes a change window — landing within the noisgate remediation SLA of 180 days. Any host where 166313 fires AND /console is externally reachable is an immediate exception: mitigate within hours, not weeks.

Sources

  1. Tenable Plugin 166313 — Oracle WebLogic Server (Oct 2022 CPU)
  2. Oracle Critical Patch Update Advisory — October 2022
  3. CISA Alert — Oracle Releases October 2022 Critical Patch Update
  4. CISA KEV Catalog (WebLogic historical entries)
  5. CVE-2020-28052 — Bouncy Castle BKS-V1 HMAC bypass
  6. CVE-2022-22971 — Spring Framework DoS
  7. Rapid7 vulndb — WebLogic Oct 2022 CPU coverage
  8. FIRST EPSS dataset
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.