
Reproducteur de preuve de concept exécutable pour CVE-2026-80344 dans Apache Camel camel-as2, démontrant une SSRF via MDN asynchrone et la divulgation d'identifiants avec des builds affectés et corrigés.
Reproducteur de preuve de concept exécutable pour la vulnérabilité Apache Camel où le récepteur AS2 livrait la
Notification de Disposition de Message (MDN) asynchrone à une adresse fournie par l'expéditeur (l'option
Receipt-Delivery-Option), sans aucune contrainte. Un partenaire distant choisit donc l'hôte auquel l'instance Camel
se connecte lors de la livraison de la MDN — une falsification de requête côté serveur depuis la position du récepteur AS2, atteignant des hôtes
routables uniquement depuis l'intérieur du réseau du déploiement — et lorsque la livraison de la MDN est configurée avec des identifiants, ces
identifiants sont présentés à la destination choisie par l'attaquant.
| Runtime | Répertoire | Stack |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-as2 4.22.0 (affecté ; corrigé en 4.22.1) |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.29.0 + camel-quarkus-as2 3.29.0 (Camel 4.15.0, affecté ; contrôle corrigé 3.40.0 / Camel 4.22.1) |
L'application exécute, dans une seule JVM :
as2://server/listen, port 8888) configuré avec des identifiants de livraison de MDN ;as2://client/send) qui envoie un message AS2 non signé (PLAIN) demandant une
MDN asynchrone, avec receiptDeliveryOption pointant vers une URL interne uniquement (127.0.0.1:9099, un port
que Docker ne publie pas — représentant un hôte accessible uniquement depuis l'intérieur du déploiement) ;Sur la version affectée, le récepteur se connecte à l'URL interne choisie par l'attaquant pour livrer la MDN et
présente ses identifiants de livraison de MDN (Authorization: Basic …) à celle-ci. Sur la version corrigée, ces identifiants
sont retenus (ils ne sont attachés qu'aux hôtes figurant sur la liste autorisée), et la nouvelle option asyncMdnAllowedHosts restreint entièrement
l'hôte de livraison.
cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack
docker compose down
Sortie attendue sur le build affecté :
Internal host connections observed:
POST /internal-mdn-sink (Authorization=Basic bWRuLXBhcnRuZXItdXNlcjpNRE4tREVMSVZFUlktU0VDUkVU)
>>> PROVEN: the AS2 receiver connected to the sender-chosen internal URL to deliver the async MDN
>>> (server-side request forgery) AND presented its configured MDN-delivery credentials ...
(La valeur Authorization se décode en mdn-partner-user:MDN-DELIVERY-SECRET.) Sur la version corrigée, la connexion
affiche Authorization=null — les identifiants ne sont plus présentés à l'hôte choisi par l'expéditeur.
| Propriété | Valeur |
|---|---|
| Composant | camel-as2 |
| CWE | CWE-918 (Server-Side Request Forgery) ; divulgation d'identifiants (CWE-200) |
| Gravité | ÉLEVÉE |
| Vecteur d'attaque | Un expéditeur AS2 demandant un MDN asynchrone avec une adresse Receipt-Delivery-Option choisie par l'attaquant |
| Impact | Server-Side Request Forgery depuis le récepteur (atteinte d'hôtes internes) ; divulgation des identifiants de livraison MDN à l'hôte choisi par l'attaquant |
| 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-24417 |
| Crédit | Claude Security Scan Tool |
Avis de sécurité : https://camel.apache.org/security/CVE-2026-80344.html
La destination MDN asynchrone est désormais restreinte plutôt que reprise telle quelle depuis le message entrant. Une nouvelle
option asyncMdnAllowedHosts (label security) définit une liste d'autorisation des hôtes auxquels le MDN peut être livré, et les
identifiants de livraison MDN configurés ne sont attachés que lorsque la destination figure dans la liste d'autorisation — ainsi, par défaut
(sans liste d'autorisation), les identifiants ne sont jamais présentés à un hôte choisi par l'expéditeur.
Restreignez la connectivité sortante depuis le récepteur AS2 vers les points de terminaison partenaires auxquels il livre légitimement les accusés de réception, et n'attachez pas à la livraison MDN des identifiants valides pour un hôte autre que ces partenaires.
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. Les « identifiants » et le récepteur interne sont des fixtures locales inertes. N'utilisez pas ce contenu contre des systèmes que vous ne possédez pas ou n'exploitez pas.