CVE-2026-53435: критическая уязвимость десериализации XStream в Jenkins позволяет читать файлы и выполнять код

Jenkins

CloudBees, развивающая Jenkins, опубликовала бюллетень безопасности, в котором раскрыла уязвимость CVE-2026-53435 (внутренний идентификатор SECURITY-3707). Проблема затрагивает механизм десериализации конфигураций через библиотеку XStream. Уязвимость получила оценку CVSS 9.8. Злоумышленник с минимальными правами (Overall/Read плюс право на изменение конфигурации элементов вроде View или Item) может отправить специально сформированный файл config.xml. В результате происходит чтение произвольных файлов на сервере, а также возможно выполнение удаленного кода и подмена сессии другого пользователя.

Уязвимость CVE-2026-53435

Уязвимы Jenkins weekly до версии 2.567 включительно и Jenkins LTS до версии 2.555.2 включительно. Патчи выпущены в weekly 2.568 и LTS 2.555.3. Вектор атаки не требует сетевого доступа к неопубликованным портам - достаточно Web-интерфейса Jenkins. Аутентификация необходима, но привилегии требуются самые низкие. Это делает уязвимость особенно опасной для сред, где к Jenkins имеют доступ сотни разработчиков с базовыми аккаунтами.

Корень проблемы кроется в механизме, который Jenkins использует для сохранения и восстановления конфигураций. Система применяет библиотеку XStream для сериализации и десериализации XML-представлений объектов. После введения JEP-200 в Jenkins был реализован ClassFilter - белый список типов, разрешённых к десериализации. Однако в обработке config.xml допущена ошибка. Злоумышленник может вставить в XML легитимные с точки зрения фильтра классы (например, hudson.Plugin$DummyImpl или элементы из hudson.model.View), а затем через специальные контейнеры вроде DescribableList обойти ограничения. После успешной десериализации вредоносный объект взаимодействует с Web-фреймворком Stapler. Это позволяет через HTTP-запросы инициировать чтение файлов по произвольным путям. Более того, исследователи подтвердили возможность эскалации до выполнения кода через Script Console Jenkins.

Важность уязвимости заключается в сочетании двух факторов: низкий порог входа и высокий ущерб. В крупных организациях у Jenkins часто есть пользователи с правами "только на чтение" или с возможностью редактировать собственные пайплайны. Такая учётная запись уже позволяет атаковать. Успешная эксплуатация даёт доступ к конфиденциальным данным: файлам конфигураций, ключам, паролям, а также к токенам доступа к другим системам. При успешном выполнении кода злоумышленник получает полный контроль над Jenkins-сервером и, через него, над инфраструктурой CI/CD.

В официальном бюллетене CloudBees подчёркивается, что патч закрывает именно вектор через config.xml. Разработчики внесли изменения в ClassFilter, а также усилили проверки при обработке запросов на обновление конфигурации элементов View и Item. Рекомендуется немедленно обновить Jenkins до указанных версий. Дополнительно следует пересмотреть права пользователей: предоставлять Overall/Read и права на изменение конфигураций только тем, кому это действительно необходимо.

После выхода исправления в открытом доступе появились PoC-эксплойты (доказательства концепции), демонстрирующие чтение файлов. Это типичная "n-day" ситуация: злоумышленники могут начать сканирование незапатченных систем в течение нескольких дней. Администраторам Jenkins стоит как можно скорее применить обновление. Если немедленный апгрейд невозможен, временной мерой может стать ограничение доступа к Web-интерфейсу, отключение неиспользуемых плагинов с правами на редактирование конфигураций, а также мониторинг аномальных HTTP-запросов, содержащих подозрительные XML-блоки.

Уязвимость CVE-2026-53435 - очередное напоминание о рисках, связанных с десериализацией данных из ненадёжных источников. Разработчики Jenkins уже приняли меры, но ответственность за своевременное обновление лежит на конечных пользователях. Игнорирование патча может привести к утечке критических данных и компрометации всей сборочной цепочки.

Ссылки

 

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