CVE-2014-3120

Elastic Elasticsearch

ВЫСОКАЯ ВЕРОЯТНОСТЬ

Дата обнаружения

2022-03-25

Официальное описание

Elasticsearch enables dynamic scripting, which allows remote attackers to execute arbitrary MVEL expressions and Java code.

🛡️
Технический анализ и план устранения

Суть уязвимости

Уязвимость позволяет удаленному злоумышленнику выполнить произвольный код (Java/MVEL) на сервере Elasticsearch через функцию динамического скриптинга (Dynamic Scripting). Для эксплуатации достаточно отправить специально сформированный HTTP-запрос к API поиска (_search) с вредоносным скриптом в параметрах.

Как исправить

Основное решение — обновить Elasticsearch до версии, в которой динамический скриптинг по умолчанию отключен или строго ограничен.

  1. Для Elasticsearch версий 1.2.0 и выше: Уязвимость устранена. Убедитесь, что вы используете актуальную версию. ```bash # Проверьте текущую версию curl -XGET 'http://localhost:9200/'

    Пример обновления через apt (Debian/Ubuntu)

    sudo apt update sudo apt install elasticsearch

    Пример обновления через yum (RHEL/CentOS)

    sudo yum update elasticsearch ```

  2. Для версий 1.1.x и 1.0.x: Установите патч-релизы:

    • 1.1.2 или новее для ветки 1.1.x.
    • 1.0.3 или новее для ветки 1.0.x. Скачайте и установите соответствующий .deb или .rpm пакет с официального сайта.
  3. После обновления обязательно перезапустите службу: bash sudo systemctl restart elasticsearch

Временное решение

Если немедленное обновление невозможно, полностью отключите динамический скриптинг в конфигурации.

  1. Отредактируйте конфигурационный файл elasticsearch.yml: yaml # Добавьте или измените следующие строки: script.disable_dynamic: true

  2. Перезапустите Elasticsearch для применения изменений: bash sudo systemctl restart elasticsearch

  3. Ограничьте сетевой доступ: Настройте межсетевой экран (например, iptables или ufw), чтобы разрешить доступ к порту Elasticsearch (по умолчанию 9200/TCP и 9300/TCP) только доверенным IP-адресам или внутренней сети. bash # Пример для iptables (разрешить только от сети 10.0.1.0/24) sudo iptables -A INPUT -p tcp --dport 9200 -s 10.0.1.0/24 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 9200 -j DROP

Важно: Временное решение может нарушить работу приложений, которые полагаются на динамические скрипты. Обновление — единственный надежный способ устранения уязвимости.