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.
Как исправить
Основное решение — обновить плагин до исправленной версии.
-
Определите текущую версию плагина: Перейдите в
Jenkins -> Manage Jenkins -> Manage Plugins -> Installed pluginsи найдите "Matrix Project Plugin". -
Обновите плагин:
- Минимальная исправленная версия:
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
- Через веб-интерфейс:
- Минимальная исправленная версия:
Временное решение
Если немедленное обновление невозможно, примените следующие меры:
-
Ограничьте доступ к настройке заданий (Job/Configure):
- В
Jenkins -> Manage Jenkins -> Configure Global Securityпересмотрите матрицу прав (Matrix-based security) или настройки ролей (Role-Based Strategy). - Временно отзовите права
Job/Configureу всех пользователей, которым они не критично необходимы для текущих задач.
- В
-
Отключите плагин (радикальная мера):
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). -
Усильте мониторинг:
- Включите аудит логов безопасности Jenkins (
$JENKINS_HOME/logs/security.log). - Настройте алерты на попытки выполнения системных Groovy-скриптов (
hudson.model.Hudson.Administer) или необычную активность в сборках.
- Включите аудит логов безопасности Jenkins (