CVE-2026-66906 in Camel
Сводка
по VulDB • 24.08.2026
Уязвимость относительного обхода пути (Relative Path Traversal) в компоненте Apache Camel Azure Storage Blob.
Эта проблема затрагивает Apache Camel: начиная с версии 4.0.0 до 4.14.9, начиная с 4.15.0 до 4.18.4, начиная с 4.19.0 до 4.22.0.
Компонент camel-azure-storage-blob может загружать блок Azure Storage Blob на локальную файловую систему через операцию downloadBlobToFile, записывая данные в каталог, имя которого задается параметром конечной точки fileDir (документировано как доступный для использования как производителем, так и потребителем). Метод BlobOperations.downloadBlobToFile формировал локальный целевой путь путем объединения fileDir с именем удаленного блока точно в том виде, в котором его указывало Azure SDK (new File(fileDir, client.getBlobName())), и передавал результат напрямую в вызов загрузки SDK без лексической нормализации и без проверки того, что разрешенное местоположение остается внутри каталога fileDir. Имя блока не является данными, контролируемыми маршрутом: потребитель перечисляет контейнер в методе BlobConsumer.createBatchExchangesFromContainer, который выводит список блоков и создает один обмен (exchange) для каждой записи на основе имени из BlobItem.getName() дословно, без применения фильтрации имен по умолчанию. Следовательно, имя блока, содержащее сегменты родительских каталогов (например, "../"), разрешается в местоположение за пределами настроенного fileDir, что позволяет любому лицу, способному повлиять на имена блоков в потребляемом контейнере, заставить Camel создавать или перезаписывать файл по выбранному им пути с привилегиями процесса Camel. В зависимости от того, к каким ресурсам может обращаться процесс, перезапись файла вне директории загрузки может привести к последствиям, выходящим за рамки простой потери целостности этого файла. Контейнеры блоков Azure Storage используют плоское пространство имен, в котором имя блока является непрозрачным ключом, поэтому имя с такими сегментами сохраняется и отображается именно так, как оно задано. Параметр fileDir является обычным параметром конфигурации общей группы и не имеет маркеров безопасности, поэтому пользователям не сигнализировалось о том, что его значение не используется в качестве границы изоляции (containment boundary). Другие потребители загрузки файлов Camel — camel-file, camel-ftp, camel-smb, camel-mina-sftp и camel-azure-files — уже ограничивали локальные загрузки настроенным каталогом с помощью проверки границ сегментов пути; путь скачивания в camel-azure-storage-blob не был охвачен этой работой.
Пользователям рекомендуется обновиться до версии 4.22.0, которая устраняет проблему. Если пользователи используют ветку релизов LTS 4.14.x, им предлагается перейти на версию 4.14.9. Если пользователи находятся в ветке релизов 4.18.x, им следует обновиться до версии 4.18.4. Для развертываний, которые не могут немедленно выполнить обновление, рекомендуется ограничить имена блоков, с которыми будет работать потребитель, используя параметр конечной точки regex (регулярное выражение), который применяется к каждому выведенному имени блока как полное совпадение строки; таким образом принимаются только простые односегментные имена, а любые имена, содержащие разделитель пути или сегмент родительского каталога, фильтруются до создания обмена. Параметр prefix может дополнительно сузить список на стороне сервера, при этом следует учитывать, что если установлены оба параметра (regex и prefix), то приоритет имеет regex, а prefix игнорируется. В качестве альтернативы избегайте использования операции downloadBlobToFile для ненадежных контейнеров и записывайте полезную нагрузку из маршрута под именем файла, которое контролирует сам маршрут, а не имя, взятое из удаленного списка. Для защиты в глубину (defense in depth) следует рассматривать имена блоков в любом внешнем доступном для записи контейнере как недоверенный ввод и не выводить на их основе пути локальной файловой системы.
If you want to get best quality of vulnerability data, you may have to visit VulDB.