Apache Camel Google Storage组件爆目录穿越漏洞,可越权覆盖文件
Apache Camel Google Storage组件曝出CVE-2026-66907相对路径遍历漏洞,CVSS 7.5。攻击者通过恶意GCS对象名可造成任意文件覆盖。本文分析漏洞原理、影响版本及修复方案,涵盖4.0至4.22受影响分支,提供升级和临时缓解建议。
🔓 High 漏洞利用
Apache Camel Google Storage组件存在相对路径遍历漏洞(CVE-2026-66907,CVSS 7.5)。攻击者通过向受影响的GCS存储桶上传包含父目录段(如../)的恶意对象名,可诱导Camel消费者在下载文件时将目标路径解析到配置目录之外,从而实现任意文件创建或覆盖。该漏洞影响多个版本分支,官方已发布修复版本。
来源:NVD-Latest | 2026-08-24 | 原文链接
🔍 关键发现
- camel-google-storage消费者在downloadFileName选项设置时,未对对象名进行词法规范化或路径边界检查,导致目录穿越。
- 对象名来源于Google Cloud Storage存储桶列表,且filter选项未设置时不生效,外部可控性高。
- 漏洞影响Apache Camel 4.0.0-4.14.8、4.15.0-4.18.3、4.19.0-4.21.x等多个版本分支,需升级至4.14.9、4.18.4或4.22.0。
⚔️ 攻击链分析
1. 攻击者向目标Camel消费者监听的GCS存储桶上传对象名中包含"../"的恶意文件。 2. Camel消费者列出存储桶并遍历对象,使用blob.getBlobId().getName()原样获取对象名。 3. 当downloadFileName设置为目录且无表达式时,消费者拼接downloadFileName + "/" + 对象名,并直接传入new File()。 4. 文件下载操作将内容写入路径穿越后的位置,导致任意文件覆盖或创建。
🚩 失陷指标 (IOC)
无公开IOC,但可关注存储桶中异常对象名(如包含../、%2e%2e/等路径穿越特征)
🛡️ 缓解建议
- ✅ 立即升级Apache Camel到4.22.0(或4.14.9、4.18.4,取决于发行流)。
- ✅ 无法立即升级时,设置filter选项为仅接受单段对象名的正则表达式,排除任何含路径分隔符或父目录段的名称。
- ✅ 使用downloadFileName显式表达式,如${file:onlyname}而非默认的${file:name},避免远程路径被带入。
- ✅ 将外部可写存储桶中的对象名视为不可信输入,切勿直接基于其生成本地文件系统路径,并对下载目录实施最小权限和边界保护。
涉及漏洞:["CVE-2026-66907"]
⚠️ 本文仅供安全研究与学习,IOC 信息请勿用于非法目的。
🤖 常见问题解答(FAQ)
❓ 攻击者需要什么条件才能利用此漏洞?
攻击者必须能够向Camel消费者读取的GCS存储桶上传或写入对象,且消费者配置了downloadFileName选项且未设置filter。
❓ 漏洞影响哪些下载路径?是否影响producer?
仅影响camel-google-storage消费者下载到文件系统时。Producer无此问题,其他Camel文件下载组件已进行路径边界检查。
❓ 4.14.x LTS用户应如何修复?
建议升级到4.14.9。若暂时不能升级,可用正则filter限制对象名仅允许单段,或改用${file:onlyname}表达式避免路径穿越。