Все уязвимости

CVE-2024-23897

Jenkins: командный интерфейс мог раскрывать файлы сервера

Старый Jenkins мог выдавать содержимое файлов через командный интерфейс, в том числе пользователю без входа. Проверьте версию контроллера, ограничьте доступ и обновите его без попыток читать секретные файлы.

Проверено 26 октября 2026Jenkins Security Advisory: Critical по используемой проектом оценке CVSS. Возможность дополнительных атак зависит от доступных файлов и настроек; чтение нескольких строк само по себе не доказывает выполнение кода.

Кому нужно проверить

Командам, у которых Jenkins собирает сайт, запускает тесты или доставляет обновления на сервер. Контроллер — центральная служба Jenkins, управляющая заданиями; именно её версия и файлы рассматриваются здесь. Важна не только марка продукта, но и конкретная версия, способ установки, операционная система и конфигурация.

В чём риск

CLI — способ управлять Jenkins командами вместо нажатия кнопок. Библиотека разбора команд умела подставлять содержимое файла в аргументы. Jenkins не отключал эту возможность, и она могла раскрыть данные, доступные процессу контроллера. Среди них могут оказаться настройки и секреты. Производитель описывает и удалённое выполнение кода, то есть запуск чужих действий на сервере, но только при дополнительных предпосылках: например, доступности определённых секретов и включённых функций. Нельзя считать любой Jenkins автоматически захваченным; нельзя и ограничиваться сменой пароля одного пользователя.

Затронутые версии

Advisory Jenkins указывает weekly 2.441 и старше, LTS 2.426.2 и старше. Структурированная запись CVE дополнительно исключает версии до 1.606; это историческое исключение не делает их пригодными для эксплуатации сегодня. Нужна доступность командного интерфейса CLI контроллера. Право Overall/Read позволяет читать целые файлы; без этого права доступны первые строки, число которых зависит от команды. На момент публикации Jenkins подтвердил чтение первых трёх строк без плагинов. Чтение двоичных секретов зависит от кодировки и других ограничений.

Исправленные версии

Исправления опубликованы в weekly 2.442 и LTS 2.426.3; LTS 2.440.1 также содержит исправление. Для рабочего сервера выбирайте актуальный поддерживаемый выпуск с совместимыми Java и плагинами. Версию управляемой поставщиком сборки сверяйте с его уведомлением.

Что сделать

  1. 1Откройте интерфейс своего Jenkins с разрешённой административной учётной записью и запишите версию контроллера. Сверьте её с установленным пакетом или образом. Выясните, доступен ли CLI извне через прокси и отдельные сетевые входы.
  2. 2До обновления ограничьте доступ к контроллеру доверенной административной сетью. Если требуется отключить CLI, используйте именно инструкцию из advisory Jenkins для своего размещения. Закрытие одного адреса на прокси может не закрыть другие способы подключения. Временное ограничение не исправляет программу.
  3. 3Подготовьте согласованную резервную копию JENKINS_HOME и внешних данных по принятому порядку эксплуатации. Копия содержит секреты: храните её вне публичных каталогов с ограниченным доступом. Сохраните версии Java, Jenkins и плагинов.
  4. 4Проверьте обновление на изолированной копии, где задания не смогут отправлять реальные письма и выполнять развёртывание в производство. Проверьте вход, права, агенты сборки и одно безопасное тестовое задание.
  5. 5Обновите контроллер до поддерживаемой исправленной версии. Для отката подготовьте совместимую пару программы и резервной копии: после обновления данные или плагины могут измениться. Старый контроллер при откате оставляйте изолированным.
  6. 6Подтвердите новую версию в работающем интерфейсе. Проверьте штатный CLI только если он нужен, права анонимного пользователя и доступность контроллера с разрешённых сетей. Не проверяйте исправление чтением настоящих ключей или файлов паролей.
  7. 7Если уязвимый контроллер был доступен посторонним, сохраните журналы и оцените возможное раскрытие секретов. Отзывайте и заменяйте затронутые токены по зависимостям после устранения доступа. Команду для демонстрации чтения файлов здесь намеренно не приводим: проверка версии и настроек безопаснее и не раскрывает данные.

Почему объём последствий отличается

Статичная последовательность помогает отделить доступ к интерфейсу от доступа к секретам и дальнейших атак. Она читается как обычный список и не требует анимации.

  1. 1Посторонний достигает командного интерфейса
  2. 2Уязвимый разбор команды обращается к файлу
  3. 3Права и кодировка определяют доступное содержимое
  4. 4Дополнительные последствия зависят от раскрытых секретов и настроек

Как не подпустить ботов к сайту

BotProtection принимает запросы перед вашим сайтом и фильтрует автоматизированные обращения. Поэтому ботам сложнее добраться до уязвимого компонента и начать его проверять или атаковать, а вероятность успешной автоматизированной атаки становится значительно ниже. Это дополнительный слой защиты: обновление уязвимых компонентов, проверка журналов и реагирование на инциденты остаются обязательными.

Первоисточники

Снизьте шанс атаки до того, как бот дойдёт до сайта

Подключите BotProtection как фильтр перед сайтом: подозрительные автоматизированные запросы отсекаются до обращения к вашему серверу. Это значительно снижает вероятность автоматизированной атаки, но не исправляет саму уязвимость, поэтому обновление и настройка компонентов остаются обязательными.