CVE-2026-21962

Oracle HTTP Server / WebLogic Proxy Plug-in Improper Access Control (CVE-2026-21962)

Initial Access Lateral Movement Last updated:

Detects exploitation attempts and successful exploitation of CVE-2026-21962, an improper access control (CWE-284) vulnerability in the Oracle HTTP Server and Oracle WebLogic Server Proxy Plug-in (mod_wl / mod_weblogic). The flaw allows unauthenticated remote attackers to bypass intended access restrictions on proxied WebLogic back-ends, reaching administrative consoles, internal management endpoints, and paths that should be filtered by the reverse proxy. CISA added this CVE to the KEV catalog on 2026-08-24. Detection focuses on anomalous proxied requests to sensitive WebLogic paths (/console, /wls-wsat, /management, /em), access-control bypass patterns such as path traversal, double-encoding, and semicolon/URL-normalization tricks against the proxy, and web-server access logs where the proxy forwarded requests it should have denied.

Vulnerability Intelligence

KEV — Known Exploited

CVSS

Unscored
CVSS vector not yet published
Write-up coming soon

What is CVE-2026-21962 Oracle HTTP Server / WebLogic Proxy Plug-in Improper Access Control (CVE-2026-21962)?

Oracle HTTP Server / WebLogic Proxy Plug-in Improper Access Control (CVE-2026-21962) (CVE-2026-21962) maps to the Initial Access and Lateral Movement tactics — the adversary is trying to get into your network in MITRE ATT&CK.

This page provides production-ready detection logic for Oracle HTTP Server / WebLogic Proxy Plug-in Improper Access Control (CVE-2026-21962), covering the data sources and telemetry it touches: IIS Logs, Oracle HTTP Server access logs, Syslog, Web proxy logs. The queries below are rated high severity at medium confidence, and ship for 7 SIEM platforms — KQL, SPL, Elastic, QRadar, Sumo, YARA-L, LogScale.

MITRE ATT&CK

Tactic
Initial Access Lateral Movement
Microsoft Sentinel / Defender
kusto
let sensitivePaths = dynamic(["/console","/wls-wsat","/management","/em","/bea_wls_internal","/wls-exporter","/_async"]);
let bypassMarkers = dynamic(["..","%2e%2e","%252e","%2f","%252f","..;",";/","//","%00"]);
(union isfuzzy=true
    (W3CIISLog
    | project TimeGenerated, csUriStem = csUriStem, csUriQuery = csUriQuery, cIP = cIP, scStatus, csMethod, sSiteName = sSiteName, csUserAgent = csUserAgent),
    (Syslog
    | where ProcessName in ("httpd","OHS","oracle_http_server")
    | extend csUriStem = extract(@"\"[A-Z]+\s+([^\s\?]+)", 1, SyslogMessage), csUriQuery = extract(@"\?([^\s]+)", 1, SyslogMessage), cIP = extract(@"^(\d{1,3}(?:\.\d{1,3}){3})", 1, SyslogMessage), scStatus = extract(@"\"\s(\d{3})\s", 1, SyslogMessage), csMethod = extract(@"\"([A-Z]+)\s", 1, SyslogMessage), csUserAgent = "", sSiteName = HostName)
)
| extend fullUri = strcat(tolower(csUriStem), "?", tolower(csUriQuery))
| where sensitivePaths has_any (fullUri) or fullUri has_any (bypassMarkers)
| where csUriStem has_any (sensitivePaths) or fullUri has_any (bypassMarkers)
| summarize hits = count(), paths = make_set(csUriStem, 20), statuses = make_set(scStatus, 10), firstSeen = min(TimeGenerated), lastSeen = max(TimeGenerated) by cIP, sSiteName
| where hits >= 3
| order by hits desc

Correlates IIS/OHS web access logs (W3CIISLog and OHS access logs shipped via Syslog) for requests to sensitive WebLogic proxy paths combined with access-control-bypass encoding markers, grouping by source IP to surface probing against CVE-2026-21962.

high severity medium confidence

Data Sources

IIS Logs Oracle HTTP Server access logs Syslog Web proxy logs

Required Tables

W3CIISLog Syslog

False Positives

  • Legitimate administrators accessing the WebLogic Admin Console (/console) from known jump hosts
  • Vulnerability scanners and authorized penetration tests generating bulk requests to WebLogic management paths
  • Health-check and monitoring probes that hit /wls-exporter or /management on a schedule
  • Load balancers forwarding double-slash URIs due to path normalization quirks

Sigma rule & cross-platform mapping

The detection logic for Oracle HTTP Server / WebLogic Proxy Plug-in Improper Access Control (CVE-2026-21962) (CVE-2026-21962) above is provided in a vendor-neutral form so you can deploy it on any SIEM. The same logic is shipped here as native KQL (Microsoft Sentinel / Defender), SPL (Splunk), Elastic (Elastic Security (EQL)), QRadar (IBM QRadar (AQL)), Sumo (Sumo Logic CSE), YARA-L (Google Chronicle / SecOps), LogScale (CrowdStrike LogScale (CQL)) queries. In Sigma terms, this detection targets the following logsource:

logsource:
  category: network_connection
  product: windows

Browse the community-maintained Sigma rules for this technique:


Testing Methodology

Validate this detection against 3 adversary techniques from Atomic Red Team. Each test below lists the behaviour to exercise and the telemetry you should expect to see. Executable commands and cleanup steps are available with Pro.

  1. Test 1WebLogic console access-control bypass via path traversal

    Expected signal: Web-server access log entry with URI containing '..;/console' from the test source IP

  2. Test 2WebLogic WSAT endpoint reach via double-encoding

    Expected signal: Access log entry containing '%2e%2e/wls-wsat' from the test host

  3. Test 3WebLogic management endpoint enumeration burst

    Expected signal: Five IIS/OHS access log entries to //management/weblogic from the test host


Response Playbook

Triage

  1. Confirm whether the targeted host runs Oracle HTTP Server or the WebLogic Server Proxy Plug-in (mod_wl/mod_weblogic) fronting a WebLogic domain, and identify the WebLogic version and January 2026 CPU patch level.
  2. Review the source IP's full request history: determine whether requests to /console, /wls-wsat, /management or /bea_wls_internal returned 200/302 (reached back-end) versus 403/404 (blocked by proxy).
  3. Correlate the source IP against threat intelligence and check whether it appears in other web-server logs across the estate, indicating scanning of KEV CVE-2026-21962.
  4. Determine whether any bypass request was followed by authenticated admin console activity, deployment of a new application/WAR, or WLST/management API calls.

Containment

  1. Apply the Oracle January 2026 Critical Patch Update for the HTTP Server / WebLogic Proxy Plug-in to the affected hosts.
  2. Block the offending source IP(s) at the perimeter and add proxy/WAF rules to deny external access to /console, /wls-wsat, /management, /bea_wls_internal and /wls-exporter.
  3. If compromise is suspected, isolate the WebLogic host from the network and rotate WebLogic administrative and datasource credentials.

Evidence Collection

  1. Preserve OHS/IIS/Apache access and error logs, WebLogic AdminServer.log and access.log, and any proxy plug-in debug logs covering the activity window.
  2. Capture the full raw HTTP requests (method, URI, headers, encodings) that bypassed proxy access controls for forensic and IOC extraction.
  3. Snapshot the WebLogic domain deployment directory and autodeploy folder to detect newly dropped WAR/JSP web shells.

Escalation Criteria

  • ! Escalate to incident response if a bypass request reached an authenticated admin endpoint (200/302 on /console or /management) from an untrusted source.
  • ! Escalate if there is evidence of application deployment, new JSP/WAR files, or outbound connections from the WebLogic host following the bypass attempts.

Investigation Guide

Forensic Artifacts

  • > OHS/IIS/Apache access logs showing requests to sensitive WebLogic paths with 2xx/3xx responses
  • > WebLogic AdminServer access.log and domain deployment/autodeploy directory contents
  • > Proxy plug-in configuration (mod_wl_ohs.conf / weblogic.conf) and any recently created JSP/WAR files

Tuning Guidance

Baseline the source IPs and subnets that legitimately administer the WebLogic console and management endpoints (jump hosts, monitoring, approved scanners) and exclude them. Tighten the bypass-encoding regex if your proxy legitimately emits double-slash URIs. Raise the per-source hit threshold in high-traffic environments, and prioritize alerts where sensitive-path requests return 200/302 over those returning 403/404.


Hunting Queries

Surfaces successful (2xx/3xx) reaches to sensitive WebLogic proxy paths, indicating the access-control bypass actually returned back-end content rather than a proxy denial.

Hunting — KQL
kql
W3CIISLog | where csUriStem has_any ("/console","/wls-wsat","/management","/bea_wls_internal") | where scStatus in ("200","302") | summarize count() by cIP, csUriStem, bin(TimeGenerated, 1h) | order by count_ desc
Hunting — SPL
spl
index=web (sourcetype=iis OR sourcetype="oracle:ohs:access") (cs_uri_stem="*/console*" OR cs_uri_stem="*/wls-wsat*" OR cs_uri_stem="*/management*") (status=200 OR status=302) | stats count by src_ip, cs_uri_stem

Atomic Red Team Tests

Test 1 WebLogic console access-control bypass via path traversal
linux

Attempts to reach the WebLogic Admin Console through the proxy using a semicolon/traversal trick that bypasses proxy path filtering (lab only).

Command

bash
curl -sk -o /dev/null -w '%{http_code}\n' 'https://ohs-lab.example.local/..;/console/login/LoginForm.jsp'

Cleanup

bash
echo 'No cleanup required; read-only request'

Expected Telemetry

Web-server access log entry with URI containing '..;/console' from the test source IP

Expected Detection

KQL/SPL rule fires on sensitive path + bypass marker from the source IP

Test 2 WebLogic WSAT endpoint reach via double-encoding
linux

Sends a double-URL-encoded request to /wls-wsat to test whether the proxy forwards a path it should deny (lab only).

Command

bash
curl -sk -o /dev/null -w '%{http_code}\n' 'https://ohs-lab.example.local/%2e%2e/wls-wsat/CoordinatorPortType'

Cleanup

bash
echo 'No cleanup required'

Expected Telemetry

Access log entry containing '%2e%2e/wls-wsat' from the test host

Expected Detection

Bypass-encoding branch of the detection matches on /wls-wsat request

Test 3 WebLogic management endpoint enumeration burst
windows

Issues a burst of requests to internal WebLogic management paths to trigger the per-source frequency threshold (lab only).

Command

powershell
1..5 | ForEach-Object { Invoke-WebRequest -UseBasicParsing -Uri "https://ohs-lab.example.local//management/weblogic/latest/domainRuntime" -SkipCertificateCheck -ErrorAction SilentlyContinue }

Cleanup

powershell
Write-Output 'No cleanup required'

Expected Telemetry

Five IIS/OHS access log entries to //management/weblogic from the test host

Expected Detection

Aggregation rule fires when hits >= 3 for the source IP

Related Detections