
Reproducteur et analyse pour CVE-2026-79985, une traversée de chemin dans Apache Camel camel-smb où les noms de partage contournent le confinement de répertoire, avec les routes affectées et les détails du correctif.
Dépôt de reproduction de la vulnérabilité Apache Camel où le consumer smb construit le chemin distant de chaque fichier interrogé en concaténant le répertoire configuré avec le nom rapporté dans le listing du partage SMB, sans aucune vérification de confinement. SmbConsumer parcourt lui-même le listing (et non via RemoteFileConsumer), en ignorant uniquement les entrées exactes . et .., de sorte qu'un nom portant des segments de traversée sous toute autre forme était concaténé sans contrôle — aboutissant à un chemin hors du répertoire interrogé pour la récupération et, avec delete/move/preMove/moveFailed/readLock=rename, à une suppression ou un renommage.
Ce reproducteur est réservé à l'auteur — voir ci-dessous — et constitue le pendant SMB 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 face à un serveur malveillant embarqué.
Comme l'indique l'avis lui-même, atteindre le problème via SMB
« nécessite un serveur qui émet un nom de listing qui n'est pas un segment de chemin unique, ce qu'une implémentation SMB2 conforme ne fait pas ; l'exposition a été corrigée sur la même base que les autres consumers de fichiers distants plutôt qu'à partir d'une preuve de concept démontrée contre ce schéma. »
Il n'existe pas de serveur SMB malveillant embarquable qui émette un tel nom (contrairement à FTP, où le VFS d'Apache MINA FtpServer peut y être amené, et à SFTP, où le getShortName d'Apache MINA SSHD peut être surchargé). Ce dépôt porte donc le câblage exact du consumer affecté (une vraie route camel-smb, voir SmbRoute.java / SmbRoutes.java) et documente le mécanisme et le correctif, en renvoyant 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-smb 4.22.0 (affecté ; corrigé en 4.22.1) |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.29.0 + camel-quarkus-smb 3.29.0 (Camel 4.15.0, affecté) |
Les deux modules compilent et démarrent proprement sans serveur SMB (la route est définie avec autoStartup=false). Définissez -Dsmb.enabled=true avec smb.host/smb.share/smb.username/smb.password pour pointer la route exacte affectée vers un serveur SMB 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-smb (schéma smb) |
| CWE | CWE-22 (Limitation incorrecte d'un nom de chemin à un répertoire restreint) |
| Sévérité | ÉLEVÉE |
| Vecteur d'attaque | Un nom 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.2.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-79985.html
SmbConsumer 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 partage 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 contre des serveurs dont les listes de partage ne sont pas entièrement fiables. Lorsque
cela est possible, limitez le compte serveur au répertoire interrogé.
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. N'utilisez pas ce contenu contre des systèmes que vous ne possédez pas ou n'exploitez pas.