
Воспроизведение и анализ CVE-2026-79986 — обхода пути в Apache Camel camel-azure-files, при котором имена в листинге общих ресурсов выходят за пределы опрашиваемого каталога.
Репозиторий-репродуктор уязвимости Apache Camel, в которой consumer azure-files — наследующий тот же базовый класс
RemoteFileConsumer, что и другие remote-file consumers, и составляющий удалённый путь через простой помощник
конкатенации — строит удалённый путь каждого опрашиваемого файла путём конкатенации настроенного каталога с именем,
указанным в листинге share Azure File, без проверки на вложенность. Имя из листинга, не являющееся единственным
сегментом пути, таким образом разрешалось вне опрашиваемого каталога для извлечения и, при delete/move/preMove/
moveFailed/readLock=rename, для удаления или переименования.
Этот репродуктор предназначен только для автора — см. ниже — и является аналогом для Azure-Files запускаемых CVE-2026-79983 (
camel-ftp) и CVE-2026-79984 (camel-mina-sftp), которые демонстрируют идентичную первопричину и исправление от начала до конца против встроенного вредоносного сервера.
Таким образом, этот репозиторий содержит точную конфигурацию затронутого consumer (реальный маршрут
camel-azure-files, см. AzureFilesRoute.java / AzureFilesRoutes.java), документирует механизм и исправление, а
запускаемую сквозную демонстрацию оставляет репродукторам для FTP и SFTP, указанным выше.
| Среда выполнения | Каталог | Стек |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-azure-files 4.22.0 (затронута; исправлено в 4.22.1) |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.29.0 + camel-quarkus-azure-files 3.29.0 (Camel 4.15.0, затронута) |
Оба модуля компилируются и запускаются без учётных данных Azure (маршрут определён с autoStartup=false). Установите
-Daz.enabled=true с az.account/az.share/az.sharedKey, чтобы направить точный затронутый маршрут на ваш
собственный Azure File share.
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-azure-files (схема azure-files) |
| CWE | CWE-22 (Некорректное ограничение пути к каталогу) |
| Критичность | HIGH |
| Вектор атаки | Имя в листинге общего ресурса (предоставляемое сервером), не являющееся одним сегментом пути |
| Воздействие | Чтение — а при delete/move/readLock=rename также удаление или переименование — файлов за пределами опрашиваемого каталога с использованием учётных данных эндпоинта |
| Затронутые версии | С 4.0.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-79986.html
Потребитель azure-files теперь применяет ту же проверку нахождения в каталоге, что и другие потребители удалённых файлов: разрешённый путь, выходящий за пределы опрашиваемого каталога, пропускается с предупреждением, поэтому имя из листинга, содержащее сегменты обхода, больше не достигает операнда retrieve/delete/rename.
Ограничьте потребитель с помощью filter/antInclude/include, чтобы принимать только имена из одного сегмента, и избегайте delete/move/preMove/moveFailed/readLock=rename для общих ресурсов, листинги которых не являются полностью доверенными.
Этот репозиторий публикуется в образовательных и защитных целях: чтобы помочь пользователям Apache Camel понять уязвимость, проверить, затронуты ли они, и убедиться, что обновление её устраняет. Не используйте этот материал против систем, которыми вы не владеете и не управляете.