Обнаружена критическая уязвимость в Docker-образах Jenkins: Хакеры получили возможность перехватывать сетевые соединения!

10 апреля 2025 года команда Jenkins опубликовала информацию о новой уязвимости, которая представляет серьёзную угрозу для процессов CI/CD (Continuous Integration / Continuous Deployment) тысяч организаций по всему миру.

Данная уязвимость обнаружена в управлении SSH host-ключами в широко используемых Docker-образах Jenkins. Это позволяет злоумышленникам осуществлять атаку типа «man-in-the-middle» (MITM) между сервером управления Jenkins (controller) и агентами сборки (build agent), перехватывая их сетевое взаимодействие.

Эти уязвимости зарегистрированы под идентификаторами CVE-2025-32754 и CVE-2025-32755 и затрагивают следующие Docker-образы Jenkins:

CVE-2025-32754

Эта уязвимость касается образов Jenkins с компонентом ssh-agent, созданных на основе операционной системы Debian, начиная с версии 6.11.1 и ниже.

Эксплуатация данной уязвимости позволяет злоумышленнику, перехватившему сетевой трафик между сервером Jenkins и SSH-агентом, выполнять следующие действия:

  • Захватывать передаваемые данные;
  • Получать несанкционированный доступ;
  • Похищать конфиденциальную информацию;
  • Управлять процессами сборки или изменять их.

Степень опасности уязвимости оценивается как критическая и имеет рейтинг CVSS 3.1 — 9.1 балла.

CVE-2025-32755

Эта уязвимость обнаружена в устаревших образах Jenkins с компонентом ssh-slave на базе Debian. Уязвимость затрагивает все версии этих образов.

Подобно предыдущей уязвимости, она позволяет злоумышленнику:

  • Перехватывать или изменять сетевой трафик;
  • Похищать данные аутентификации и другие конфиденциальные сведения;
  • Вносить вредоносный код в процесс сборки;
  • Захватывать контроль над процессом CI/CD.

Данная уязвимость также имеет критическую степень опасности — CVSS 3.1 рейтинг 9.1 балла.

Причина уязвимости

Проблема заключается в том, что при создании Docker-образов Jenkins на базе Debian SSH host-ключи генерировались на этапе сборки образа, а не при запуске контейнера.

Это означает, что все контейнеры одной версии имели одинаковые SSH host-ключи, что противоречит базовым принципам безопасности SSH, где каждый сервер или агент должен иметь уникальные ключи.

В случае атаки злоумышленник, перехвативший сетевое соединение между Jenkins controller и агентом, может:

  • Вмешиваться в процессы сборки;
  • Похищать конфиденциальные данные и ключи доступа;
  • Встраивать вредоносный код в процесс сборки;
  • Реализовывать атаки на цепочку поставок (Supply Chain Attacks).

Уязвимые образы Jenkins:

jenkins/ssh-agent (на базе Debian):

  • Все версии до 6.11.1 включительно;
  • Debian, Stretch, Bullseye или Bookworm образы.

jenkins/ssh-slave (устаревшие, не поддерживаются):

  • latest, jdk11, latest-jdk11, revert-22-jdk11-JENKINS-52279.

Примечание: Docker-образы на базе Alpine, Windows или Nanoserver не подвержены данной уязвимости.

Решение проблемы

Команда Jenkins выпустила новые образы версии 6.11.2, в которых SSH host-ключи автоматически генерируются при первом запуске контейнера, а не на этапе создания образа. Это обеспечивает уникальные ключи для каждого контейнера и предотвращает атаки типа MITM.

Всем организациям, использующим Docker-образы Jenkins, рекомендуется:

  1. Немедленно обновить образы jenkins/ssh-agent до версии 6.11.2 или выше.
  2. По возможности отказаться от устаревших образов jenkins/ssh-slave и перейти на jenkins/ssh-agent.
  3. Проверить используемую версию образа и обновить её при необходимости.
  4. Проверить уникальность SSH host-ключей.
  5. Усилить защиту сетевой инфраструктуры.
  6. Контролировать безопасность процессов сборки и CI/CD.

Данная ситуация ещё раз подтверждает важность регулярного обновления систем и быстрого реагирования на уязвимости даже в самых популярных инструментах разработки и автоматизации.