Kubernetes 安全风险揭示:Kubelet API 的利用分析 - Aqua Security
Kubelet API 的安全风险与利用分析
Kubelet API 是 Kubernetes 集群中的核心组件,运行在每个节点上,作为主要代理负责管理 Pods 及其容器。它通过与 Kubernetes 控制平面通信,确保容器按预期运行。默认情况下,Kubelet API 不对互联网开放,仅作为内部未记录的 API 使用。然而,某些情况下,DevOps 团队可能会直接利用 Kubelet API 调试节点,绕过控制平面直接与节点通信。
如何直接与 Kubelet API 通信
要直接与 Kubelet API 进行通信,需要进行以下配置:
1. 配置 Kubelet 选项
修改 Kubelet 的启动选项,允许匿名和未经身份验证的访问。以下是相关标志的说明:
--anonymous-auth=true:允许未通过其他身份验证方法的请求被视为匿名请求。--authentication-mode=anonymous:将身份验证模式设置为匿名,绕过其他身份验证检查。
2. 禁用授权
通过以下标志禁用授权:
--authorization-mode=AlwaysAllow:允许所有请求,无需执行任何授权检查。
3. 网络配置
确保 Kubelet 可以从指定网络访问。这可能需要设置网络规则或修改防火墙,以允许访问默认的 Kubelet API 端口(10250)。
安全风险
当 Kubelet API 暴露在公共互联网上时,可能带来以下安全威胁:
- 未经授权的访问
- 潜在的漏洞利用
- 数据泄露
野外攻击技术分析
在实际环境中,Kubelet API 的错误配置可能被攻击者利用,以下是常见的攻击方式及技术分析:
环境发现与修改
攻击者可能通过蜜罐发送命令,尝试发现节点环境并进行修改。以下是常见的命令:
- 使用 shell(如 bash、zsh)完成代码。
- 执行基本 Linux 命令,列出目录、当前用户及其组、正在运行的进程等。
网络发现
攻击者可能使用工具(如 [curl](https://www.explinks.com/wiki/what-are-curl-url-uri/) 和 zmap)扫描 Kubernetes 集群的网络,删除默认配置以扩大扫描范围。以下是常见的命令:
ip a:显示所有网络接口和 IP 地址。ip -o -4 addr show dev eth0 scope global:获取主网络接口的 IPv4 地址信息。iptables和ip6tables:配置和修改防火墙规则。
内部网络扫描
调整网络规则后,攻击者可能利用工具(如 zmap 或 nmap)扫描内部网络,目标范围通常为 172.20.0.1/16,以发现内部服务。
机密数据收集
攻击者可能尝试从节点上的不同位置收集机密信息,例如:
- 提取 ServiceAccount 令牌。
- 检查文件空间使用率。
- 查找配置文件和令牌。
恶意载荷投放分析
通过利用 Kubelet API,攻击者可以运行新容器并执行恶意脚本。例如:
- 下载并执行恶意脚本(如 f593)。
- 使用脚本(如 f401 和 f402)下载并运行加密矿工。
TeamTNT 活动
TeamTNT 自 2021 年起开始针对 Kubernetes 集群进行攻击,其活动包括:
- 扫描 Kubelet API 的默认端口(10250)。
- 利用错误配置的 Kubelet API 执行命令。
- 在被利用的容器上运行代码并投放加密矿工。
暴露的 Kubelet API 统计
通过 Shodan 搜索发现,互联网连接的 Kubelet API 数量持续增长:
- 2021 年:约 103,000 个暴露的 Kubelet API。
- 2022 年:约 243,000 个暴露的 Kubelet API。
- 近期:约 287,000 个暴露的 Kubelet API,其中 27% 可被利用。
风险缓解措施
为了降低 Kubelet API 的安全风险,建议采取以下措施:
1. 限制访问
确保 Kubelet API 不允许匿名和未经身份验证的请求,并且不暴露在公共互联网上。使用网络策略和防火墙限制访问。
2. 实施身份验证和授权
配置强大的身份验证和权限机制,严格控制 API 的访问权限。
3. 持续监控和审计
监控和审计 Kubelet API 的访问日志,检测可疑活动。可使用如 Tracee 等工具应对潜在威胁。
4. 定期更新安全补丁
保持 Kubernetes 及其组件的最新安全补丁,防范已知漏洞。
5. 遵循最小权限原则
确保用户和服务仅拥有完成任务所需的最小权限。
6. 自动化安全管理
使用 Kubernetes 姿态管理工具(KSPM),持续监控和维护集群的安全配置。
总结
Kubelet API 是 Kubernetes 集群中至关重要的组件,但其错误配置可能导致严重的安全风险。通过限制访问、加强身份验证与授权、持续监控以及定期更新安全补丁,可以有效降低风险。此外,利用自动化工具进行安全管理也是保障 Kubernetes 集群安全的重要手段。
原文链接: https://www.aquasec.com/blog/kubernetes-exposed-exploiting-the-kubelet-api/
最新文章
- 通过 SEO rank API 获取百度关键词排名
- 音乐情绪可视化:Cyanite.ai 音乐情感分析API如何帮助我们理解音乐
- 从Flask到FastAPI的平滑迁移
- 什么是 API 即服务?
- 5大API故障原因可能正在干扰您的集成工作
- 如何获取Perplexity AI API Key 密钥(分步指南)
- 轻松翻译网页内容:Python 实现 kimi网页版 翻译功能
- 身份证OCR识别API在Java、Python、PHP中的使用教程
- 精通.NET Web API:构建强大API的最佳实践
- Flask、FastAPI 与 Django 框架比较:Python Web 应用开发教程
- 十大 API 安全供应商
- REST API接口命名的最佳实践