CVE-2014-3120
High · 8.1 CISA KEVCVSS
8.1
EPSS
88.6%
Published
Jul 28, 2014
CISA due date
Apr 15, 2022
Cloudanix analysis
An old version of the search software let outsiders run their own commands on the server if it was not isolated from the internet.
- Exploitation
- Remote Authenticated
- Attacker needs
- Low Privilege
- Complexity
- Low
- Impact
- Remote Code Execution
- Component
- Application
- Class
- RCE
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Enables remote attackers to execute arbitrary MVEL expressions and Java code via the source parameter to _search when dynamic scripting remains enabled in the default configuration.
Why it matters to the business
Attackers can gain control over the search server to read or alter data and disrupt operations; the vulnerability was added to the CISA KEV list with a 2022-04-15 remediation deadline and remains actively exploited in the wild.
How an attack unfolds
An attacker sends a crafted HTTP request to the _search endpoint containing malicious MVEL or Java code in the source parameter; the server evaluates and executes the code, allowing arbitrary command execution on the underlying system.
How to fix it
Upgrade all Elasticsearch instances to version 1.2 or later; alternatively set script.disable_dynamic: true in elasticsearch.yml and restart the service; restrict network access to Elasticsearch ports.
How to confirm the fix worked
Confirm elasticsearch.yml contains script.disable_dynamic: true or verify running version is 1.2+, then attempt a test search containing a script source parameter to ensure execution is blocked.
Typical attack path
- Identify publicly reachable Elasticsearch instances on default ports
- Craft and send a POST request to /_search containing executable code in the source field
- Execute operating-system commands or Java payloads to establish a foothold
- Exfiltrate data, install persistence mechanisms, or pivot to other systems
How to detect it
Search web-access or application logs for POST requests to paths containing _search that include the parameters script or source with code-like content; inspect for unusual Java or MVEL syntax in query bodies.
- POST /_search
- "script"
- "source"
- MVEL
- java.lang.Runtime
What your security team should do
- Immediately upgrade every Elasticsearch deployment to 1.2 or newer
- Place Elasticsearch behind a firewall or proxy and allow only trusted clients
- Enable query logging and alert on requests containing script or source parameters
- Review historical access logs for evidence of prior exploitation
The record
The default configuration in Elasticsearch before 1.2 enables dynamic scripting, which allows remote attackers to execute arbitrary MVEL expressions and Java code via the source parameter to _search. NOTE: this only violates the vendor's intended security policy if the user does not run Elasticsearch in its own independent virtual machine.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Maven | org.elasticsearch:elasticsearch | 0 | 1.4.0.Beta1 |
Related vulnerabilities
- CVE-2025-37731 Improper Authentication in Elasticsearch PKI realm can lead to user impersonation via… Also affects org.elasticsearch:elasticsearch
- CVE-2025-37727 Elasticsearch: Insertion of Sensitive Information into Log File via reindex API Also affects org.elasticsearch:elasticsearch
- CVE-2024-52979 Elasticsearch Uncontrolled Resource Consumption Vulnerability Also affects org.elasticsearch:elasticsearch
- CVE-2024-52981 Elasticsearch Vulnerable to Stack Overflow due to a Large Recursion Also affects org.elasticsearch:elasticsearch
- CVE-2024-43709 Elasticsearch allocation of resources without limits or throttling leads to crash Also affects org.elasticsearch:elasticsearch
- CVE-2024-12539 Elasticsearch Incorrect Authorization vulnerability Also affects org.elasticsearch:elasticsearch
- CVE-2024-23444 It was discovered by Elastic engineering that when elasticsearch-certutil CLI tool is… Also affects org.elasticsearch:elasticsearch
- CVE-2023-49921 An issue was discovered by Elastic whereby Watcher search input logged the search query… Also affects org.elasticsearch:elasticsearch