CVE-2026-83531
Control inadecuado de la generación de código ('Code Injection'), Neutralización inadecuada de elementos especiales utilizados en una sentencia de lenguaje de expresiones ('Expression Language Injection') en la vulnerabilidad de Apache Camel.
Este problema afecta a Apache Camel: desde la 4.4.0 anterior a la 4.18.5, desde la 4.19.0 anterior a la 4.22.1.
El endpoint dynamic-router-control, introducido en la 4.4.0, permite a los participantes de enrutamiento gestionar las suscripciones de Dynamic Router mediante el envío de mensajes de control.
Leer descripción completaMostrar menos
Cuando gestionaba una solicitud de suscripción o actualización, DynamicRouterControlProducer obtenía del mensaje entrante el predicado de la suscripción y el nombre del lenguaje utilizado para compilarlo, ya fuera a partir de los campos predicate y expressionLanguage del cuerpo de un DynamicRouterControlMessage o de las cabeceras CamelDynamicRouterPredicate y CamelDynamicRouterExpressionLanguage. A continuación, DynamicRouterControlService resolvía ese lenguaje desde el CamelContext y compilaba la expresión en un Predicate, sin lista de permitidos ni activación explícita. El predicado compilado se añadía a la base de reglas del canal y se evaluaba contra cada intercambio enrutado a través del endpoint dynamic-router correspondiente, mientras la suscripción existiera. Por 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 a cualquier actor capaz de enviar un mensaje por ese transporte suministrar una expresión de su elección, que se evaluaba con los privilegios del proceso de Camel. Podía seleccionarse cualquier lenguaje de expresiones disponible en el classpath, incluido el lenguaje simple, que siempre está presente y era el predeterminado en la vía de las cabeceras; por ello, eliminar del classpath los lenguajes de expresiones opcionales no impedía el problema. La explotación requiere la capacidad de enviar un mensaje por un transporte cuya ruta lo reenvía a un endpoint dynamic-router-control; no se necesita ninguna otra autenticación ni interacción del usuario. Las versiones anteriores a la 4.4.0 no están afectadas, porque su canal de control tomaba las expresiones de los predicados ú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 utilizan la serie 4.22.x, se les sugiere actualizar a la 4.22.1. Si utilizan la serie 4.18.x, se les sugiere actualizar a la 4.18.5. La serie 4.14.x y anteriores alcanzaron el fin de su vida útil antes de que este problema fuera resuelto y no recibirán corrección, por lo que las implantaciones en esas ramas deben migrar a una versión soportada. Tras la actualización, un mensaje de control que contenga una expresión de predicado o un lenguaje de expresiones será rechazado a menos que se habilite la nueva opción allowPredicateFromMessage en el endpoint dynamic-router-control; habilítela solo cuando todos los remitentes de mensajes de control sean de confianza. En las implantaciones que no puedan actualizarse de inmediato, no reenvíen mensajes desde transportes no fiables o compartidos a un endpoint dynamic-router-control. Cuando los mensajes de control deban atravesar ese tipo de transporte, autentiquen al remitente y asegúrense de que el predicado y el lenguaje de expresiones de cada suscripción los establezca la ruta y no se tomen del mensaje entrante; por ejemplo, eliminando las cabeceras CamelDynamicRouterPredicate y CamelDynamicRouterExpressionLanguage y vaciando los campos predicate y expressionLanguage de un DynamicRouterControlMessage antes de que llegue al endpoint. Eliminar del classpath los lenguajes de expresiones opcionales no es una solución temporal suficiente. Como defensa en profundidad, restrinjan quién puede enviar mensajes a los transportes que alimentan el endpoint de control y, en las versiones 4.23.0 y 4.22.1, establezcan la opción allowedSchemes del endpoint dynamic-router para limitar qué endpoints puede nombrar el destinationUri de una suscripción.
Traducción automática del texto original de NVD (en inglés).
CVSS
- Puntuación base
- 8.8
- Versión
- 3.1
- Vector
- CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Probabilidad de explotación (EPSS)
- Probabilidad de explotación en los próximos 30 días
- 0.77 %
- Percentil entre todas las CVEs puntuadas
- 55
- Fecha de la puntuación
- 20/10/2026
EPSS (Exploit Prediction Scoring System, de FIRST) estima la probabilidad de que una vulnerabilidad sea explotada en 30 días. Complementa a CVSS (impacto) y a CISA KEV (explotación confirmada).
Exploits públicos
Hay código de explotación o plantillas de detección públicos. No es lo mismo que explotación activa confirmada (KEV), pero aumenta el riesgo: parchee con prioridad.
- Prueba de concepto en GitHub (no verificada) · Lista de pruebas de concepto en GitHub
⚠️ Las pruebas de concepto de GitHub no están verificadas: algunas son falsas o contienen malware. No las ejecute nunca fuera de un laboratorio aislado.
Técnicas ATT&CK
Cómo se explota esta vulnerabilidad y qué consigue el atacante, en el lenguaje de MITRE ATT&CK.
- Explotación
T1210Exploitation of Remote Serviceslateral movement85 % - Impacto principal
T1059Command and Scripting Interpreterexecution65 %
El vector AV:N con PR:L indica T1210; el texto describe inyección de expresiones evaluadas con los privilegios del proceso Camel (CWE-94), lo que sugiere ejecución de código.
Inferido por nuestro agente de análisis a partir de la descripción oficial, el vector CVSS y la CWE, y comprobado por un supervisor. Puede contener errores.
Mitigaciones ATT&CK que cubren estas técnicas
Tecnologías afectadas (1)
⚠ Inferidas por IA a partir de la descripción — NVD aún no ha analizado esta CVE; no son CPE verificados.
CWE
- CWE-94, CWE-917
Referencias
JSON original (NVD)
Mostrar
{
"id": "CVE-2026-83531",
"cveTags": [],
"metrics": {
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"id": "CVE-2026-83531",
"role": "CISA Coordinator",
"options": [
{
"exploitation": "none"
},
{
"automatable": "no"
},
{
"technicalImpact": "total"
}
],
"version": "2.0.3",
"timestamp": "2026-10-19T00:00:00+00:00"
}
}
],
"cvssMetricV31": [
{
"type": "Secondary",
"source": "security@apache.org",
"cvssData": {
"scope": "UNCHANGED",
"version": "3.1",
"baseScore": 8.8,
"attackVector": "NETWORK",
"baseSeverity": "HIGH",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
"integrityImpact": "HIGH",
"userInteraction": "NONE",
"attackComplexity": "LOW",
"availabilityImpact": "HIGH",
"privilegesRequired": "LOW",
"confidentialityImpact": "HIGH"
},
"impactScore": 5.9,
"exploitabilityScore": 2.8
}
]
},
"affected": [
{
"source": "security@apache.org",
"affectedData": [
{
"vendor": "Apache Software Foundation",
"product": "Apache Camel",
"versions": [
{
"status": "affected",
"version": "4.4.0",
"lessThan": "4.18.5",
"versionType": "maven"
},
{
"status": "affected",
"version": "4.19.0",
"lessThan": "4.22.1",
"versionType": "maven"
}
],
"packageURL": "pkg:maven/org.apache.camel/camel-dynamic-router",
"packageName": "org.apache.camel:camel-dynamic-router",
"collectionURL": "https://repo.maven.apache.org/maven2",
"defaultStatus": "unaffected"
}
]
}
],
"published": "2026-10-19T11:17:21.507",
"references": [
{
"url": "https://camel.apache.org/security/CVE-2026-83531.html",
"source": "security@apache.org"
},
{
"url": "https://github.com/apache/camel/pull/25992",
"source": "security@apache.org"
},
{
"url": "https://github.com/apache/camel/pull/26018",
"source": "security@apache.org"
},
{
"url": "https://github.com/apache/camel/pull/26019",
"source": "security@apache.org"
},
{
"url": "https://github.com/apache/camel/pull/26020",
"source": "security@apache.org"
},
{
"url": "https://issues.apache.org/jira/browse/CAMEL-24576",
"source": "security@apache.org"
}
],
"vulnStatus": "Awaiting Analysis",
"weaknesses": [
{
"type": "Secondary",
"source": "security@apache.org",
"description": [
{
"lang": "en",
"value": "CWE-94"
},
{
"lang": "en",
"value": "CWE-917"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "Improper Control of Generation of Code ('Code Injection'), Improper Neutralization of Special Elements used in an Expression Language Statement ('Expression Language Injection') vulnerability in Apache Camel.\n\n\n\nThis issue affects Apache Camel: from 4.4.0 before 4.18.5, from 4.19.0 before 4.22.1.\n\n\n\nThe dynamic-router-control endpoint, introduced in 4.4.0, lets routing participants manage Dynamic Router subscriptions by sending control messages. When it handled a subscribe or update request, DynamicRouterControlProducer took the subscription predicate and the name of the language used to compile it from the incoming message, either from the predicate and expressionLanguage fields of a DynamicRouterControlMessage body or from the CamelDynamicRouterPredicate and CamelDynamicRouterExpressionLanguage headers. DynamicRouterControlService then resolved that language from the CamelContext and compiled the expression into a Predicate, with no allow-list and no opt-in. The compiled predicate was added to the channel's rule base and evaluated against every exchange routed through the corresponding dynamic-router endpoint for as long as the subscription existed. A route that forwards messages from an external transport to the control endpoint, as shown in the component documentation for routing participants in other JVMs or applications, therefore let any actor able to send a message on that transport supply an expression of their choosing, which was evaluated with the privileges of the Camel process. Any expression language available on the classpath could be selected, including the simple language, which is always present and was the default on the header path, so removing optional expression languages from the classpath did not prevent the issue. Exploitation requires the ability to send a message on a transport whose route forwards it to a dynamic-router-control endpoint; no other authentication or user interaction is needed. Releases before 4.4.0 are not affected, because their control channel took predicate expressions only from the endpoint URI configured by the route author.\n\n\n\nUsers are recommended to upgrade to version 4.23.0, which fixes the issue. If users are on the 4.22.x releases stream, then they are suggested to upgrade to 4.22.1. If users are on the 4.18.x releases stream, then they are suggested to upgrade to 4.18.5. The 4.14.x releases stream and earlier reached end of life before this issue was resolved and will not receive a fix, so deployments on those lines must move to a supported release. After upgrading, a control message that carries a predicate expression or an expression language is rejected unless the new allowPredicateFromMessage option is enabled on the dynamic-router-control endpoint; enable it only when every sender of control messages is trusted. For deployments that cannot upgrade immediately, do not forward messages from untrusted or shared transports to a dynamic-router-control endpoint. Where control messages must cross such a transport, authenticate the sender and make sure the predicate and expression language of each subscription are set by the route rather than taken from the incoming message, for example by removing the CamelDynamicRouterPredicate and CamelDynamicRouterExpressionLanguage headers and clearing the predicate and expressionLanguage fields of a DynamicRouterControlMessage before it reaches the endpoint. Removing optional expression languages from the classpath is not a sufficient workaround. As defence in depth, restrict who can send to the transports that feed the control endpoint, and on 4.23.0 and 4.22.1 set the allowedSchemes option of the dynamic-router endpoint to limit which endpoints a subscription's destinationUri may name."
}
],
"lastModified": "2026-10-20T04:17:06.060",
"sourceIdentifier": "security@apache.org"
}