Команда разработчиков Jenkins сообщила о большой группе уязвимостей, затронувших ядро системы и более полутора десятков плагинов. Наиболее опасные проблемы позволяют удалённо выполнить код на сервере, а также зафиксировать пользовательскую сессию и действовать от имени жертвы. Уязвимы еженедельные сборки Jenkins до версии 2.579 включительно и версии LTS до 2.568.2 включительно, а также целый ряд плагинов, среди которых Allure, SAML, SonarQube Scanner, Performance и другие.
Детали уязвимостей
Основная угроза связана с механизмом десериализации, который Jenkins использует для загрузки и сохранения конфигураций и данных сборок. Одна из уязвимостей, отмеченная как CVE-2026-84645, позволяет атакующему отправить специально сформированный XML-документ. Из-за ошибки в фильтре десериализации объекты, которые должны храниться только в отдельных конфигурационных файлах, могут оказаться вложенными в чужие данные и обработаны веб-фреймворком Stapler. В результате злоумышленник получает доступ к плохо защищённой консоли сценариев Jenkins, что открывает дорогу к выполнению произвольного кода на контроллере. Уязвимость была обнаружена в рамках программы Bug Bounty, спонсируемой Европейской комиссией, и закрыта в новых версиях.
Другая серьёзная проблема, CVE-2026-84652, связана с функцией "Запомнить меня". При аутентификации через постоянный cookie Jenkins не ротирует идентификатор сессии. Если злоумышленник может разместить контент на том же сайте, что и Jenkins, например на соседнем поддомене, он способен заранее установить в браузере жертвы известную сессию. После того как пользователь входит в систему через remember-me cookie, атакующий получает доступ к Jenkins под учётными данными жертвы. Эксплуатация с несвязанного домена невозможна, но при типичной корпоративной конфигурации, когда Jenkins и другие сервисы находятся в одной доменной зоне, риск вполне реален.
Помимо этих двух ключевых уязвимостей, в ядре обнаружены и другие проблемы: межсайтовый скриптинг в просмотрщике системного журнала, неправильная проверка прав в настройках внешнего вида, раскрытие параметров сборок, а также ошибки, позволяющие отменять чужие задачи или изменять глобальные поля конфигурации. Часть из них требует низких привилегий, например наличия права на чтение или управление отдельными элементами, что делает атаки доступными для обычных пользователей Jenkins.
Отдельного внимания заслуживают уязвимости в плагинах. В Performance Plugin десериализация кэшированных отчётов без ограничения типов позволяет выполнить код на контроллере. File Parameter Plugin использует имя параметра как путь при сохранении загруженных файлов без должной валидации - это даёт возможность записать файл в произвольное место файловой системы и также привести к выполнению кода. В SAML Plugin атакующий может перезаписать файл метаданных поставщика идентификации, что позволяет подменить его и аутентифицироваться как любой пользователь. В Allure Plugin неправильная проверка путей даёт доступ к произвольным файлам на контроллере. Многие из этих проблем связаны с тем, что конструкторы, предназначенные для внутреннего использования, помечены как доступные для связывания данных через фреймворк Stapler. Разработчики плагинов постепенно удаляют такие аннотации или добавляют недостающие проверки разрешений.
Есть в бюллетене и уязвимости с более ограниченным влиянием. Например, в GitLab Plugin и LDAP Plugin обнаружены проблемы, позволяющие подключаться к серверу, указанному злоумышленником, без необходимых прав. TICS Plugin недостаточно экранирует переменные окружения при формировании команды, что даёт возможность выполнить команды на агенте. В XebiaLabs XL Deploy Plugin не проверяются права в ряде конечных точек, из-за чего можно перечислить идентификаторы сохранённых учётных данных. Для плагина Parameterized Remote Trigger Plugin на момент публикации бюллетеня исправление отсутствует - он хранит токены в открытом виде в конфигурационных файлах, и это следует учитывать при оценке рисков.
Атаки с использованием этих уязвимостей, судя по опубликованной информации, пока не зафиксированы. Тем не менее часть проблем, особенно в ядре, потенциально может эксплуатироваться удалённо при наличии хотя бы минимальных прав. Учитывая популярность Jenkins как инструмента непрерывной интеграции, подобные находки представляют интерес для широкого круга злоумышленников. Организациям, использующим Jenkins, стоит как можно скорее обновить и ядро, и все установленные плагины до версий, указанных в бюллетене. Для центрального компонента исправления вышли в версиях 2.580 и 2.568.3. Администраторам, которые не могут немедленно обновиться, рекомендуется ограничить доступ к интерфейсу Jenkins, отключить неиспользуемые плагины и тщательно проверять выдачу прав пользователям, особенно прав на чтение и управление проектами.
Текущий набор уязвимостей показывает, что значительная часть проблем Jenkins связана с архитектурой обработки данных через Stapler и десериализацию. Подобные фундаментальные механизмы сложно защитить точечными исправлениями, поэтому разработчикам стоит уделять внимание дизайну новых версий. Для пользователей главный вывод остаётся прежним: своевременное обновление и минимально необходимые привилегии остаются наиболее действенными мерами защиты.
Ссылки