Обзор
В ходе проведения непрерывных тестов на проникновение с помощью сервиса Vector Command от компании Rapid7, специалисты Rapid7 обнаружили три новые уязвимости в Eptura Archibus. Устаревшая конечная точка API могла быть использована для обхода аутентификации и запуска различных функций без прохождения аутентификации (CVSS: 8.6 High). Наиболее опасные функции позволяют производить полное чтение базы данных (CVSS: 8.5, высокая) и небезопасную загрузку файлов (CVSS: 9.6, критическая). Небезопасная загрузка файлов приводит к удаленному выполнению кода.
Описание продукта
Archibus помогает организациям администрировать физические здания, оборудование и недвижимость из единого центрального центра управления. Пользователи могут отслеживать активы, заказы на техобслуживание, информацию об аренде недвижимости, а также бронировать рабочие места и переговорные комнаты. По данным Eptura, в 2023 году более 16 000 компаний и 40% участников списка Fortune 500 использовали Archibus.
Влияние
Злоумышленник, имеющий сетевой доступ к серверу по протоколу HTTP, может прочитать конфиденциальные данные и пароли из базы данных. Он также может запустить код для выполнения системных команд от имени «NT AUTHORITY/Local Service» и получить контроль над сервером.
Авторство
Эту уязвимость обнаружил Маркус Чанг (Marcus Chang), консультант по безопасности в Rapid7. Информация публикуется в соответствии с политикой Rapid7 в отношении раскрытия уязвимостей.
CVE-2026-107186 — Обход аутентификации в Archibus
Веб-приложение Archibus Web Central использует технологию Java Direct Web Remoting (DWR) для реализации различных функций API, которая позволяет отправлять запросы с несколькими вызовами методов. Метод isPasswordUppercase устанавливает системную сессию в потоке, а метод runWorkflowRule получает установленную сессию для аутентификации. Это позволяет злоумышленникам запускать практически любые правила рабочего процесса (workflow) без предоставления учетных данных. Специалисты Rapid7 протестировали правила рабочего процесса AbCommonResources-writeHTMLtoFile и AbCommonResources-getDataRecords.
Технический анализ
Большинство методов DWR требуют аутентификации, при этом DWR позволяет выполнять несколько вызовов в рамках одного запроса путем изменения параметра callCount и добавления других параметров методов в запрос.
DWR обрабатывает несколько вызовов в одном пакете последовательно в рамках одного и того же потока. Метод SecurityServiceImpl.isPasswordUppercase() добавлен в белый список для предварительной аутентификации и внутренне вызывает метод loadTableDef(), который устанавливает сессию пользователя основной системы в потоко-локальном хранилище ContextStore:
Метод DWRWorkflowService.runWorkflowRule() использует привилегированный контекст, установленный методом isPasswordUppercase. Если метод getUserSession() возвращает недействительное значение, выдается ошибка истечения времени сессии, в противном случае выполнение продолжается. Конечным результатом является выполнение выбранного пользователем рабочего процесса без предоставления каких-либо данных аутентификации:
Эксплуатация
Для эксплуатации требуются параметры scriptSessionId и PROJECT_ID. Запросы к API DWR имеют следующий формат:
Параметр scriptSessionId можно получить с помощью данного запроса DWR. Идентификатор JSESSIONID можно получить, перейдя по адресу /archibus/login.axvw:
Параметр Project_ID можно получить с помощью этого запроса:
Пример доказательства концепции (PoC)
Запрос на запуск правила рабочего процесса без аутентификации
Получите scriptSessionId и Project_ID. Их можно легко получить, отправив запрос на вход из браузера и просмотрев его. Данный запрос к конечной точке DWR определяет два вызова методов DWR, задавая параметр callCount равным 2. Первым вызывается метод isPasswordUppercase. Его параметры в теле POST-запроса начинаются с c0. Он устанавливает сеанс пользователя в хранилище контекста с помощью вызова context.setUserSession(coreUserSession) посредством метода isPasswordUppercase. Вторым вызывается метод runWorkflowRule, который использует контекст сеанса основного пользователя, установленный методом isPasswordUppercase. Его параметры начинаются с c1. В результате любой рабочий процесс может быть запущен в контексте основного сеанса пользователя без предоставления каких-либо учетных данных.
Пример ответа
CVE-2026-107187 — Чтение базы данных в Archibus
Рабочий процесс AbCommonResources-getDataRecords позволяет пользователям читать любые таблицы базы данных, включая имена пользователей и пароли. Эту уязвимость можно объединить с уязвимостью обхода аутентификации для чтения конфиденциальных данных из базы данных без аутентификации.
Технический анализ
Используя ранее описанную уязвимость обхода аутентификации, можно вызывать рабочий процесс AbCommonResources-getDataRecords без аутентификации. Он связан с методом ViewHandlers, который работает с любой таблицей, управляемой Archibus:
Аутентифицированные пользователи также могут отправлять запрос без выполнения обхода аутентификации. Код проверяет, состоит ли пользователь в группе безопасности правил рабочего процесса. Если нет, генерируется исключение. Специалисты Rapid7 не проверяли, можно ли отправить запрос рабочего процесса от имени стандартного пользователя.
Пример доказательства концепции (PoC)
Получив scriptSessionId и Project_ID (что легко сделать, отправив запрос на вход из браузера и просмотрев запрос), злоумышленник может использовать уязвимость обхода аутентификации. Он может настроить второй вызов в запросе DWR для рабочего процесса AbCommonResources-getDataRecords. Можно отправить запрос к таблице afm_users для просмотра имен пользователей и паролей.
Запрос
Ответ
Ниже представлен фрагмент того, как выглядят запрос и ответ в реальной системе. Столбцы user_name, user_pwd, email и role_name извлекаются из таблицы afm_users, где для role_name задано значение «SYSTEM ADMINISTRATOR (ACP)».
Рисунок 1: Чтение паролей и адресов электронной почты в таблице пользователей
CVE-2026-107188 — Неограниченная загрузка файлов в Archibus
Рабочий процесс AbCommonResources-writeHTMLtoFile записывает контролируемый пользователем контент на диск с задаваемым пользователем расширением файла и без какой-либо валидации. Это позволяет пользователям записывать код JSPX в доступные для просмотра через браузер папки, и он будет выполнен при переходе по соответствующей ссылке. Эту уязвимость можно сchained (объединить) с уязвимостью обхода аутентификации для загрузки исполняемого кода без аутентификации.
Технический анализ
Рабочий процесс AbCommonResources-writeHTMLtoFile записывает контролируемый пользователем контент на диск с задаваемым пользователем расширением файла и без какой-либо проверки:
Пример доказательства концепции (PoC)
Шаг 1
Получите scriptSessionId и Project_ID. Их можно легко получить, отправив запрос на вход в браузере и просмотрев его. Эту уязвимую цепочку рабочих процессов можно объединить с уязвимостью обхода аутентификации для загрузки файлов JSPX без аутентификации. Сервер возвращает сгенерированное имя файла вместе с путем к файлу, доступным для просмотра. Переход по ссылкам на файлы, загруженные с расширением JSP, приводил к перенаправлению на страницу аутентификации. Переход по файлам, загруженным с расширением JSPX, не приводил к принудительному перенаправлению, поэтому код злоумышленника в формате JSPX мог быть выполнен без аутентификации при переходе к этому файлу.
Запрос
Ответ включает путь к сгенерированному файлу, доступному для просмотра.
Ответ
Шаг 2
Перейдите по пути к файлу.
Специалисты Rapid7 проэксплуатировали уязвимость на сервере клиента сервиса Vector Command. В качестве первого доказательства концепции был загружен файл JSPX для вывода времени сервера.
Рисунок 2: Внедренный код на Java для вывода времени сервера
Пользователям рекомендуется обновить Archibus до версии 2025.02 или выше. Уязвимый метод DWR, использовавшийся для обхода аутентификации, — moved to a REST API in version 2025.02. Пользователям следует войти в свою учетную запись Eptura для загрузки установщика Archibus.
Клиенты Rapid7
Exposure Management, Vulnerability Management, Nexpose
Клиенты Exposure Management, Vulnerability Management и Nexpose могут оценить уровень подверженности уязвимостям CVE-2026-107186, CVE-2026-107187, CVE-2026-107188 с помощью проверок уязвимостей, которые планируется включить в выпуск контента 21 октября.
Хронология раскрытия информации
- 25 мая 2026 г.: Проблемы обнаружены Маркусом Чангом (Marcus Chang) и проэксплуатированы на сервере Archibus клиента Vector Command.
25 мая 2026 г.: Проблемы обнаружены Маркусом Чангом (Marcus Chang) и проэксплуатированы на сервере Archibus клиента Vector Command.
- 2 июля 2026 г.: Первичное обращение к Eptura. Eptura подтверждает получение автоматическим ответом.
2 июля 2026 г.: Первичное обращение к Eptura. Eptura подтверждает получение автоматическим ответом.
- 14 и 28 июля 2026 г.: Повторные обращения в Eptura с запросом ответа на первичное обращение.
14 и 28 июля 2026 г.: Повторные обращения в Eptura с запросом ответа на первичное обращение.
- 30 июля 2026 г.: Eptura отвечает, подтверждая готовность принять отчет об уязвимости, и упоминает, что версия, указанная Rapid7 в первичном обращении, больше не поддерживается, а также приводит ссылку на свою политику поддержки.
30 июля 2026 г.: Eptura отвечает, подтверждая готовность принять отчет об уязвимости, и упоминает, что версия, указанная Rapid7 в первичном обращении, больше не поддерживается, а также приводит ссылку на свою политику поддержки.
- 11 августа 2026 г.: Компания Eptura предоставила документ с описанием уязвимости, а также вопросы относительно планов Eptura по устранению уязвимости. Rapid7 также упоминает, что скоординированное раскрытие информации об уязвимости было бы предпочтительным подходом.
11 августа 2026 г.: Компания Eptura предоставила документ с описанием уязвимости, а также вопросы относительно планов Eptura по устранению уязвимости. Rapid7 также упоминает, что скоординированное раскрытие информации об уязвимости было бы предпочтительным подходом.
- 18 августа и 1 сентября 2026 г.: Повторное обращение в Eptura с запросом на верификацию отчета с деталями уязвимости и подтверждением предпочтительности скоординированного раскрытия.
18 августа и 1 сентября 2026 г.: Повторное обращение в Eptura с запросом на верификацию отчета с деталями уязвимости и подтверждением предпочтительности скоординированного раскрытия.
- 8 сентября, 15 сентября и 29 сентября 2026 г.: Повторные обращения в Eptura. Кроме того, Rapid7 отмечает, что 11 октября исполняется 0 дней с момента первичного раскрытия информации, а датой публичного раскрытия станет 12 октября 2026 г.
8 сентября, 15 сентября и 29 сентября 2026 г.: Повторные обращения в Eptura. Кроме того, Rapid7 отмечает, что 11 октября исполняется 60 дней с момента первичного раскрытия информации, а датой публичного раскрытия станет 12 октября 2026 г.
- 7 октября 2026 г.: Повторное обращение в Eptura с запросом на верификацию отчета с деталями уязвимости и подтверждением предпочтительности скоординированного раскрытия. Кроме того, Rapid7 запрашивает заявление вендора для включения в блог и подтверждает, что идентификаторы CVE были зарезервированы для проблем, раскрытых команде Eptura.
7 октября 2026 г.: Повторное обращение в Eptura с запросом на верификацию отчета с деталями уязвимости и подтверждением предпочтительности скоординированного раскрытия. Кроме того, Rapid7 запрашивает заявление вендора для включения в блог и подтверждает, что идентификаторы CVE были зарезервированы для проблем, раскрытых команде Eptura.
- 9 октября 2026 г.: Eptura отвечает, уточняя подверженные версии и заявляя, что исправление разрабатывается для версии 2025.01. Eptura запрашивает продление на одну неделю для переноса раскрытия информации на 19 октября.
9 октября 2026 г.: Eptura отвечает, уточняя подверженные версии и заявляя, что исправление разрабатывается для версии 2025.01. Eptura запрашивает продление на одну неделю для переноса раскрытия информации на 19 октября.
- 12 октября 2026 г.: Rapid7 соглашается на продление на одну неделю и предоставляет зарезервированные идентификаторы CVE компании Eptura.
12 октября 2026 г.: Rapid7 соглашается на продление на одну неделю и предоставляет зарезервированные идентификаторы CVE компании Eptura.
- 19 октября 2026 г.: Публичное раскрытие информации посредством публикации этой записи в блоге.
19 октября 2026 г.: Публичное раскрытие информации посредством публикации этой записи в блоге.









