CVE-2026-95664
Apache Camel: el productor de Camel-AWS2-S3 evalúa claves de objetos S3 no confiables del encabezado CamelAwsS3Key como expresiones simples
- Publicado
- 26 oct 2026
- Actualizado
- 2 nov 2026
- Asignación de CNA
- apache
- Evidencia observada
- 30 oct 2026
CVSS primario
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:NBajo · próximos 30 días
- Percentil
- 57,7 %
- Fecha del modelo
- 2 nov 2026
EPSS es una estimación estadística, no una certeza o una medida de impacto. Combínelo con CVSS, estado KEV, exposición y su entorno.
Resumen
Vulnerabilidad de neutralización incorrecta de elementos especiales utilizados en una declaración de lenguaje de expresión ('inyección de lenguaje de expresión') en el componente AWS2-s3 de Apache Camel. Este problema afecta a Apache Camel: desde 4.8.0 hasta antes de 4.18.5, desde 4.19.0 hasta antes de 4.22.2. Para el objeto que carga, lee o elimina, el productor de camel-aws2-s3 toma la clave del encabezado del mensaje CamelAwsS3Key y recurre a la opción keyName configurada en el endpoint solo cuando ese encabezado está ausente. Desde 4.8.0, AWS2S3Utils.determineKey() también pasaba el valor resultante al lenguaje Simple siempre que contuviera ${ o $simple{, de modo que una ruta podía usar una clave dinámica, y la evaluación se aplicaba tanto a un valor tomado del encabezado como a la opción configurada. Sin embargo, el encabezado no es configuración de la ruta: el consumidor de aws2-s3 establece CamelAwsS3Key en los exchanges que crea con la clave del objeto que leyó, es decir, el nombre del objeto en el bucket. Por lo tanto, en una ruta que no hace más que consumir de un endpoint aws2-s3 y producir a otro, el nombre de cada objeto consumido llegaba al productor, y un nombre que contuviera cualquiera de los marcadores se evaluaba como una expresión, aunque el autor de la ruta nunca solicitó ninguna evaluación, y configurar keyName en el productor no lo impedía, porque el encabezado tenía prioridad. Una clave que una ruta copiaba al encabezado desde otro contenido del mensaje se evaluaba de la misma manera. Por lo tanto, cualquiera capaz de elegir el nombre de un objeto en un bucket que dicha ruta consume, típicamente un principal autorizado a cargar en ese bucket, podría haber hecho que se evaluaran expresiones Simple de su elección en el proceso de Camel. El lenguaje Simple puede leer propiedades del sistema JVM, variables de entorno y propiedades de configuración, que comúnmente contienen credenciales y, donde camel-bean está en el classpath, invocar métodos en beans del registro. El resultado evaluado se convertía en la clave que usaba el productor, por lo que leer un valor de vuelta requería además la capacidad de ver los nombres de los objetos en el bucket de destino, mientras que una invocación de método surtía efecto sin ello; junto con la necesidad de nombrar un objeto en un bucket consumido, esta es la razón por la que la gravedad se evalúa como media. El nombre del bucket pasaba por la misma evaluación, pero el consumidor solo coloca el bucket configurado en su propio endpoint en un encabezado de bucket, nunca un valor derivado de un objeto remoto, por lo que el nombre del bucket no era alcanzable de esta manera. Las versiones anteriores a 4.8.0 usaban la clave del encabezado tal como se proporcionaba y no se ven afectadas. Se recomienda a los usuarios actualizar a la versión 4.23.0, que corrige el problema. Si los usuarios están en la línea de versiones 4.22.x, se sugiere actualizar a 4.22.2. Si los usuarios están en la línea de versiones 4.18.x, se sugiere actualizar a 4.18.5. Las líneas de versión 4.8.x a 4.17.x y 4.19.x a 4.21.x alcanzaron el fin de su vida útil antes de que se resolviera este problema y no recibirán una corrección, por lo que las implementaciones en ellas deben pasar a una versión compatible. Después de la actualización, una clave o un nombre de bucket proporcionado a través de un encabezado de mensaje se usa literalmente, por lo que una ruta que colocaba una expresión Simple sin evaluar en el encabezado CamelAwsS3Key o CamelAwsS3OverrideBucketName debe evaluarla en la ruta, por ejemplo con setHeader y simple(), o configurarla como la opción keyName o bucketName del endpoint. Para las implementaciones que no pueden actualizarse de inmediato, no permita que una clave derivada de un nombre de objeto o de otro contenido de mensaje no confiable llegue a un productor aws2-s3 sin control: en las rutas que pasan exchanges de un consumidor aws2-s3 a un productor aws2-s3, elimine el encabezado CamelAwsS3Key antes del productor con removeHeader(“CamelAwsS3Key”), de modo que se use el keyName configurado en el endpoint, o rechace los exchanges cuyo encabezado CamelAwsS3Key contenga ${ o $simple{. Configurar solo keyName no es una solución alternativa, porque el encabezado tiene prioridad sobre él. Como defensa en profundidad, permita que solo los principales de confianza escriban en los buckets que consumen las rutas de Camel.
Uso responsable
Utilice información sobre vulnerabilidades solo en sistemas de su propiedad o que esté autorizado a probar. Kitploit enlaza con metadatos de investigación pública y no almacena código de explotación ni cargas útiles maliciosas.