CVE-2020-11651
SaltStack Salt
2021-11-03
SaltStack Salt contains an authentication bypass vulnerability in the salt-master process ClearFuncs due to improperly validating method calls. The vulnerability allows a remote user to access some methods without authentication, which can be used to retrieve user tokens from the salt master and/or run commands on salt minions. Salt users who follow fundamental internet security guidelines and best practices are not affected by this vulnerability.
Технический анализ и план устранения
Суть уязвимости
Уязвимость (CVE-2020-11651) в SaltStack Salt позволяет удаленному атакующему обойти аутентификацию в процессе salt-master. Злоумышленник может:
* Получить доступ к методам класса ClearFuncs без проверки учетных данных.
* Извлечь токены пользователей (включая root-токены) с мастер-сервера.
* Выполнять произвольные команды на всех подключенных миньонах (minions) от имени соли.
Для эксплуатации атакующему нужен лишь сетевой доступ к порту master-сервера (по умолчанию TCP/4505 или TCP/4506).
Как исправить
Обязательно обновите Salt до исправленной версии.
-
Определите текущую версию:
bash salt --versions-report -
Установите патч:
- Для версий 2019.2.x и 3000.x: Обновитесь до 2019.2.4 или 3000.2 и выше.
- Для версий 2018.3.x: Обновитесь до 2018.3.5 и выше.
- Для версий 2017.7.x: Обновитесь до 2017.7.8 и выше.
- Для версий 2016.11.x: Обновитесь до 2016.11.10 и выше.
- Для версий 2016.3.x: Обновитесь до 2016.3.8 и выше.
- Для версий 2015.8.x и старше: Обновитесь до одной из указанных выше поддерживаемых веток.
-
Пример команды обновления для Ubuntu/Debian (APT):
bash # Обновите репозитории и установите исправленную версию sudo apt update sudo apt install salt-master salt-minion salt-common -
После обновления перезапустите службы:
bash sudo systemctl restart salt-master sudo systemctl restart salt-minion
Временное решение
Если немедленное обновление невозможно, примите следующие меры:
-
Ограничьте сетевой доступ к master-серверу:
- Настройте групповые политики (firewall) так, чтобы доступ к портам Salt (по умолчанию TCP/4505 и TCP/4506) был разрешен только с доверенных IP-адресов (ваших миньонов и административных хостов).
- Пример правила
iptablesдля разрешения только от конкретной подсети:bash iptables -A INPUT -p tcp --dport 4505 -s 192.168.1.0/24 -j ACCEPT iptables -A INPUT -p tcp --dport 4506 -s 192.168.1.0/24 -j ACCEPT iptables -A INPUT -p tcp --dport 4505 -j DROP iptables -A INPUT -p tcp --dport 4506 -j DROP
-
Используйте WAF (Web Application Firewall):
- Разместите master-сервер за WAF, способным фильтровать и блокировать подозрительные запросы к нестандартным эндпоинтам Salt.
-
Мониторинг и аудит:
- Внимательно отслеживайте логи
salt-master(/var/log/salt/master) на предмет подозрительных подключений или неавторизованных вызовов методов. - Регулярно проверяйте список выданных токенов с помощью команды
salt-run salt.tokens_list.
- Внимательно отслеживайте логи