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
Временное решение
Если немедленное обновление невозможно, примите следующие меры:
-
Ограничьте сетевой доступ. Настройте межсетевой экран (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 -
Отключите Salt API. Если функционал API не используется критически, полностью остановите службу.
bash sudo systemctl stop salt-api sudo systemctl disable salt-api -
Настройте reverse proxy/WAF. Разместите Salt API за веб-сервером (nginx, Apache) с включенным модулем WAF (например, ModSecurity) и строгими правилами фильтрации, блокирующими shell-инъекции.
-
Проверьте конфигурацию аутентификации. Убедитесь, что в
/etc/salt/master.d/дляrest_cherrypyилиrest_tornadoнастроена строгая аутентификация (например,pam,ldap,oauth), хотя это не гарантирует защиту от данной уязвимости, но усложнит атаку.