
Reproducteur pour CVE-2026-46592 : injection d'en-tête operationName dans camel-cxf d'Apache Camel redirigeant l'opération SOAP invoquée (député confus) d'une opération de lecture vers une opération destructrice (corrigé dans 4.14.8/4.18.3/4.21.0)
operationName dans camel-cxf (Redirection d'opération SOAP)Reproducteurs de preuve de concept exécutables pour la même vulnérabilité Apache Camel, un par environnement d'exécution :
| Environnement | Répertoire | Pile | Service SOAP backend |
|---|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.2.0 + camel-spring-boot 4.18.2 | CXF ServerFactoryBean sur son propre port :9000 |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.36.0 + Camel Quarkus 3.36.0 (inclut Camel 4.20.0) | quarkus-cxf sur le serveur géré, /soapservice/account |
Les deux sont des versions affectées (corrigées en 4.14.8 / 4.18.3 / 4.21.0), et les deux démontrent le défaut identique :
CxfProducer#getBindingOperationInfo recherche d'abord un en-tête de message operationName et ne se replie sur
le defaultOperationName du point de terminaison que lorsqu'il est absent. La valeur de cette constante d'en-tête est la simple chaîne
operationName — et non CamelCxfOperationName — donc le filtre de limite HTTP (qui supprime uniquement Camel*) laisse
passer un en-tête HTTP entrant de ce nom. Un client non fiable ajoute operationName: deleteAccount et
l'opération getBalance épinglée et en lecture seule de la route devient un appel destructeur (CWE-441, député confus).
Les deux variantes ne diffèrent que par la manière dont le service SOAP backend est mis en place : la variante Quarkus le publie avec quarkus-cxf sur le serveur HTTP Quarkus géré (le contrat porte donc des annotations JAX-WS
@WebService), tandis que la variante Spring Boot le crée par programmation avec un CXFServerFactoryBeansur un port séparé. Le défaut n'est pas affecté.
Chaque sous-répertoire est un projet autonome avec son propre Dockerfile, docker-compose.yml et README. En
résumé, pour l'un ou l'autre :
cd camel-spring-boot # ou : cd camel-quarkus
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack
docker compose down
| Propriété | Valeur |
|---|---|
| Composant | camel-cxf (camel-cxf-soap ; la constante se trouve dans camel-cxf-common, donc camel-cxfrs est également affecté) |
| Classe affectée | org.apache.camel.component.cxf.jaxws.CxfProducer#getBindingOperationInfo lisant CxfConstants.OPERATION_NAME ("operationName") |
| CWE | CWE-20 (Validation d'entrée incorrecte) / CWE-441 (Proxy ou intermédiaire non intentionnel — Député confus) |
| Impact | Un client HTTP définit operationName → le producteur invoque une opération SOAP différente (par exemple une opération destructrice) |
| Versions affectées | De 4.0.0 avant 4.14.8, de 4.15.0 avant 4.18.3, de 4.19.0 avant 4.21.0 |
| Versions corrigées | 4.14.8, 4.18.3, 4.21.0 |
| JIRA | CAMEL-23526 (PR apache/camel#23326) |
| Crédit | Yu Bao (PayPal) |
Avis : https://camel.apache.org/security/CVE-2026-46592.html
Ces reproducteurs sont fournis pour la recherche en sécurité et les tests autorisés uniquement, pour une vulnérabilité divulguée publiquement et corrigée. Ne les utilisez pas contre des systèmes sans autorisation explicite.