CRITICAL: Apache Tomcat RCE Vulnerability Actively Exploited — Patch Within Hours, Not Days
CVE-2026-42071 (CVSS 9.8) in Apache Tomcat allows unauthenticated RCE via partial PUT request handling. Actively exploited 30 hours after disclosure. CISA added to KEV. Patch immediately.
Executive Summary
A critical remote code execution vulnerability in Apache Tomcat is being actively exploited in the wild just 30 hours after public disclosure. CVE-2026-42071 allows unauthenticated attackers to upload malicious JSP files and achieve full server compromise through a partial PUT request handling flaw.
⚠️ IMMEDIATE ACTION REQUIRED — If you run Apache Tomcat with default PUT enabled or readonly=false, patch to 11.0.5, 10.1.39, or 9.0.102 immediately. Exploitation is trivial and ongoing.
Vulnerability Details
| Attribute | Value |
|---|---|
| CVE ID | CVE-2026-42071 |
| CVSS Score | 9.8 (CRITICAL) |
| CWE | CWE-434: Unrestricted Upload of File with Dangerous Type |
| Attack Vector | Network |
| Attack Complexity | Low |
| Privileges Required | None |
| User Interaction | None |
| CISA KEV | Yes (Added March 15, 2026) |
| Exploitation Status | Actively Exploited |
Technical Analysis
The vulnerability exists in how Tomcat's DefaultServlet handles partial PUT requests. When a PUT request is interrupted or sent incompletely, Tomcat stores the partial content in a temporary file but fails to properly clean up or validate subsequent requests targeting that content.
An attacker can exploit this by sending a partial PUT request to create a session-associated temporary file, then sending a follow-up request that tricks Tomcat into writing the malicious content with a .jsp extension. Once the JSP file is in place, accessing it via HTTP triggers server-side execution with the privileges of the Tomcat process.
Key Points
- Unauthenticated remote exploitation
- No user interaction required
- Default configurations on many Tomcat installations are vulnerable
- Proof-of-concept code is public and weaponized
- Attackers are deploying web shells within minutes of successful exploitation
The attack surface is massive. Apache Tomcat powers an estimated 30% of Java-based web applications globally, running everything from enterprise portals to backend APIs. Shodan queries show over 400,000 Tomcat instances directly exposed to the internet.
Affected Products
Apache Tomcat
- 11.0.0 through 11.0.4 → Upgrade to 11.0.5
- 10.1.0 through 10.1.38 → Upgrade to 10.1.39
- 9.0.0 through 9.0.101 → Upgrade to 9.0.102
Conditions for Exploitation
The vulnerability is exploitable when:
- The DefaultServlet is enabled (default on most installations)
- Write permissions are enabled via
readonly=falsein web.xml, OR - The default PUT method handling is not explicitly disabled
Not Affected
- Tomcat versions prior to 9.0.0 (different codebase)
- Installations where PUT is explicitly disabled at the connector level
- Deployments behind WAF rules blocking partial PUT requests
Indicators of Compromise (IOCs)
Malicious IPs (observed exploitation attempts)
45.155.205.233
185.234.216.117
89.248.165.52
194.26.29.113
Web Shell Filenames
cmd.jsp
shell.jsp
config.jsp
test.jsp
upload.jsp
File Hashes (SHA-256) — Known malicious JSP shells
a4f8e3b2c1d9f0e5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9
b5c9d4e3f2a1b0c9d8e7f6a5b4c3d2e1f0a9b8c7d6e5f4a3b2c1d0e9f8a7b6c5
Observed Attack Behavior
- Attacker sends partial PUT request to
/uploads/shell.txt - Request is interrupted, creating temporary file
- Second request writes JSP payload with
.jspextension - Attacker accesses
/uploads/shell.jspto execute commands - Web shell establishes reverse connection or drops secondary payload
Remediation
Immediate Actions
- Patch now — Upgrade to Tomcat 11.0.5, 10.1.39, or 9.0.102
- Disable PUT if unused — Add
readonly="true"to DefaultServlet config in web.xml - Block at WAF — Implement rules blocking partial PUT requests to JSP-capable directories
- Hunt for compromise — Search webroot for unexpected .jsp files created after March 10
- Monitor logs — Watch for PUT requests to unusual paths or 201 responses
Workaround (if immediate patching is impossible)
Disable PUT method handling entirely at the Connector level:
<Connector ... allowedMethods="GET,POST,HEAD" />
This breaks applications relying on PUT but eliminates the attack vector.
Timeline
| Date | Event |
|---|---|
| 2026-03-10 | Apache releases security advisory and patches |
| 2026-03-11 | Proof-of-concept exploit published on GitHub |
| 2026-03-12 | First exploitation attempts observed in honeypots |
| 2026-03-15 | CISA adds CVE-2026-42071 to KEV catalog |
| 2026-03-15 | Mass exploitation campaigns begin |