
Reproducteur et analyse pour CVE-2026-79986, une traversée de chemin dans Apache Camel camel-azure-files où les noms de listage de partages s'échappent du répertoire interrogé.
Dépôt de reproduction de la vulnérabilité Apache Camel où le consumer azure-files — qui dérive de la même classe de base RemoteFileConsumer que les autres consumers de fichiers distants et compose le chemin distant via un simple helper de concaténation — construit le chemin distant de chaque fichier interrogé en concaténant le répertoire configuré avec le nom rapporté dans le listing du partage Azure File, sans aucune vérification de confinement. Un nom de listing qui n'est pas un segment de chemin unique était donc résolu en dehors du répertoire interrogé pour la récupération et, avec delete/move/preMove/moveFailed/readLock=rename, pour la suppression ou le renommage.
Ce reproducteur est réservé à l'auteur — voir ci-dessous — et constitue le pendant Azure-Files des reproducteurs exécutables CVE-2026-79983 (
camel-ftp) et CVE-2026-79984 (camel-mina-sftp), qui démontrent la cause racine et le correctif identiques de bout en bout contre un serveur malveillant embarqué.
Ce dépôt contient donc le câblage exact du consumer affecté (une vraie route camel-azure-files, voir
AzureFilesRoute.java / AzureFilesRoutes.java), documente le mécanisme et le correctif, et renvoie la démonstration
exécutable de bout en bout aux reproducteurs FTP et SFTP ci-dessus.
| Runtime | Répertoire | Stack |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-azure-files 4.22.0 (affecté ; corrigé en 4.22.1) |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.29.0 + camel-quarkus-azure-files 3.29.0 (Camel 4.15.0, affecté) |
Les deux modules compilent et démarrent proprement sans identifiants Azure (la route est définie avec autoStartup=false). Définissez
-Daz.enabled=true avec az.account/az.share/az.sharedKey pour pointer la route exacte affectée vers un partage Azure File
de votre choix.
cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack # prints the explanation + links to the runnable PoCs
docker compose down
| Propriété | Valeur |
|---|---|
| Composant | camel-azure-files (schéma azure-files) |
| CWE | CWE-22 (Limitation incorrecte d'un nom de chemin à un répertoire restreint) |
| Gravité | ÉLEVÉE |
| Vecteur d'attaque | Un nom de liste de partage (fourni par le serveur) qui n'est pas un segment de chemin unique |
| Impact | Lecture — et, avec delete/move/readLock=rename, suppression ou renommage — de fichiers en dehors du répertoire interrogé, en utilisant les identifiants du point de terminaison |
| 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-24487 |
| Crédit | Dilrevx de NSSL, SJTU |
Avis de sécurité : https://camel.apache.org/security/CVE-2026-79986.html
Le consommateur azure-files applique désormais la même vérification de confinement que les autres consommateurs de fichiers distants : un chemin résolu qui sort du répertoire interrogé est ignoré avec un avertissement, de sorte qu'un nom de liste contenant des segments de traversée n'atteint plus l'opérande de récupération/suppression/renommage.
Restreignez le consommateur avec filter/antInclude/include pour n'accepter que des noms à segment unique, et évitez delete/move/preMove/moveFailed/readLock=rename sur les partages dont les listes ne sont pas entièrement fiables.
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 à niveau la résout. N'utilisez pas ce contenu contre des systèmes que vous ne possédez pas ou n'exploitez pas.