Home/ Blog/ Security news/ Article
Blog · Security news

Apache Struts flaw: one crafted JSON request can exhaust memory and crash the app (CVE-2026-73633)

CVE-2026-73633 (S2-072) lets one oversized JSON request exhaust memory in Apache Struts and crash the app. A public PoC is out. Patch to 7.3.0 or 6.11.0.

Glass beaker overflowing under a continuous pouring stream on a lab stand

A single oversized web request can now take down an Apache Struts application. CVE-2026-73633, which Apache tracks as advisory S2-072, lets an attacker send a JSON body that Struts reads with no size limit, filling the server's heap until the application stalls or crashes. This is a denial-of-service bug, not the remote code execution Struts is infamous for, and Apache rates it Moderate. Struts still runs deep inside enterprise Java, a proof-of-concept is already public, and the fix is worth scheduling. Here is who is actually exposed and what to do about it.

Are you actually exposed?

You are affected only if your application uses the optional Struts JSON plugin and accepts JSON request bodies. An app that never loads the plugin, or that uses it only to serialize JSON responses, is not vulnerable to this. Check that first, because it decides whether this is an urgent job or a routine upgrade.

The plugin in question ships as struts2-json-plugin, and it is what turns an incoming JSON payload into action properties your code can read. Grep your build files for that dependency, then look at whether any action actually consumes a JSON content type on input. If both are true, you are in scope.

Affected and fixed versions

The flaw reaches across every current Struts line. On the legacy branches that means 2.x up to 2.3.37 and 2.5.x up to 2.5.33; on the maintained branches it is 6.x up to 6.10.0 and 7.x up to 7.2.1. Apache shipped the fix in 7.3.0, and backported it to 6.11.0 for anyone staying on the 6.x series. The 2.x and 2.5.x branches are end of life and get no dedicated patch, so the only real fix there is to move onto a supported release.

Struts branchAffected versionsFixed in
2.x (end of life)2.1.8 to 2.3.37Move to 7.3.0
2.5.x (end of life)2.5.0 to 2.5.33Move to 7.3.0
6.x6.0.0 to 6.10.06.11.0
7.x7.0.0 to 7.2.17.3.0
Source: Apache Struts security advisory S2-072.

What the attack looks like, and how to catch it

The mechanism is simple, which is part of why it is worth taking seriously. An attacker points a large or open-ended JSON body at an endpoint that maps to a JSON-plugin action. Struts buffers that input in memory without a ceiling, the heap fills, garbage collection starts thrashing, and the process either throws an out-of-memory error or grinds to a halt. No credentials and no clever payload are required, just size.

You do not need the exploit to detect the abuse. Watch for three signals together: unusually large request bodies aimed at your JSON endpoints, sudden spikes in heap usage paired with full-garbage-collection storms, and OutOfMemoryError entries in application logs that line up with a burst of inbound traffic. Any one of those is noise; the three together, on a Struts app, is the pattern. This is the same class of blind spot we flagged with a denial-of-service flaw in Cisco firewalls: the request looks ordinary until the resource math tips over.

Your move: scope first, then patch or cap

Start by confirming exposure, as above. If you are not running the JSON plugin, log the CVE and move on. If you are, patch on the normal change cadence: 6.x moves to 6.11.0, and everything else moves to 7.3.0.

If you cannot patch this week, put a ceiling on request size in front of the app. Apache's own workaround is to cap the request body size upstream of Struts, either at a reverse proxy or in the app server. On nginx that is client_max_body_size; most application servers have an equivalent setting. A sane limit rejects the oversized request before Struts ever buffers it.

Treat that cap as permanent, not a stopgap. Unbounded-read bugs like this one are a recurring class (the formal name is uncontrolled resource consumption, CWE-400), and a body-size limit at the edge is cheap insurance against the next one, whether or not you run Struts at all. Widely deployed server software keeps drawing this kind of attention, as the steady stream of flaws in other internet-facing server platforms shows. For now, no in-the-wild exploitation has been reported and EPSS scores this in the 25th percentile, so you have room to do this right rather than fast.

Frequently asked questions

What is CVE-2026-73633 in Apache Struts?

CVE-2026-73633, which Apache tracks as S2-072, is a denial-of-service flaw in the Struts JSON plugin. The plugin reads a JSON request body without a size limit, so one oversized request can exhaust the server's heap memory and crash or stall the application.

Does CVE-2026-73633 allow remote code execution?

No. CVE-2026-73633 is an uncontrolled resource consumption flaw that causes denial of service by exhausting memory, not the remote code execution Struts has been known for. Apache rates it Moderate, and a CVSS v3.1 score of 7.5 reflects the availability impact.

Which Apache Struts versions are affected and fixed?

The flaw affects Struts 2.1.8 to 2.3.37, 2.5.0 to 2.5.33, 6.0.0 to 6.10.0, and 7.0.0 to 7.2.1. It is fixed in Struts 7.3.0, with a 6.11.0 backport for the 6.x series. The 2.x and 2.5.x lines are end of life; move to 7.3.0.

Am I affected if my app uses Apache Struts?

Only if your application uses the optional Struts JSON plugin with JSON request-body handling enabled. Apps that never load the plugin, or that use it only to build JSON responses, are not vulnerable. Confirm which case applies before you treat the patch as urgent.

How can I mitigate CVE-2026-73633 without patching immediately?

Cap the maximum request body size in front of the application, at a reverse proxy or in the application server, as Apache recommends. A sensible ceiling stops the oversized request before Struts buffers it, and it also protects against future unbounded-read bugs.

Ready to meet the Guardians?

Deploys fast - agentless for monitoring and cloud, a lightweight agent for deep endpoint security. Just Suriq, standing watch.