CVE-2025-62156Argo Workflows是一个开源的容器原生工作流引擎,用于在Kubernetes上编排并行作业。CVE-2025-62156是Argo Workflows在artifact(工件)解压过程中存在的Zip Slip路径穿越漏洞,CVSS评分为8.1,属于高危级别漏洞。该漏洞存在于3.6.12之前的所有版本以及3.7.0至3.7.2版本中。漏洞位于workflow/executor/executor.go文件的unpack/untar逻辑中,在解压工件时使用filepath.Join(dest, filepath.Clean(header.Name))进行路径拼接,但没有验证header.Name是否始终保持在预期的解压目录内。攻击者可以通过构造恶意的归档文件条目,提供包含路径穿越或绝对路径的条目名,经过filepath.Clean处理后覆盖目标目录,导致文件被写入到容器内的系统目录(如/etc目录)中。该漏洞可使攻击者在容器内实现任意文件创建或覆盖,包括修改/etc/passwd、/etc/hosts、/etc/crontab等关键系统配置文件,从而实现容器内的权限提升或持久化攻击。由于Argo Workflows广泛应用于Kubernetes集群的CI/CD和数据处理流水线中,此漏洞的影响范围较大,可能导致整个集群的安全受到威胁。建议用户尽快升级到3.6.12或3.7.3版本以修复该漏洞。
该漏洞的核心问题在于Argo Workflows的artifact解压逻辑中缺乏对归档条目路径的安全验证。具体技术细节如下:
1. **漏洞位置**:workflow/executor/executor.go文件中的unpack/untar函数(约第993行)。
2. **漏洞原理**:在解压tar归档文件时,代码使用 `filepath.Join(dest, filepath.Clean(header.Name))` 来构建目标文件路径。filepath.Clean函数会处理路径中的'../'等穿越序列,但当header.Name本身就是绝对路径(如'/etc/passwd')或包含足够多的'../'来跳出目标目录时,filepath.Clean会将路径解析到目标目录之外。
3. **利用方式**:攻击者需要能够向Argo Workflows提交恶意的artifact文件。这可以通过以下方式实现:
- 创建一个包含恶意条目的tar归档文件
- 条目名设置为如 '../../../etc/passwd' 或 '/etc/cron.d/malicious' 等路径
- 将该artifact上传到Argo Workflows可以访问的位置(如S3、HTTP服务器等)
- 触发工作流执行artifact下载和解压操作
4. **影响范围**:成功利用后,攻击者可以在容器内的任意目录创建或覆盖文件,包括:
- /etc/passwd:添加新用户或修改现有用户
- /etc/crontab或/etc/cron.d/:添加定时任务实现持久化
- /etc/hosts:进行DNS劫持
- 其他关键配置文件
5. **修复方式**:GitHub commit 5659ad9b641fcf52c04ed594cd6493f9170f6011 和 9f6bc5d236cd1b24d607943384511d71ad17a4c3 添加了路径验证逻辑,确保解压的文件路径始终在目标目录内。