Executive Summary
The Apache Software Foundation has disclosed CVE-2026-3098, a critical OGNL (Object-Graph Navigation Language) injection vulnerability in Apache Struts. The flaw allows unauthenticated remote code execution on servers running vulnerable Struts applications and is reminiscent of CVE-2017-5638, the vulnerability exploited in the infamous 2017 Equifax data breach.
CVSS Score: 9.8 (Critical)
CISA has added this vulnerability to the Known Exploited Vulnerabilities catalog with a February 20, 2026 remediation deadline for federal agencies.
Vulnerability Overview
Root Cause
The vulnerability exists in the Struts file upload handling when using the Jakarta multipart parser. Insufficient sanitization of the Content-Disposition header in multipart requests allows OGNL expression injection, enabling server-side code execution.
Attack Chain
1. Attacker identifies web application running Apache Struts
2. Sends multipart HTTP request with malicious Content-Disposition header
3. OGNL expression embedded in header bypasses input validation
4. Struts evaluates the OGNL expression on the server
5. Arbitrary Java code executes with application server privileges
6. Attacker achieves remote code executionTechnical Details
Affected Versions
| Struts Version | Affected | Fixed Version |
|---|---|---|
| 6.0.0 - 6.4.0 | Yes | 6.4.1 |
| 2.5.0 - 2.5.33 | Yes | 2.5.34 |
| 2.3.x (EOL) | Likely | No fix — Upgrade required |
Exploitation
The vulnerability can be exploited with a single HTTP request containing a crafted OGNL expression in the Content-Disposition filename of a multipart form upload. The OGNL payload:
- Overrides the default member access policy to gain reflection access
- Clears Struts' excluded package/class security lists
- Uses
java.lang.ProcessBuilderto execute arbitrary OS commands - Streams command output back to the HTTP response
Full exploit payload redacted — see the Apache Struts security bulletin and NVD entry for technical details. The attack requires only a single unauthenticated POST request to any Struts action that processes file uploads.
Identifying Affected Systems
How to Detect Struts Applications
# Check for common Struts indicators
# .action or .do URL extensions
# Struts error pages with stack traces
# X-Powered-By headers mentioning Struts
# Scan web applications for Struts version
# Check WEB-INF/lib/ for struts2-core-*.jarCommon Deployment Patterns
| Deployment | Risk Level |
|---|---|
| Internet-facing Java web apps with file upload | Critical |
| Internal applications with Struts 2.5.x/6.x | High |
| Applications behind WAF with OGNL rules | Medium |
| Applications using Struts REST plugin only | Lower |
Immediate Remediation
Option 1: Upgrade Struts (Recommended)
Update to the fixed version:
<!-- Maven pom.xml -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>6.4.1</version>
</dependency>Option 2: WAF Rules (Temporary Mitigation)
Deploy WAF rules to block OGNL injection patterns:
# ModSecurity Rule
SecRule REQUEST_HEADERS:Content-Disposition "@rx (%\{|#[_a-zA-Z])" \
"id:2026309801,phase:1,deny,status:403,\
msg:'Potential OGNL Injection in Content-Disposition'"
Option 3: Disable File Upload
If file upload is not required:
<!-- struts.xml -->
<constant name="struts.multipart.maxSize" value="0" />Detection Rules
SIEM Query (Splunk)
index=web sourcetype=access_combined
| where match(content_disposition, "(%\{|#[_a-zA-Z]|ognl|OgnlContext|memberAccess)")
| stats count by src_ip, dest, uri_path
| where count > 3IDS/IPS Signature
alert http any any -> any any (
msg:"CVE-2026-3098 Apache Struts OGNL Injection";
flow:to_server,established;
content:"Content-Disposition"; http_header;
pcre:"/Content-Disposition[^;]*(%\{|#[a-z_])/i";
sid:2026309802;
rev:1;
)
Historical Context
This vulnerability is particularly concerning given the history of Struts OGNL injection flaws:
| CVE | Year | Impact |
|---|---|---|
| CVE-2017-5638 | 2017 | Equifax breach — 147 million records |
| CVE-2018-11776 | 2018 | Widespread exploitation within 24 hours |
| CVE-2023-50164 | 2023 | File upload path traversal |
| CVE-2026-3098 | 2026 | Current — OGNL injection returns |
Organizations that were affected by previous Struts vulnerabilities should treat this as a high-priority emergency.