CVE-2026-83531
Apache Camel: el endpoint de control Camel-Dynamic-Router compila expresiones de predicado proporcionadas por mensajes de control
- Publicado
- 19 oct 2026
- Actualizado
- 20 oct 2026
- Asignación de CNA
- apache
- Evidencia observada
- 19 oct 2026
CVSS primario
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:HBajo · próximos 30 días
- Percentil
- 57,9 %
- Fecha del modelo
- 25 oct 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
Control inadecuado de la generación de código ("inyección de código"), neutralización inadecuada de elementos especiales utilizados en una declaración del lenguaje de expresiones ("inyección de lenguaje de expresiones"), vulnerabilidad en Apache Camel. Este problema afecta a Apache Camel: desde 4.4.0 hasta antes de 4.18.5, desde 4.19.0 hasta antes de 4.22.1. El endpoint dynamic-router-control, introducido en 4.4.0, permite a los participantes de enrutamiento gestionar las suscripciones de Dynamic Router mediante el envío de mensajes de control. Cuando gestionaba una solicitud de suscripción o actualización, DynamicRouterControlProducer tomaba el predicado de suscripción y el nombre del lenguaje utilizado para compilarlo del mensaje entrante, ya fuera de los campos predicate y expressionLanguage de un cuerpo DynamicRouterControlMessage o de las cabeceras CamelDynamicRouterPredicate y CamelDynamicRouterExpressionLanguage. DynamicRouterControlService resolvía entonces ese lenguaje desde el CamelContext y compilaba la expresión en un Predicate, sin lista de permitidos y sin opt-in. El predicado compilado se añadía a la base de reglas del canal y se evaluaba contra cada exchange enrutado a través del endpoint dynamic-router correspondiente mientras existiera la suscripción. Por lo tanto, una ruta que reenvía mensajes desde un transporte externo al endpoint de control, como se muestra en la documentación del componente para participantes de enrutamiento en otras JVM o aplicaciones, permitía que cualquier actor capaz de enviar un mensaje en ese transporte proporcionara una expresión de su elección, que se evaluaba con los privilegios del proceso de Camel. Se podía seleccionar cualquier lenguaje de expresiones disponible en el classpath, incluido el lenguaje simple, que siempre está presente y era el predeterminado en la ruta de las cabeceras, por lo que eliminar los lenguajes de expresiones opcionales del classpath no prevenía el problema. La explotación requiere la capacidad de enviar un mensaje en un transporte cuya ruta lo reenvíe a un endpoint dynamic-router-control; no se necesita ninguna otra autenticación ni interacción del usuario. Las versiones anteriores a 4.4.0 no se ven afectadas, porque su canal de control tomaba las expresiones de predicado únicamente del URI del endpoint configurado por el autor de la ruta. Se recomienda a los usuarios actualizar a la versión 4.23.0, que corrige el problema. Si los usuarios están en la rama de versiones 4.22.x, se sugiere actualizar a 4.22.1. Si los usuarios están en la rama de versiones 4.18.x, se sugiere actualizar a 4.18.5. La rama de versiones 4.14.x y anteriores alcanzaron el fin de su ciclo de vida antes de que se resolviera este problema y no recibirán una corrección, por lo que las implementaciones en esas líneas deben migrar a una versión compatible. Tras la actualización, un mensaje de control que transporte una expresión de predicado o un lenguaje de expresiones se rechaza a menos que la nueva opción allowPredicateFromMessage esté habilitada en el endpoint dynamic-router-control; habilítela solo cuando todos los remitentes de mensajes de control sean de confianza. Para las implementaciones que no puedan actualizar de inmediato, no reenvíe mensajes desde transportes no confiables o compartidos a un endpoint dynamic-router-control. Cuando los mensajes de control deban cruzar dicho transporte, autentique al remitente y asegúrese de que el predicado y el lenguaje de expresiones de cada suscripción sean establecidos por la ruta en lugar de tomarse del mensaje entrante, por ejemplo eliminando las cabeceras CamelDynamicRouterPredicate y CamelDynamicRouterExpressionLanguage y borrando los campos predicate y expressionLanguage de un DynamicRouterControlMessage antes de que llegue al endpoint. Eliminar los lenguajes de expresiones opcionales del classpath no es una solución alternativa suficiente. Como defensa en profundidad, restrinja quién puede enviar a los transportes que alimentan el endpoint de control y, en 4.23.0 y 4.22.1, configure la opción allowedSchemes del endpoint dynamic-router para limitar qué endpoints puede nombrar el destinationUri de una suscripción.
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.