Уязвимость в Apache Axis позволяет выполнить код в Confluence Data Center

Confluence

Atlassian выпустила исправление для Confluence Data Center. Уязвимость в сторонней библиотеке Apache Axis позволяла выполнить произвольный код на сервере. Затронуты установки, где включён удалённый API на основе XML-RPC и SOAP. По умолчанию эта функция выключена, а из Confluence 10.0 её убрали совсем.

Условия атаки и техническая суть

Библиотека Apache Axis отвечает в Confluence за поддержку XML-RPC и SOAP. Это старые протоколы, через которые внешние системы обращаются к вики программно. Пока удалённый API включён, сервер разбирает SOAP-сообщения от любого, кто может до него достучаться. Проверка прав на уровне отдельного сервиса не спасает.

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

Облачные сайты Atlassian под уязвимость не попадают. Если вики открывается в домене atlassian.net или jira.com, она работает на инфраструктуре вендора, и обновлять там нечего.

Откуда берётся выполнение кода

Точка входа - блок Fault, штатная часть SOAP, которой сервер сообщает об ошибке. Внутри блока можно указать имя класса в элементе exceptionName. Axis загружает названный класс, чтобы построить исключение.

Загрузки уже достаточно. При ней выполняется статический инициализатор класса - код, который срабатывает при первом обращении к классу. Если рядом лежит элемент data со строкой, библиотека успевает создать объект через конструктор, принимающий строку. Проверка на то, что перед ней действительно AxisFault, идёт после.

Дальше всё зависит от набора классов, доступных приложению. При подходящем наборе цепочка доходит до выполнения кода. В базе CVE ошибку отнесли к CWE-470 - использование внешних данных для выбора класса.

Код исполняется с правами процесса Confluence. Этого хватает, чтобы читать и менять всю документацию вики, а также добраться до учётных данных, которые процесс хранит в конфигурации.

Что исправляет патч

Исправленная версия - 9.2.28. Atlassian советует обновиться до последнего релиза или до сборки с долгой поддержкой из своего списка. Ветка 10.x и новее под уязвимость не попадает. Уязвимость затрагивает версии Data Center от 1.x до 9.x.

Уровень опасности вендор оценил как критический: 9,3 по CVSS 4.0. Вектор описывает атаку по сети, без учётных данных и без участия пользователя. В трекере исправление идёт под номером CONFSERVER-104610, уязвимость - CVE-2026-90436. Сведений об эксплуатации в реальных атаках нет.

Патч снимает уязвимость в Confluence, но не в самом Apache Axis. Проект Axis 1.x снят с поддержки, и релиз с исправлением там не планируют. В записи CVE предлагают перейти на Axis 2/Java или собрать библиотеку с наложенным патчем. Для Confluence решение принимает вендор. Самописным SOAP-сервисам на Axis 1.x придётся искать замену самим, а заодно проверить, не тянет ли библиотеку кто-то ещё из внутренних приложений.

Критические исправления Atlassian переносит в поддерживаемые ветки, а бинарные патчи больше не выпускает. Значит, обновляться придётся до целого релиза, а не до отдельной сборки.

Если обновиться нельзя

Временная мера - снять галочку удалённого API в общих настройках Confluence. Настройка вступает в силу сразу после сохранения, перезапуск не нужен. Побочный эффект предсказуем: скрипты, автоматизации и сторонние дополнения, которые ходят в Confluence по SOAP, перестанут работать. Проверять это лучше на тестовом стенде.

Она перекрывает путь через удалённый API, но затронутую библиотеку из продукта не убирает.

Убедиться, что мера сработала, можно запросом к SOAP-сервису Confluence. При выключенном API сервер отвечает кодом 403 Forbidden. Если в ответе упоминается AXIS service, настройка не применилась и стоит обратиться в поддержку.

Атаковали ли конкретные установки, Atlassian подтвердить не может. Компания советует силами своей службы безопасности проверить серверы на признаки компромисса.

Ссылки

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