Обновление Jenkins: в семи плагинах обнаружены уязвимости от обхода пути до межсайтового скриптинга

Jenkins

29 апреля 2026 года разработчики Jenkins опубликовали предупреждение о кибербезопасности, охватывающее сразу семь плагинов для популярной системы непрерывной интеграции и доставки. В результате внутреннего аудита, проведённого в рамках программы вознаграждения за обнаружение уязвимостей (Bug Bounty) при поддержке Европейской комиссии, были выявлены критические и средние дефекты. Специалистам по информационной безопасности настоятельно рекомендуется как можно скорее установить исправленные версии.

Детали уязвимостей

Среди наиболее опасных уязвимостей - проблема обхода пути в плагине привязки учётных данных (Credentials Binding Plugin). В версиях до 719.v80e905ef14eb_ включительно злоумышленник, способный предоставлять учётные данные для задания (job), мог записать файлы в произвольные каталоги на файловой системе узла Jenkins. Если при этом Jenkins настроен так, что низкопривилегированный пользователь имеет право конфигурировать файловые или zip-учётные данные для задания, выполняемого на встроенном узле, такая атака может привести к удалённому выполнению кода. Получение контроля над узлом даёт возможность запускать произвольные команды и потенциально компрометировать всю инфраструктуру CI/CD. Разработчики исправили уязвимость в версии 720.v3f6decef43ea_, добавив санитизацию имён файлов. Уровень опасности по шкале CVSS оценён как высокий.

Две другие уязвимости, также получившие высокий рейтинг, связаны с межсайтовым скриптингом (XSS) - техникой внедрения вредоносных скриптов в веб-страницы, которые затем выполняются в браузере жертвы. Первая из них затрагивает плагин GitHub (GitHub Plugin) версий до 1.46.0 включительно. Плагин некорректно обрабатывал URL текущего задания в составе JavaScript, реализующего проверку функции "GitHub hook trigger for GITScm polling". В результате неанонимные злоумышленники с правом Overall/Read могли хранить вредоносный скрипт на сервере. При открытии соответствующей страницы управления скрипт выполнялся в контексте сессии другого пользователя - администратора. Версия 1.46.0.1 устраняет проблему, удалив опасную обработку URL.

Вторая высокоопасная XSS-уязвимость обнаружена в плагине публикации HTML (HTML Publisher Plugin) версии 427 и более ранних. В устаревшем файле-обёртке (legacy wrapper) не экранировались имя задания и его URL. Злоумышленник с правом Item/Configure мог вставить в эти поля произвольный скрипт. После применения нового патча (версия 427.1) экранирование выполняется, но исправление действует только для вновь создаваемых обёрток. Для старых заданий требуется повторная генерация. Отметим, что в более новых версиях Jenkins (начиная с 2.539 и LTS 2.541.1) встроенная защита Content Security Policy (CSP) снижает риск эксплуатации этой уязвимости.

Оставшиеся четыре дефекта имеют средний уровень опасности. В плагине безопасности скриптов (Script Security Plugin) отсутствовала проверка прав доступа в HTTP-эндпоинте. Это позволяло пользователям с базовым правом Overall/Read просматривать списки ожидающих и утверждённых путей классов (classpaths), что потенциально раскрывает внутреннюю структуру конфигурации Jenkins. Исправленная версия 1402.v94c9ce464861 требует права Overall/Administer для такого перечисления.

Плагин матричной стратегии авторизации (Matrix Authorization Strategy Plugin) в версиях с 2.0-beta-1 по 3.2.9 содержал небезопасную десериализацию: при восстановлении объектов из конфигурации вызывались конструкторы без параметров произвольных классов, указанных злоумышленником. Атакующий с правом Item/Configure может инстанцировать нежелательные типы, что способно привести к раскрытию информации или другим последствиям - в зависимости от того, какие классы доступны в classpath. Версия 3.2.10 проверяет, что инстанцируемый класс является реализацией стратегии наследования, и тем самым блокирует атаку.

В плагине источника веток GitHub (GitHub Branch Source Plugin) версий до 1967.vdea_d580c1a_b_a_ также отсутствовала проверка прав при выполнении проверки соединения (form validation). Любой пользователь с Overall/Read мог заставить Jenkins подключиться к произвольному URL с учётными данными GitHub App, указанными атакующим. Это позволяло использовать сервер в качестве прокси для разведки или атак на другие системы. Исправленная версия 1967.1969.v205fd594c821 требует права Overall/Manage для проведения такой проверки.

Последняя уязвимость - открытое перенаправление (open redirect) в плагине Microsoft Entra ID (ранее Azure AD). Версии до 666.v6060de32f87d не ограничивали URL, на который перенаправляется пользователь после успешной аутентификации. Атакующий мог с помощью фишинговой ссылки вида "ваш-jenkins-сервер/логин" заставить жертву после входа перейти на злонамеренный сайт, что облегчает кражу учётных данных или сессионных токенов. Плагин версии 667.v4c5827a_e74a_0 разрешает перенаправление только на относительные (внутренние) адреса Jenkins.

Все перечисленные уязвимости были обнаружены в рамках программы Bug Bounty, спонсируемой Европейской комиссией. Каждая из них имеет свой идентификатор в системе Common Vulnerabilities and Exposures (CVE - общепризнанный реестр уязвимостей). Операторам Jenkins-инфраструктур следует незамедлительно обновить все указанные плагины до рекомендованных версий: для Credentials Binding Plugin - 720.v3f6decef43ea_, GitHub Plugin - 1.46.0.1, GitHub Branch Source Plugin - 1967.1969.v205fd594c821, HTML Publisher Plugin - 427.1, Matrix Authorization Strategy Plugin - 3.2.10, Microsoft Entra ID Plugin - 667.v4c5827a_e74a_0, Script Security Plugin - 1402.v94c9ce464861. Промедление может привести к компрометации серверов, краже учётных данных, утечке внутренней информации и другим серьёзным инцидентам. Команда Jenkins продолжает улучшать безопасность платформы, однако ответственность за своевременное применение патчей лежит на администраторах.

Ссылки

Комментарии: 0