CVE-2020-16846

SaltStack Salt

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

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

2021-11-03

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

SaltStack Salt allows an unauthenticated user with network access to the Salt API to use shell injections to run code on the Salt API using the SSH client. This vulnerability affects any users running the Salt API.

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

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

Неаутентифицированный злоумышленник, имеющий доступ к сети, где работает Salt API, может отправить специально сформированный запрос. Уязвимость (CWE-78) позволяет выполнить произвольные shell-команды на сервере Salt API через инъекцию в SSH-клиенте. Это дает полный контроль над системой.

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

Уязвимость устранена в патчах для нескольких основных веток Salt. Обновитесь до одной из следующих версий: * Salt 2019.2.5 или новее * Salt 3000.3 или новее * Salt 3001.1 или новее

Для систем на Debian/Ubuntu (используя официальный репозиторий SaltStack):

# Для Salt 3001 (чаще всего актуальная LTS)
sudo apt update
sudo apt install salt-api salt-master=3001.1+ds-1

# Для Salt 3000
sudo apt update
sudo apt install salt-api salt-master=3000.3+ds-1

# Для старой ветки 2019.2
sudo apt update
sudo apt install salt-api salt-master=2019.2.5+ds-1

Для систем на RHEL/CentOS (используя официальный репозиторий SaltStack):

# Для Salt 3001
sudo yum clean all
sudo yum update salt-api salt-master-3001.1

# Для Salt 3000
sudo yum clean all
sudo yum update salt-api salt-master-3000.3

# Для старой ветки 2019.2
sudo yum clean all
sudo yum update salt-api salt-master-2019.2.5

После обновления обязательно перезапустите службы:

sudo systemctl restart salt-master salt-api

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

Если немедленное обновление невозможно, примите следующие меры:

  1. Ограничьте сетевой доступ. Настройте межсетевой экран (firewall) так, чтобы доступ к порту Salt API (по умолчанию 8000 или 443 при использовании salt-api с HTTPS) был разрешен только с доверенных IP-адресов (например, с промоузлов Salt Minion). bash # Пример для UFW (Ubuntu) - разрешить только с подсети 10.0.1.0/24 sudo ufw allow from 10.0.1.0/24 to any port 8000 proto tcp sudo ufw deny 8000/tcp

  2. Отключите Salt API. Если функционал API не используется критически, полностью остановите службу. bash sudo systemctl stop salt-api sudo systemctl disable salt-api

  3. Настройте reverse proxy/WAF. Разместите Salt API за веб-сервером (nginx, Apache) с включенным модулем WAF (например, ModSecurity) и строгими правилами фильтрации, блокирующими shell-инъекции.

  4. Проверьте конфигурацию аутентификации. Убедитесь, что в /etc/salt/master.d/ для rest_cherrypy или rest_tornado настроена строгая аутентификация (например, pam, ldap, oauth), хотя это не гарантирует защиту от данной уязвимости, но усложнит атаку.