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

  1. Определите текущую версию Jenkins: bash # В веб-интерфейсе: "Manage Jenkins" -> "System Information" # Или через CLI/файловую систему: cat /var/lib/jenkins/config.xml | grep '<version>'

  2. Обновите 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 ```

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

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

  1. Ограничьте сетевой доступ:

    • Настройте брандмауэр (например, 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 ```

  2. Настройте обратный прокси с WAF:

    • Разместите Jenkins за обратным прокси (например, Nginx или Apache) с включенным модулем Web Application Firewall (WAF), таким как ModSecurity. Настройте WAF на блокировку запросов, содержащих шаблоны эксплуатации десериализации.
  3. Отключите анонимный доступ (если не требуется):

    • В Jenkins перейдите в Manage Jenkins -> Configure Global Security.
    • В разделе Authorization выберите Logged-in users can do anything или другую строгую политику.
    • Отключите опцию Allow anonymous read access.

Важно: Эти меры лишь снижают риск и поверхность атаки. Полное устранение уязвимости возможно только путем обновления.