
Репродьюсер и анализ для CVE-2026-79985 — обхода пути в Apache Camel camel-smb, где имена в листинге общих ресурсов обходят ограничение каталога, с затронутыми маршрутами и сведениями об исправлении.
Репозиторий-воспроизведение для уязвимости Apache Camel, в которой consumer smb строит удалённый путь каждого
опрашиваемого файла путём конкатенации настроенного каталога с именем, указанным в листинге share SMB, без
проверки вложенности. SmbConsumer обходит листинг самостоятельно (не через RemoteFileConsumer), пропуская только
точные записи . и .., поэтому имя, содержащее сегменты обхода в любой другой форме, конкатенировалось без проверки —
в результате получался путь за пределами опрашиваемого каталога для извлечения и, при delete/move/preMove/moveFailed/
readLock=rename, удаления или переименования.
Этот репозиторий-воспроизведение предназначен только для автора — см. ниже — и является SMB-аналогом запускаемых CVE-2026-79983 (
camel-ftp) и CVE-2026-79984 (camel-mina-sftp), которые демонстрируют идентичную первопричину и исправление от начала до конца против встроенного вредоносного сервера.
Как указано в самом advisory, достижение проблемы через SMB
"требует сервера, который выдаёт имя в листинге, не являющееся единственным сегментом пути, чего соответствующая реализация SMB2 не делает; уязвимость была исправлена на той же основе, что и другие consumer'ы удалённых файлов, а не на основании продемонстрированного proof of concept для этой схемы."
Не существует встраиваемого вредоносного SMB-сервера, который выдаёт такое имя (в отличие от FTP, где VFS Apache MINA FtpServer
можно заставить это делать, и SFTP, где можно переопределить getShortName в Apache MINA SSHD). Поэтому этот репозиторий содержит
точную конфигурацию затронутого consumer'а (реальный маршрут camel-smb, см. SmbRoute.java / SmbRoutes.java) и документирует
механизм и исправление, а запускаемую сквозную демонстрацию оставляет репозиториям-воспроизведениям для FTP и SFTP, указанным выше.
| Среда выполнения | Каталог | Стек |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-smb 4.22.0 (затронута; исправлено в 4.22.1) |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.29.0 + camel-quarkus-smb 3.29.0 (Camel 4.15.0, затронута) |
Оба модуля компилируются и запускаются без SMB-сервера (маршрут определён с autoStartup=false). Укажите
-Dsmb.enabled=true вместе с smb.host/smb.share/smb.username/smb.password, чтобы направить точный затронутый маршрут на
ваш собственный SMB-сервер.
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
| Свойство | Значение |
|---|---|
| Компонент | camel-smb (схема smb) |
| CWE | CWE-22 (Некорректное ограничение пути к каталогу) |
| Критичность | ВЫСОКАЯ |
| Вектор атаки | Имя в листинге общего ресурса (предоставляемое сервером), не являющееся одним сегментом пути |
| Воздействие | Чтение — а при delete/move/readLock=rename также удаление или переименование — файлов за пределами опрашиваемого каталога с использованием учётных данных эндпоинта |
| Затронутые версии | С 4.2.0 до 4.18.5, с 4.19.0 до 4.22.1 |
| Исправленные версии | 4.18.5, 4.22.1, 4.23.0 |
| JIRA | CAMEL-24487 |
| Благодарность | Dilrevx из NSSL, SJTU |
Рекомендация: https://camel.apache.org/security/CVE-2026-79985.html
SmbConsumer теперь применяет ту же проверку нахождения в каталоге, что и другие потребители удалённых файлов: разрешённый путь, выходящий
за пределы опрашиваемого каталога, пропускается с предупреждением, поэтому имя из листинга, содержащее сегменты обхода,
больше не достигает операнда retrieve/delete/rename.
Ограничьте потребителя с помощью filter/antInclude/include, чтобы принимать только имена из одного сегмента, и избегайте
delete/move/preMove/moveFailed/readLock=rename при работе с серверами, чьи листинги не являются полностью доверенными. Где
возможно, ограничьте учётную запись сервера опрашиваемым каталогом.
Этот репозиторий публикуется в образовательных и защитных целях: чтобы помочь пользователям Apache Camel понять уязвимость, проверить, затронуты ли они, и убедиться, что обновление её устраняет. Не используйте этот материал против систем, которыми вы не владеете и не управляете.