
Reproductor para CVE-2026-46592: Apache Camel camel-cxf inyección de cabecera operationName que redirige la operación SOAP invocada (confused deputy) de una de lectura a una destructiva (corregido en 4.14.8/4.18.3/4.21.0)
operationName de camel-cxf (Redirección de operación SOAP)Reproductores de prueba de concepto ejecutables para la misma vulnerabilidad de Apache Camel, uno por tiempo de ejecución:
| Tiempo de ejecución | Directorio | Stack | Servicio SOAP de backend |
|---|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.2.0 + camel-spring-boot 4.18.2 | CXF ServerFactoryBean en su propio puerto :9000 |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.36.0 + Camel Quarkus 3.36.0 (incluye Camel 4.20.0) | quarkus-cxf en el servidor administrado, /soapservice/account |
Ambas son versiones afectadas (corregidas en 4.14.8 / 4.18.3 / 4.21.0), y ambas demuestran el mismo defecto:
CxfProducer#getBindingOperationInfo primero busca un encabezado de mensaje operationName y solo recurre al
defaultOperationName del endpoint cuando está ausente. El valor constante de ese encabezado es la cadena simple
operationName — no CamelCxfOperationName — por lo que el filtro de límite HTTP (que elimina solo Camel*) deja
pasar directamente un encabezado HTTP entrante con ese nombre. Un cliente no confiable agrega operationName: deleteAccount y
el getBalance fijo y de solo lectura de la ruta se convierte en una llamada destructiva (CWE-441, deputy confundido).
Las dos variantes difieren solo en cómo se despliega el servicio SOAP de backend: la variante Quarkus lo publica con quarkus-cxf en el servidor HTTP administrado de Quarkus (por lo que el contrato lleva anotaciones JAX-WS
@WebService), mientras que la variante Spring Boot lo crea programáticamente con un CXFServerFactoryBeanen un puerto separado. El defecto no se ve afectado.
Cada subdirectorio es un proyecto autónomo con su propio Dockerfile, docker-compose.yml y README. En
resumen, para cualquiera de ellos:
cd camel-spring-boot # o: cd camel-quarkus
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack
docker compose down
Aviso: https://camel.apache.org/security/CVE-2026-46592.html
Estos reproductores se proporcionan solo para investigación de seguridad y pruebas autorizadas, para una vulnerabilidad divulgada públicamente y corregida. No los utilice contra sistemas sin permiso explícito.
| Propiedad | Valor |
|---|
| Componente | camel-cxf (camel-cxf-soap; la constante reside en camel-cxf-common, por lo que camel-cxfrs también está afectado) |
| Clase afectada | org.apache.camel.component.cxf.jaxws.CxfProducer#getBindingOperationInfo leyendo CxfConstants.OPERATION_NAME ("operationName") |
| CWE | CWE-20 (Validación de entrada incorrecta) / CWE-441 (Proxy o intermediario no intencionado — Deputy confundido) |
| Impacto | Un cliente HTTP establece operationName → el productor invoca una operación SOAP diferente (por ejemplo, una destructiva) |
| Versiones afectadas | Desde 4.0.0 antes de 4.14.8, desde 4.15.0 antes de 4.18.3, desde 4.19.0 antes de 4.21.0 |
| Versiones corregidas | 4.14.8, 4.18.3, 4.21.0 |
| JIRA | CAMEL-23526 (PR apache/camel#23326) |
| Crédito | Yu Bao (PayPal) |