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

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

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

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

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

Категории

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

CVE-2026-40047

Инструмент для воспроизведения CVE-2026-40047: Apache Camel camel-docling — инъекция аргументов CLI / обход пути

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

Популярное

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

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

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

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

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

camel-docling: репродуктор инъекции аргументов CLI / обхода пути (CVE-2026-40047)

Этот проект демонстрирует уязвимость инъекции аргументов CLI и обхода пути в компоненте Apache Camel camel-docling, отслеживаемую как CVE-2026-40047. DoclingProducer формирует вызов внешнего инструмента командной строки docling из заголовков сообщений; пользовательские аргументы, переданные через заголовок CamelDoclingCustomArguments, добавлялись с недостаточной проверкой (черный список плюс буквальная проверка ../), поэтому злоумышленник, влияющий на эти заголовки, может внедрить произвольные флаги CLI docling и значения путей с обходом в дочерний процесс.

Уведомление: https://camel.apache.org/security/CVE-2026-40047.html

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

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

DoclingProducer собирает вызов docling и запускает его через java.lang.ProcessBuilder (list-форма — без shell). Пользовательские аргументы CLI из заголовка CamelDoclingCustomArguments добавляются к команде:

root@kitploit:~
// DoclingProducer.addCustomArguments(...) - affected version
List<String> customArgs = exchange.getIn().getHeader(DoclingHeaders.CUSTOM_ARGUMENTS, List.class);
if (customArgs != null && !customArgs.isEmpty()) {
    validateCustomArguments(customArgs);   // denylist + literal "../" check (weak)
    command.addAll(customArgs);
}

В затронутых версиях validateCustomArguments полагался на черный список запрещенных флагов и отклонял только те значения путей, которые содержали буквальный ../. В результате:

  • Неизвестные флаги (не входящие в черный список) передаются напрямую в docling.
  • Значения, похожие на пути, которые осуществляют обход без буквального ../ (абсолютные пути или нормализованные последовательности), не перехватываются.

Поскольку Camel формирует вызов docling, компонент отвечает за ограничение этих значений. Исправление (CAMEL-23212) заменяет черный список строгим белым списком распознаваемых флагов, отклоняет управляемые производителем флаги (--output/-o) и метасимволы оболочки (эшелонированная защита) и нормализует значения, похожие на пути, с помощью Path.normalize() перед проверкой.

При вызове используется list-форма ProcessBuilder, поэтому оболочка не интерпретирует значения — инъекция команд ОС через метасимволы оболочки невозможна; отклонение метасимволов в исправлении является эшелонированной защитой.

Маршрут

root@kitploit:~
from("direct:convert")
    .to("docling:convert?operation=CONVERT_TO_MARKDOWN&contentInBody=true");

Как этот репродуктор демонстрирует инъекцию

docling — это внешний инструмент. Данный репродуктор поставляется с заглушкой docling (на PATH внутри контейнера), которая записывает полученные argv и возвращает markdown-файл, поэтому внедренные аргументы видны в HTTP-ответе и в /tmp/docling-invocations.log. Все выполняется внутри Docker-образа (приложение + заглушка) — установка настоящего docling не требуется.

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

  • Java 17+ и Maven 3.8+ (для сборки jar)
  • Docker (запускает приложение и заглушку docling)

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

Шаг 1: Соберите jar и образ

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

Шаг 2: Безвредное преобразование

root@kitploit:~
curl http://localhost:8080/exploit/normal
# stub docling receives: docling --to md --ocr-lang en --output <tmp> /tmp/input.txt

Шаг 3: Внедрение произвольных аргументов CLI

root@kitploit:~
curl "http://localhost:8080/exploit/attack"
# injects CamelDoclingCustomArguments = [--injected-by-attacker, arbitrary-value]
# -> stub docling receives:
#    docling --injected-by-attacker arbitrary-value --to md --ocr-lang en --output <tmp> /tmp/input.txt

# a path value with no literal "../" (absolute path) also passes:
curl "http://localhost:8080/exploit/attack?flag=--artifacts-path&value=/etc/attacker-controlled"

В затронутой версии (в этом репродукторе зафиксирована 4.18.2) маршрут успешно выполняется, и внедренные аргументы достигают дочернего процесса. В исправленной версии (4.18.3 / 4.19.0) белый список отклоняет --injected-by-attacker с IllegalArgumentException, и маршрут завершается ошибкой.

Очистка

root@kitploit:~
docker compose down

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

  1. Маршрут Camel, который передает данные, подверженные внешнему влиянию, в CamelDoclingCustomArguments (или в заголовки, содержащие пути) производителя docling:.
  2. Отсутствие удаления внутренних заголовков Camel из сообщений, поступающих от ненадежных производителей.

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

Обновитесь до 4.18.3 / 4.19.0. Исправление использует строгий белый список распознаваемых флагов docling, отклоняет управляемые производителем флаги и метасимволы оболочки, а также нормализует значения путей с помощью Path.normalize() перед их проверкой.

Меры по смягчению

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

  1. Не передавайте недоверенное содержимое в CamelDoclingCustomArguments или в заголовки, содержащие пути.
  2. Удаляйте внутренние заголовки Camel (removeHeaders("Camel*")) из сообщений, поступающих от ненадежных производителей, до передачи производителю docling:.

Файлы

root@kitploit:~
CVE-2026-40047/
├── pom.xml
├── Dockerfile                       # app + stub 'docling' on PATH
├── docker-compose.yml
├── docling-stub.sh                  # stub 'docling' (logs argv, writes markdown)
├── README.md
└── src/main/
    ├── java/com/example/
    │   ├── Application.java
    │   ├── DoclingRoute.java         # from(direct:convert).to(docling:convert)
    │   └── ExploitController.java    # injects CamelDoclingCustomArguments
    └── resources/
        └── application.properties

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

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

Скачать инструмент
СвойствоЗначение
Компонентcamel-docling
Затронутый классorg.apache.camel.component.docling.DoclingProducer (addCustomArguments / validateCustomArguments)
Корневая причинаCamelDoclingCustomArguments (список List<String>) добавляется к аргументам CLI docling со слабой проверкой по черному списку и буквальной проверкой ../
CWECWE-88 (Инъекция аргументов) / CWE-22 (Обход пути)
ВоздействиеВнедрение произвольных/непредусмотренных флагов CLI docling и значений путей за пределами каталога во внешний инструмент. НЕ является инъекцией команд ОС (list-форма ProcessBuilder, без shell).
Затронутые версииС 4.15.0 до 4.18.3 (не включая 4.18.3)
Исправленные версии4.18.3, 4.19.0
JIRACAMEL-23212
РепортерAndrea Cosentino (Apache Software Foundation)