CVE-2026-66907
Apache Camel:Camel-Google-Storage:消费者将远程对象名称附加到配置的 downloadFileName 目录,而未对结果进行约束
- 已发布
- 2026年8月24日
- 已更新
- 2026年8月25日
- 分配 CNA
- apache
- 观察到的证据
- 2026年8月24日
初级CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N低 · 未来 30 天
- 百分位
- 46.1%
- 型号日期
- 2026年9月21日
EPSS 是统计估计,而不是确定性或影响衡量标准。将其与 CVSS、KEV 状态、暴露程度和您的环境相结合。
总结
Apache Camel Google Storage 组件中的相对路径遍历漏洞。该问题影响 Apache Camel:4.0.0 至 4.14.9 之前的版本、4.15.0 至 4.18.4 之前的版本、4.19.0 至 4.22.0 之前的版本。当设置了 downloadFileName 选项时,camel-google-storage 消费者会将 Google Cloud Storage 对象下载到本地文件系统。该选项在文档中被描述为文件夹或文件名,当其值不包含表达式标记时,消费者通过将对象名称附加到该值来构建本地目标路径:evaluateFileExpression 将 Exchange 的 file-name 头设置为远程对象名称,并计算 downloadFileName + "/${file:name}"。与对值应用 FileUtil.stripPath 的 ${file:onlyname} 不同,${file:name} 标记会原样返回 file-name 头。结果字符串被直接传递给 new File(result) 和 blob.downloadTo(file.toPath()),没有进行词法规范化,也没有检查目标路径是否保持在配置的目录内。对象名称并非路由控制的数据:消费者列出存储桶,遍历返回的每个 blob,并原样使用 blob.getBlobId().getName() 为每个对象创建一个 exchange,而本可限制这些名称的 filter 选项除非被显式设置,否则根本不会被应用。Google Cloud Storage 对象名称是不透明的 UTF-8 键,服务会完全按照写入原样存储和列出它们,不做任何服务端规范化;正斜杠只是伪目录的显示约定,因此包含父目录段的键在往返过程中会原样保留。因此,包含此类段的对象名称会被解析到配置的 downloadFileName 目录之外的位置,使任何能够影响所消费存储桶中对象名称的人,都能以 Camel 进程的权限让 Camel 在他们选择的位置创建或覆盖文件。根据该进程可写入的内容,覆盖下载目录之外的文件可能造成比该文件完整性丧失更严重的后果。downloadFileName 选项是普通消费者参数,不带任何安全标记,因此没有任何信号向用户表明其值并未被作为约束边界强制执行。该缺陷仅存在于消费者端;生产者没有下载到文件的汇点(sink)。Camel 的其他文件下载消费者——camel-file、camel-ftp、camel-smb、camel-mina-sftp、camel-azure-files 以及 Azure Storage 下载路径——已经通过路径段边界检查将本地下载限制在配置的目录内;camel-google-storage 是该项工作尚未覆盖的剩余对象存储下载汇点。建议用户升级到修复了该问题的 4.22.0 版本。如果用户使用 4.14.x LTS 发布流,建议升级到 4.14.9。如果用户使用 4.18.x 发布流,建议升级到 4.18.4。对于无法立即升级的部署,可将 filter 选项设置为仅接受简单单段对象名称的正则表达式,以便在创建 exchange 之前排除任何包含路径分隔符或父目录段的名称;请注意,当该选项未设置时不会应用任何过滤,且表达式是针对整个对象名称进行匹配的。或者,为 downloadFileName 提供一个不传递远程路径的显式表达式,例如基于 ${file:onlyname} 而非隐式 ${file:name} 构建的表达式;请记住,包含表达式的 downloadFileName 被视为由路由作者控制,不受修复中新增的约束检查覆盖。作为纵深防御,请将任何外部可写存储桶中的对象名称视为不受信任的输入,不要从它们推导本地文件系统路径。
来源
1Apache Camel camel-google-storage 路径遍历漏洞(CVE-2026-66907)的概念验证复现工具,演示了通过 downloadFileName 实现任意文件写入,并包含受影响版本和已修复版本的详细信息。
负责任的使用
仅在您拥有或有权测试的系统上使用漏洞信息。 Kitploit 链接到公共研究元数据,并且不存储漏洞代码或恶意负载。