CVE-2019-1003030

Jenkins Matrix Project Plugin

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

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

2022-03-25

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

Jenkins Matrix Project plugin contains a vulnerability which can allow users to escape the sandbox, opening opportunity to perform remote code execution.

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

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

Уязвимость в плагине Jenkins Matrix Project позволяет злоумышленнику, имеющему доступ к настройке проекта (например, с правами Job/Configure), обойти защиту Groovy Sandbox в скриптах сборки (например, в Execute system Groovy script). Это дает возможность выполнить произвольный код на мастер-сервере Jenkins с правами пользователя, под которым работает процесс Jenkins.

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

Основное решение — обновить плагин до исправленной версии.

  1. Определите текущую версию плагина: Перейдите в Jenkins -> Manage Jenkins -> Manage Plugins -> Installed plugins и найдите "Matrix Project Plugin".

  2. Обновите плагин:

    • Минимальная исправленная версия: 1.14
    • Рекомендуемая версия: Последняя стабильная из центра обновлений.
    • Способ обновления:
      • Через веб-интерфейс: Jenkins -> Manage Jenkins -> Manage Plugins -> Available. Найдите "Matrix Project Plugin", отметьте его и нажмите "Install without restart" или "Download now and install after restart".
      • Через CLI (если установка из интерфейса недоступна): bash # Перейдите в директорию Jenkins cd $JENKINS_HOME # Загрузите и установите плагин вручную (замените URL на актуальный) wget https://updates.jenkins.io/download/plugins/matrix-project/1.14/matrix-project.hpi -P plugins/ # После загрузки .hpi файла перезапустите Jenkins sudo systemctl restart jenkins

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

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

  1. Ограничьте доступ к настройке заданий (Job/Configure):

    • В Jenkins -> Manage Jenkins -> Configure Global Security пересмотрите матрицу прав (Matrix-based security) или настройки ролей (Role-Based Strategy).
    • Временно отзовите права Job/Configure у всех пользователей, которым они не критично необходимы для текущих задач.
  2. Отключите плагин (радикальная мера): bash # На сервере Jenkins переименуйте файл плагина, чтобы Jenkins его не загружал mv $JENKINS_HOME/plugins/matrix-project.jpi $JENKINS_HOME/plugins/matrix-project.jpi.disabled # Перезапустите Jenkins sudo systemctl restart jenkins Важно: Это сломает все проекты, использующие матричную сборку (Multi-configuration project).

  3. Усильте мониторинг:

    • Включите аудит логов безопасности Jenkins ($JENKINS_HOME/logs/security.log).
    • Настройте алерты на попытки выполнения системных Groovy-скриптов (hudson.model.Hudson.Administer) или необычную активность в сборках.