CVE-2026-66906
Apache Camel:Camel-Azure-Storage-Blob:downloadBlobToFile 操作根据远程 blob 名称构建本地下载目标,而未将其约束到所配置的 fileDir
- 已发布
- 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:H/A:N低 · 未来 30 天
- 百分位
- 54.9%
- 型号日期
- 2026年10月15日
EPSS 是统计估计,而不是确定性或影响衡量标准。将其与 CVSS、KEV 状态、暴露程度和您的环境相结合。
总结
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 组件可通过其 downloadBlobToFile 操作将 Azure Storage blob 下载到本地文件系统,写入由 fileDir 端点选项指定的目录,该选项的文档说明其可从生产者和消费者两侧使用。BlobOperations.downloadBlobToFile 通过将 fileDir 与远程 blob 名称按 Azure SDK 报告的原始形式拼接来构建本地目标(new File(fileDir, client.getBlobName())),并将结果直接传递给 SDK 下载调用,既没有进行词法规范化,也没有检查解析后的位置是否仍位于 fileDir 之内。blob 名称不是由路由控制的数据:消费者在 BlobConsumer.createBatchExchangesFromContainer 中枚举容器,该操作列出 blob,并按 BlobItem.getName() 返回的原始名称逐条创建交换,默认不应用任何名称过滤。因此,包含父目录段的 blob 名称会解析到配置的 fileDir 之外的位置,使得任何能够影响所消费容器中名称的人都能促使 Camel 以 Camel 进程的权限在其选择的位置创建或覆盖文件。根据进程可写入的内容,覆盖下载目录之外的文件所造成的影响可能不仅限于该文件完整性的丧失,还可能进一步升级。Azure Storage blob 容器使用扁平命名空间,其中 blob 名称是不透明键,因此带有此类段的名称会按原样存储和列出。fileDir 选项是普通的 common 组配置参数,不带有安全标记,因此没有任何信息向用户提示该值并未被强制执行作为隔离边界。Camel 的其它文件下载消费者——camel-file、camel-ftp、camel-smb、camel-mina-sftp 和 camel-azure-files——已通过路径段边界检查将其本地下载限制在配置的目录内;camel-azure-storage-blob 的下载路径未被该工作覆盖。建议用户升级到修复了该问题的 4.22.0 版本。如果用户处于 4.14.x LTS 发布流,建议升级到 4.14.9。如果用户处于 4.18.x 发布流,建议升级到 4.18.4。对于无法立即升级的部署,请使用 regex 端点选项限制消费者将处理的名称,该选项会对每个列出的 blob 名称进行全字符串匹配,从而只接受简单的单段名称,并在创建交换之前过滤掉任何带有路径分隔符或父目录段的名称;prefix 选项还可以在服务端进一步缩小列出的范围,但请注意当两者同时设置时,regex 优先,prefix 会被忽略。或者,避免对不受信任的容器使用 downloadBlobToFile 操作,而是从路由中以路由自身控制的文件名写入负载,而不是使用从远程列表中取得的名称。作为纵深防御,将任何外部可写容器中的 blob 名称视为不受信任的输入,不要从它们派生本地文件系统路径。
来源
Apache Camel camel-azure-storage-blob 路径遍历漏洞(CVE-2026-66906)的概念验证复现器,演示通过 blob 名称遍历实现任意文件写入,并包含受影响版本与已修复版本详情。
负责任的使用
仅在您拥有或有权测试的系统上使用漏洞信息。 Kitploit 链接到公共研究元数据,并且不存储漏洞代码或恶意负载。