What is Apache Struts 1?
Apache Struts 1 was one of the most widely adopted Java web application frameworks of the 2000s, providing an MVC (Model-View-Controller) architecture for building enterprise Java web applications. It was particularly prevalent in banking, insurance, government, and enterprise portal applications built during the 2003–2010 era. Apache Struts 1 reached end-of-life in April 2013 with the release of the final version 1.3.10, but applications built on it persisted in production for years — even decades — afterward. The ActionForm component was central to Struts 1's request handling, acting as a Java bean that captured HTTP request parameters for form processing.
Overview
CVE-2006-1547 is a denial-of-service vulnerability (CVSS 7.5, availability-only impact) in Apache Struts 1's ActionForm component when used with Apache Commons BeanUtils 1.7. A remote unauthenticated attacker could send a specially crafted HTTP request that triggered a NullPointerException in the form validation logic, crashing the request handling thread and potentially the entire application. Fixed in Struts 1.2.9, this vulnerability was added to CISA KEV in January 2022 — one of the inaugural entries in the catalog. Notably, CISA granted an unusually long six-month remediation deadline (July 2022), reflecting the DoS-only impact and recognizing the complexity of updating legacy Struts 1 applications.
Affected Versions
| Product | Vulnerable | Fixed |
|---|---|---|
| Apache Struts 1 before 1.2.9 with BeanUtils 1.7 | Affected | Upgrade to Struts 1.2.9 or later |
| Apache Struts 1.3.x (all) | Check BeanUtils version | Ensure BeanUtils 1.8.0 or later |
Note: Apache Struts 1 has been end-of-life since April 2013. Organizations still running Struts 1 applications should plan migration to a supported framework.
Technical Details
The vulnerability exists in how Apache Struts 1 ActionForms used Apache Commons BeanUtils for property introspection. When Struts processes an HTTP request, it uses BeanUtils to populate an ActionForm bean with the request parameters — iterating over parameter names, finding matching getter/setter methods on the form bean, and setting the values.
In BeanUtils 1.7, when an HTTP parameter name contained a certain pattern (such as a property path with an empty component or a crafted expression), the introspection code attempted to access a null reference during property resolution, throwing a NullPointerException. Because this exception propagated up through Struts' request processing pipeline without being caught, it could crash the processing thread, disrupt active sessions, and in some configurations cause the entire web application to become unresponsive.
The attack required no authentication — any HTTP request to a Struts 1 application with crafted parameter names could trigger the crash. A sustained attack would keep the application unavailable through repeated requests.
Discovery
Reported to the Apache Struts project during the Struts 1.2.x development cycle. The vulnerability was specific to the interaction between Struts 1's form handling and Apache Commons BeanUtils 1.7's property introspection behavior. The fix in Struts 1.2.9 included improved handling of malformed property expressions to prevent the null pointer condition.
Exploitation Context
The KEV inclusion reflects ongoing exploitation of Struts 1 applications in production environments over 15 years after the framework's end-of-life:
- Legacy Java web applications: Enterprise applications — particularly in financial services, insurance, and government — built on Struts 1 in the mid-2000s often ran for decades with minimal updates. These applications regularly ran vulnerable Struts versions because upgrading a Struts 1 application to Struts 2 or a different framework required significant code rewrites.
- DoS as an attack enabler: While this vulnerability only causes denial-of-service, crashing a web application can be used to disrupt business operations, force failover to less-secured backup systems, or distract security operations while other attacks proceed.
- Struts ecosystem vulnerabilities: Struts 1 and Struts 2 accumulated numerous high-severity vulnerabilities, including remote code execution (CVE-2017-5638 in Struts 2, which caused the Equifax breach). CVE-2006-1547 was added to KEV alongside other Struts vulnerabilities as CISA catalogued the Struts ecosystem's exploitation history.
Remediation
- Upgrade Apache Struts to 1.2.9 or later: If still running Struts 1.x, ensure the version is at least 1.2.9. Note that Struts 1 is end-of-life.
- Migrate off Apache Struts 1: Plan and execute migration of Struts 1 applications to a supported framework (Spring MVC, Struts 2 with up-to-date patches, Jakarta EE, etc.). Struts 1 will never receive security fixes.
- Update Apache Commons BeanUtils: Ensure BeanUtils is updated to 1.8.0 or later, which contains additional defensive property introspection handling.
- Web Application Firewall: Deploy a WAF rule to detect and block requests with malformed parameter names targeting Struts ActionForms as a temporary compensating control.
- Application monitoring: Monitor application logs for
NullPointerExceptionstorms or sudden availability drops that could indicate exploitation or reconnaissance.
Key Details
| Property | Value |
|---|---|
| CVE ID | CVE-2006-1547 |
| Vendor / Product | Apache — Struts 1 |
| NVD Published | 2006-03-30 |
| NVD Last Modified | 2025-10-22 |
| CVSS 3.1 Score | 7.5 |
| CVSS 3.1 Vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H |
| Severity | HIGH |
| CISA KEV Added | 2022-01-21 |
| CISA KEV Deadline | 2022-07-21 |
| Known Ransomware Use | No |
CVSS 3.1 Breakdown
Required Action
Timeline
| Date | Event |
|---|---|
| 2006-03-30 | CVE-2006-1547 published; Apache Struts 1 ActionForm DoS vulnerability disclosed |
| 2006-01-01 | Apache Struts 1.2.9 released, addressing the ActionForm BeanUtils vulnerability |
| 2022-01-21 | CISA added to KEV — one of the first entries in the newly launched KEV catalog |
| 2022-07-21 | CISA BOD 22-01 remediation deadline (unusually long 6-month window reflecting DoS-only impact) |
References
| Resource | Type |
|---|---|
| NVD — CVE-2006-1547 | Vulnerability Database |
| CISA KEV Catalog Entry | US Government |