CVE-2026-79986
Apache Camel:camel-azure-files 在解析被轮询文件的远程路径时,依据的是服务器目录列表中报告的名称,而未将其限制在被轮询的目录内,因此包含路径遍历段的列表条目可能被移动到该目录之外
- 已发布
- 2026年10月19日
- 已更新
- 2026年10月19日
- 分配 CNA
- apache
- 观察到的证据
- 2026年10月17日
初级CVSS
cvelist · CVSS 3.1
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N总结
Apache Camel Azure Files 组件中存在将路径名不当限制在受限目录内的漏洞(“路径遍历”)。此问题影响 Apache Camel:从 4.0.0 到 4.18.5 之前,从 4.19.0 到 4.22.1 之前。Camel 的远程文件消费者会轮询远程服务器上的目录,并通过将配置的目录与服务器目录列表中报告的文件名拼接来构建每个文件的绝对远程路径。该拼接(FtpUtils.absoluteFilePath 和 GenericFileConsumer)未进行任何词法规范化,也未检查结果是否仍位于被轮询的目录内,而生成的路径成为对该文件后续所有远程操作的操作数:检索(FtpOperations.retrieveFile / SftpOperations,从 GenericFileConsumer 到达,其中检索名称逐字取自 GenericFile.getAbsoluteFilePath)、当 delete=true 时删除(GenericFileDeleteProcessStrategy),以及当配置了 move、preMove、moveFailed 或 readLock=rename 时重命名(GenericFileProcessStrategySupport 和 GenericFileRenameExclusiveReadLockStrategy)。isValidFile 和 isMatched 均未执行任何包含性检查。因此,不是单个路径段的列表条目会解析为配置的轮询目录之外的路径,导致 Camel 使用端点自身的凭据读取、删除或重命名其外部的文件。列表名称不是路由控制的数据。它由远程服务器提供,而 FTP 控制通道完全不携带完整性保护,因此路径上的攻击者无需持有任何凭据即可重写 LIST 响应;被攻陷、恶意或多租户的服务器,或由虚拟文件系统支持的服务器,可以直接发出这样的名称。在默认消费者配置中即可实现检索,因为远程消费者会下载每个列出的文件;删除和重命名还额外需要上述处置选项之一,而这些选项都很常见。从 Camel 配置轮询的目录中逃逸是无条件的,而从服务器自身账户边界逃逸还额外取决于该服务器是否限制该账户。jailStartingDirectory 选项被记录为将 Camel 限制在起始目录内,且默认启用,它管理生产者写入,并且自 localWorkDirectory 包含性工作以来,也管理消费者下载到本地工作目录——但它并未约束此远程操作数,因此其名称和描述声称了一个在此处并未强制执行的边界。同一入口点已在本地侧被识别:localWorkDirectory 下载路径受到约束,使得包含父目录段的远程文件名无法解析到本地工作目录之外。远程操作数是该攻击面的剩余一半。此工件提供了 azure-files 方案。其消费者派生自相同的 RemoteFileConsumer 基类,并通过一个简单的拼接辅助函数组合远程路径,因此继承了相同的无约束解析。到达它需要一个不是单个路径段的列表名称,而 Azure Files REST 服务通常不会返回这样的名称;该暴露问题是在与其他远程文件消费者相同的基础上被纠正的,而不是基于针对此方案演示的漏洞利用证明。升级到 Apache Camel 4.23.0,该版本修复了此问题。使用 4.22.x 发布流版本的用户应升级到 4.22.1。使用 4.18.x LTS 发布流版本的用户应升级到 4.18.5。4.14.x 流已达到生命周期终止,不会收到此修复;使用该流的用户应迁移到受支持的发布流。
来源
CVE-2026-79986 的复现程序与分析:Apache Camel camel-azure-files 中的路径遍历漏洞,其中共享列表名称会逃逸出被轮询的目录。
负责任的使用
仅在您拥有或有权测试的系统上使用漏洞信息。 Kitploit 链接到公共研究元数据,并且不存储漏洞代码或恶意负载。