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 до исправленной версии.

  1. Определите текущую версию: bash salt --versions-report

  2. Установите патч:

    • Для версий 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 и старше: Обновитесь до одной из указанных выше поддерживаемых веток.
  3. Пример команды обновления для Ubuntu/Debian (APT): bash # Обновите репозитории и установите исправленную версию sudo apt update sudo apt install salt-master salt-minion salt-common

  4. После обновления перезапустите службы: bash sudo systemctl restart salt-master sudo systemctl restart salt-minion

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

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

  1. Ограничьте сетевой доступ к 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
  2. Используйте WAF (Web Application Firewall):

    • Разместите master-сервер за WAF, способным фильтровать и блокировать подозрительные запросы к нестандартным эндпоинтам Salt.
  3. Мониторинг и аудит:

    • Внимательно отслеживайте логи salt-master (/var/log/salt/master) на предмет подозрительных подключений или неавторизованных вызовов методов.
    • Регулярно проверяйте список выданных токенов с помощью команды salt-run salt.tokens_list.