---
id: "CVE-2014-3120"
kind: "vulnerability"
aliases: ["CVE-2014-3120"]
title: "Elastic Elasticsearch: Elasticsearch Remote Code Execution Vulnerability"
severity: "critical"
cvss: 8.1
epss: 0.88559
exploited: true
status: "open"
category: "package"
products: [{"name": "Elastic Elasticsearch", "fixed": [], "affected": "", "ecosystem": "vendor"}, {"name": "Elasticsearch", "fixed": ["1.2.0", "1.4.0.Beta1"], "affected": "< 1.2.0 (NVD); < 1.4.0.Beta1 (GHSA)", "ecosystem": "vendor"}]
ecosystems: ["vendor"]
tags: ["elasticsearch", "exploited", "package", "rce", "self-hosted"]
not_affected_if: ["default-config", "managed-hosting"]
published_at: "2014-07-28T19:55:04+00:00"
first_seen_at: "2026-10-23T19:11:52+00:00"
updated_at: "2026-10-23T21:57:35+00:00"
sources: [{"source": "kev", "url": "https://www.cisa.gov/known-exploited-vulnerabilities-catalog?search_api_fulltext=CVE-2014-3120", "first_seen_at": "2026-10-23T19:11:52+00:00"}, {"source": "epss", "url": "https://api.first.org/data/v1/epss?cve=CVE-2014-3120", "first_seen_at": "2026-10-23T19:13:44+00:00"}, {"source": "analyst", "url": null, "first_seen_at": "2026-10-23T21:23:39+00:00"}, {"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2014-3120", "first_seen_at": "2026-10-23T21:57:35+00:00"}]
---

# Elastic Elasticsearch: Elasticsearch Remote Code Execution Vulnerability

Elasticsearch before 1.2.0 enables dynamic scripting by default, so anyone who can reach the HTTP API (port 9200) can send a _search request with a script in the source parameter and run MVEL/Java code on the host. Exploited in the wild (CISA KEV). Elastic's own mitigation is to put the cluster behind a firewall, not run as root, and disable dynamic scripting.

_Summary, check and fix written by a model from the sources; labelled as such._

## Affected

- vendor:Elastic Elasticsearch affected ? fixed ?
- vendor:Elasticsearch affected < 1.2.0 (NVD); < 1.4.0.Beta1 (GHSA) fixed 1.2.0, 1.4.0.Beta1

## How to check

Run GET http://<host>:9200/ and read version.number: below 1.2.0 is vulnerable by default. 1.2.x-1.3.x are default-off but vulnerable if elasticsearch.yml sets script.disable_dynamic: false; GHSA treats anything below 1.4.0.Beta1 as affected. Check that ports 9200/9300 are not reachable from untrusted networks. Look for Runtime.getRuntime().exec errors in Elasticsearch logs, /boot/.iptables, modified /etc/init.d scripts and abnormal load.

## Fix

Upgrade to 1.2.0 or later (dynamic scripting off by default); 1.4.0.Beta1 or later per GHSA, and in practice any currently supported release. If you cannot upgrade, add script.disable_dynamic: true to elasticsearch.yml and restart every node. Firewall ports 9200 and 9300 and do not run as root. If you find signs of compromise, reinstall the host.

## Timeline

- 2026-10-23T19:11:52+00:00 kev https://www.cisa.gov/known-exploited-vulnerabilities-catalog?search_api_fulltext=CVE-2014-3120
- 2026-10-23T19:13:44+00:00 epss https://api.first.org/data/v1/epss?cve=CVE-2014-3120
- 2026-10-23T21:23:39+00:00 analyst — Read Elastic's 2014-07-09 blog (vendor primary; no standalone ESA found), NVD and GHSA. Affected range differs: NVD/Elastic say dynamic scripting default-off from 1.2.0; GHSA says <1.4.0.Beta1 (MVEL replaced by Groovy). Actively exploited since 2014 (KEV); Elastic describes in-the-wild attacks. No PoC link read.
- 2026-10-23T21:57:35+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2014-3120

## Documents

- [advisory] NVD CVE-2014-3120 https://nvd.nist.gov/vuln/detail/CVE-2014-3120
- [advisory] GHSA-mrfm-jxgf-2h6v https://github.com/advisories/GHSA-mrfm-jxgf-2h6v
- [mitigation] Scripting and Security (Elastic, 2014-07-09) https://www.elastic.co/blog/scripting-security

## From the sources

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.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
