CVE-2014-0114
NoneCVSS
—
EPSS
99.0%
Published
Apr 30, 2014
CISA due date
—
Cloudanix analysis
A flaw in widely used software libraries lets attackers take over servers by sending specially crafted web requests, potentially exposing sensitive data and disrupting operations until systems are updated.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Remote Code Execution
- Component
- Library
- Class
- Improper Input Validation
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
The vulnerability allows remote attackers to manipulate the ClassLoader by supplying a class parameter that bypasses suppression of the class property in Apache Commons BeanUtils, enabling arbitrary code execution through deserialization and reflection abuse.
Why it matters to the business
Successful exploitation can lead to full server compromise, data breaches, and service disruption on unpatched systems; the high EPSS score and weaponized exploit maturity indicate elevated risk of automated attacks even years after disclosure.
How an attack unfolds
An attacker sends crafted HTTP requests containing a malicious class parameter to an affected Struts application, which invokes getClass on the ActionForm and loads attacker-controlled classes via the manipulated ClassLoader, achieving remote code execution without authentication.
How to fix it
Upgrade to fixed package versions such as linux-azure 4.15.0-1023.24~14.04.1 on Ubuntu 14.04 LTS; for Struts applications, migrate away from Struts 1.x or apply patches that suppress the class property in BeanUtils 1.9.2 or later.
How to confirm the fix worked
Verify package versions match or exceed the fixed releases listed for each distribution; test affected endpoints with benign class parameter inputs to confirm rejection; review application dependency trees to ensure no vulnerable commons-beanutils JARs remain.
Typical attack path
- Identify publicly exposed Struts 1.x endpoints or applications using vulnerable BeanUtils versions
- Craft and send HTTP requests with a manipulated class parameter targeting ActionForm objects
- Trigger ClassLoader manipulation to load and execute arbitrary attacker-supplied classes
- Establish persistence or exfiltrate data after achieving code execution
How to detect it
Review web server and application logs for requests containing class parameters passed to ActionForm or similar objects; search for process executions or file writes indicative of unexpected ClassLoader activity; correlate with historical access logs around the time of known weaponized exploit availability.
- class=.*ActionForm
- getClass.*class parameter
- manipulated ClassLoader in Struts request logs
What your security team should do
- Immediately apply the specified fixed package versions on all affected Ubuntu systems
- Scan application inventories for any remaining Struts 1.x or BeanUtils <=1.9.1 usage
- Implement WAF rules to block requests containing suspicious class parameters
- Monitor EPSS trends and exploit maturity indicators for similar legacy components
The record
Apache Commons BeanUtils, as distributed in lib/commons-beanutils-1.8.0.jar in Apache Struts 1.x through 1.3.10 and in other products requiring commons-beanutils through 1.9.2, does not suppress the class property, which allows remote attackers to "manipulate" the ClassLoader and execute arbitrary code via the class parameter, as demonstrated by the passing of this parameter to the getClass method of the ActionForm object in Struts 1.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Maven | commons-beanutils:commons-beanutils | 1.8.0 | 1.9.4 |
| Debian:10 | commons-beanutils | 0 | 1.9.2-1 |
| Debian:11 | commons-beanutils | 0 | 1.9.2-1 |
| Debian:12 | commons-beanutils | 0 | 1.9.2-1 |
| Debian:13 | commons-beanutils | 0 | 1.9.2-1 |
| Debian:6.0 | libstruts1.2-java | 0 | 1.2.9-4+deb6u1 |
| Debian:7 | libstruts1.2-java | 0 | 1.2.9-5+deb7u1 |
| Mageia:3 | struts | 0 | 1.3.10-3.1.mga3 |
| Mageia:4 | struts | 0 | 1.3.10-4.1.mga4 |
| Red Hat:enterprise_linux:5::client_workstation | struts | 0 | 0:1.2.9-4jpp.8.el5_10 |
| Red Hat:enterprise_linux:5::client_workstation | struts-debuginfo | 0 | 0:1.2.9-4jpp.8.el5_10 |
| Red Hat:enterprise_linux:5::client_workstation | struts-javadoc | 0 | 0:1.2.9-4jpp.8.el5_10 |
| Red Hat:enterprise_linux:5::client_workstation | struts-manual | 0 | 0:1.2.9-4jpp.8.el5_10 |
| Red Hat:enterprise_linux:5::client_workstation | struts-webapps-tomcat5 | 0 | 0:1.2.9-4jpp.8.el5_10 |
| Red Hat:enterprise_linux:5::server | struts | 0 | 0:1.2.9-4jpp.8.el5_10 |
| Red Hat:enterprise_linux:5::server | struts-debuginfo | 0 | 0:1.2.9-4jpp.8.el5_10 |
| Red Hat:enterprise_linux:5::server | struts-javadoc | 0 | 0:1.2.9-4jpp.8.el5_10 |
| Red Hat:enterprise_linux:5::server | struts-manual | 0 | 0:1.2.9-4jpp.8.el5_10 |
| Red Hat:enterprise_linux:5::server | struts-webapps-tomcat5 | 0 | 0:1.2.9-4jpp.8.el5_10 |
| Red Hat:network_satellite:5.4::el6 | struts | 0 | 0:1.3.10-6.ep5.el6 |
| Red Hat:network_satellite:5.4::el6 | struts-core | 0 | 0:1.3.10-6.ep5.el6 |
| Red Hat:network_satellite:5.4::el6 | struts-extras | 0 | 0:1.3.10-6.ep5.el6 |
| Red Hat:network_satellite:5.4::el6 | struts-taglib | 0 | 0:1.3.10-6.ep5.el6 |
| Red Hat:network_satellite:5.4::el6 | struts-tiles | 0 | 0:1.3.10-6.ep5.el6 |
| Red Hat:network_satellite:5.5::el6 | struts | 0 | 0:1.3.10-6.ep5.el6 |
| Red Hat:network_satellite:5.5::el6 | struts-core | 0 | 0:1.3.10-6.ep5.el6 |
| Red Hat:network_satellite:5.5::el6 | struts-extras | 0 | 0:1.3.10-6.ep5.el6 |
| Red Hat:network_satellite:5.5::el6 | struts-taglib | 0 | 0:1.3.10-6.ep5.el6 |
| Red Hat:network_satellite:5.5::el6 | struts-tiles | 0 | 0:1.3.10-6.ep5.el6 |
| Red Hat:network_satellite:5.6::el6 | struts | 0 | 0:1.3.10-6.ep5.el6 |
| Red Hat:network_satellite:5.6::el6 | struts-core | 0 | 0:1.3.10-6.ep5.el6 |
| Red Hat:network_satellite:5.6::el6 | struts-extras | 0 | 0:1.3.10-6.ep5.el6 |
| Red Hat:network_satellite:5.6::el6 | struts-taglib | 0 | 0:1.3.10-6.ep5.el6 |
| Red Hat:network_satellite:5.6::el6 | struts-tiles | 0 | 0:1.3.10-6.ep5.el6 |
| SUSE:Linux Enterprise Server 12 SP5-LTSS | apache-commons-beanutils | 0 | 1.11.0-7.3.1 |
| SUSE:Linux Enterprise Server LTSS Extended Security 12 SP5 | apache-commons-beanutils | 0 | 1.11.0-7.3.1 |
| Ubuntu:Pro:14.04:LTS | commons-beanutils | 0 | 1.9.1-1ubuntu0.1~esm1 |
| Ubuntu:Pro:16.04:LTS | commons-beanutils | 0 | 1.9.2-3ubuntu0.1~esm1 |
| Ubuntu:Pro:18.04:LTS | commons-beanutils | 0 | 1.9.3-1ubuntu0.1~esm1 |
| maven | commons-beanutils/commons-beanutils | 1.7.0 | No fix |
| openSUSE:Tumbleweed | apache-commons-beanutils | 0 | 1.9.4-3.7 |
| openSUSE:Tumbleweed | apache-commons-validator | 0 | 1.10.1-1.1 |
Related vulnerabilities
- CVE-2025-48734 Apache Commons Improper Access Control vulnerability Also affects commons-beanutils:commons-beanutils
- CVE-2019-10086 In Apache Commons Beanutils 1.9.2, a special BeanIntrospector class was added which… Also affects commons-beanutils:commons-beanutils
- CVE-2015-0899 The MultiPageValidator implementation in Apache Struts 1 1.1 through 1.3.10 allows remote… Also affects libstruts1.2-java
- CVE-2015-4852 The WLS Security component in Oracle WebLogic Server 10.3.6.0, 12.1.2.0, 12.1.3.0, and… Also affects apache-commons-beanutils
- CVE-2026-113786 pypdf is a free and open-source pure-python PDF library. CWE-20
- CVE-2026-112081 A vulnerability was determined in hankcs HanLP up to 2.1.0-beta.64. CWE-20
- CVE-2026-111869 A vulnerability was identified in makeplane plane up to 1.4.2. CWE-20
- CVE-2026-100347 kin-openapi is a Go project for handling OpenAPI files. CWE-20