CVE-2018-1000861
Jenkins Jenkins Stapler Web Framework
2022-02-10
A code execution vulnerability exists in the Stapler web framework used by Jenkins
Технический анализ и план устранения
Суть уязвимости
Уязвимость (CVE-2018-1000861) в веб-фреймворке Stapler позволяет удаленному злоумышленнику выполнить произвольный код на сервере Jenkins. Это достигается путем отправки специально сформированного HTTP-запроса, который обходит проверки десериализации. В результате атакующий может получить полный контроль над системой, где работает Jenkins.
Как исправить
Основной метод — обновление Jenkins до исправленной версии.
-
Определите текущую версию Jenkins:
bash # В веб-интерфейсе: "Manage Jenkins" -> "System Information" # Или через CLI/файловую систему: cat /var/lib/jenkins/config.xml | grep '<version>' -
Обновите Jenkins:
- Через встроенный центр обновлений (рекомендуется):
- Перейдите в
Manage Jenkins->Manage Plugins-> вкладкаAdvanced. - В разделе
Update SiteнажмитеCheck now. - Затем перейдите на вкладку
Available, найдите обновление для ядра Jenkins и установите его.
- Перейдите в
- Вручную (пакетом .war):
- Скачайте исправленную версию 2.138.1 или новее (LTS) или 2.150.1 или новее (Weekly) с официального сайта.
- Остановите службу Jenkins, замените файл
jenkins.warи перезапустите службу. ```bash
Пример для systemd (Ubuntu/Debian)
sudo systemctl stop jenkins sudo cp /путь/к/новому/jenkins.war /usr/share/jenkins/ sudo systemctl start jenkins ```
-
Через пакетный менеджер (если устанавливали так): ```bash # Для Debian/Ubuntu sudo apt update sudo apt install --only-upgrade jenkins
Для RHEL/CentOS
sudo yum update jenkins ```
- Через встроенный центр обновлений (рекомендуется):
Временное решение
Если немедленное обновление невозможно, примените следующие меры:
-
Ограничьте сетевой доступ:
- Настройте брандмауэр (например,
iptablesилиfirewalld), чтобы разрешить доступ к порту Jenkins (обычно 8080) только с доверенных IP-адресов (например, с CI/CD-агентов или рабочих станций администраторов). ```bash
Пример iptables для разрешения только с сети 192.168.1.0/24
sudo iptables -A INPUT -p tcp --dport 8080 -s 192.168.1.0/24 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 8080 -j DROP ```
- Настройте брандмауэр (например,
-
Настройте обратный прокси с WAF:
- Разместите Jenkins за обратным прокси (например, Nginx или Apache) с включенным модулем Web Application Firewall (WAF), таким как ModSecurity. Настройте WAF на блокировку запросов, содержащих шаблоны эксплуатации десериализации.
-
Отключите анонимный доступ (если не требуется):
- В Jenkins перейдите в
Manage Jenkins->Configure Global Security. - В разделе
AuthorizationвыберитеLogged-in users can do anythingили другую строгую политику. - Отключите опцию
Allow anonymous read access.
- В Jenkins перейдите в
Важно: Эти меры лишь снижают риск и поверхность атаки. Полное устранение уязвимости возможно только путем обновления.