云原生攻防启示:行业领先解决方案的秘诀!
字数 2141 2025-08-10 08:28:09

云原生安全攻防教学文档

1. 云原生安全概述

云原生安全是一种综合性的安全理念和实践,确保在云环境中构建、部署和运行应用程序时的安全性。随着企业越来越多地采用云计算和容器化技术,云原生安全变得至关重要,以保护云基础设施、应用程序和数据免受各种威胁和攻击。

1.1 4C云原生安全分层模型

公认的云原生安全分为4个方面:

  1. 云(Cloud):云平台层面的安全
  2. 集群(Cluster):Kubernetes等编排系统的安全
  3. 容器(Container):容器运行时的安全
  4. 代码(Code):应用程序代码的安全

这种分层方法增强了深度防护能力,是保护软件系统的最佳实践。

2. 云(Cloud)层安全

2.1 云平台安全风险

  1. 身份和访问管理漏洞
  2. API滥用和未经授权访问
  3. 云产品信任关系滥用:如OOS、云服务器、VPC等信任关系
  4. API密钥泄露:如AK/SK的利用
  5. 云平台元数据滥用
  6. 身份冒用

2.2 云上身份管理

云上身份指的是在云计算环境中管理和控制用户、系统或服务访问资源的方式,涉及:

  • 身份验证:确认谁可以访问资源
  • 授权:定义访问权限
  • 访问管理:监控和控制权限使用

2.2.1 基于身份的控制策略

通过策略授权来界定用户能够访问的资源和操作,附加到IAM用户、组或角色。

策略配置示例:

{
  "Effect": "Allow",
  "Resource": "arn:aws:s3::bucket",
  "IpAddress": {"aws:SourceIp": "192.168.1.6"}
}

2.2.2 基于资源的控制策略

关注资源本身的安全性和访问规则,定义:

  • 哪些资源可以被访问
  • 何时可以访问
  • 如何访问
  • 访问时所需的权限

策略配置示例:

{
  "Effect": "Allow",
  "Resource": "arn:aws:s3::bucket",
  "Condition": {"StringEquals": {"s3:x-amz-acl": ["public-read"]}}
}

2.3 云上身份攻击手法

2.3.1 基于资源的策略攻击思路

  1. 如果权限细化非常严格,优先攻击敏感角色
  2. 权限过高则将目标放在资源上
  3. 即使账户无权限,仍可对配置基于资源的策略对象进行操作

攻击步骤:

  1. 获取身份后,深入分析其身份策略和可执行操作
  2. 审计环境中可能存在的资源预置权限信任关系
  3. 了解账户在云平台上的各种业务(S3、云服务、VPC、CDN等)

2.3.2 IMDS(Instance Metadata Service)攻击利用

IMDS为云虚拟机实例提供元数据服务,包括:

  • Meta-data:服务器实例ID、网络ID等信息
  • User-data:首次启动或重启时的配置操作

攻击利用方式:

  1. 提权
  2. 敏感信息收集
  3. 横向移动
  4. 访问资源
  5. 获取硬编码凭据
  6. 利用root权限运行的脚本

2.3.3 AK/SK利用防护绕过

绕过方法:

  1. 新启服务器实例(已失效)
  2. 利用云函数发起请求
  3. 在VPC中建立隔离网络进行请求

3. 集群(Cluster)层安全

3.1 Kubernetes常见攻击手法

  1. 多租户隔离漏洞
  2. Secrets对象滥用
  3. 服务间未授权访问
  4. APIServer未授权访问
  5. K8s自身漏洞
  6. 错误配置

3.2 从K8s到Cloud的攻击扩展

获取Pod控制权后可能具有的权限:

  1. 获取仓库和镜像信息
  2. 获取漏洞扫描结果
  3. 获取卷和存储信息
  4. 获取网络信息

可执行的攻击:

  1. 下载所有私有仓库镜像
  2. 查看所有镜像漏洞扫描结果
  3. 测绘网络拓扑
  4. 创建/修改/删除网络接口
  5. 修改安全组

3.2.1 真实攻击案例

通过Confluence RCE漏洞获取Pod控制权:

  1. 获取提权节点的token
  2. 下载私有仓库镜像
  3. 发现硬编码的Jenkins凭据
  4. 测绘网络拓扑发现Jenkins位置
  5. 修改VPC和安全组绕过VPN限制
  6. 控制Jenkins并登录其他受限服务器

3.2.2 API滥用提权(Azure示例)

常用请求凭据的API:

  1. listClusterUserCredential:返回user的token和证书(具有本地system权限)
  2. listClusterMonitoringUserCredential:返回管理员凭据
  3. listClusterAdminCredential:返回管理员的token和证书(具有本地system权限)
  4. listCredential

3.2.3 绕过私有集群限制

方法:

  1. 利用RunCommand API:
    • 提供互联网访问私有集群的能力
    • 默认在所有集群中启用
    • 执行命令的Pod默认以集群管理员形式启动
    • 获取权限后可控制整个集群

3.2.4 "Say admin without saying admin"攻击

发现某些账户(如AKS-services role)虽非管理员但具有管理员级别权限,可控制整个集群。

4. 容器(Container)和代码(Code)层安全

4.1 常见攻击手法

  1. 镜像漏洞
  2. 容器逃逸
  3. 内核漏洞
  4. 错误配置
  5. 应用程序漏洞(Code层)

5. 攻防启示

  1. 云原生快速发展对攻防双方都是巨大挑战
  2. 攻击者需面对庞大复杂的云原生体系
  3. 防御者需了解攻击策略以构建强防御
  4. 云原生安全不是黑匣子,理解攻击方式是防御的第一步

6. 防御建议

  1. 实施最小权限原则:严格控制身份和资源访问权限
  2. 定期审计权限:包括自身账户权限和所有业务权限
  3. 保护敏感凭据:如AK/SK、IMDS数据等
  4. 监控异常行为:如异常API调用、跨地域请求等
  5. 及时修补漏洞:关注云平台、K8s、容器和应用程序漏洞
  6. 配置安全检查:避免错误配置导致的安全风险
  7. 实施网络分段:使用VPC等机制隔离敏感资源
  8. 启用多因素认证:增强身份验证安全性
云原生安全攻防教学文档 1. 云原生安全概述 云原生安全是一种综合性的安全理念和实践,确保在云环境中构建、部署和运行应用程序时的安全性。随着企业越来越多地采用云计算和容器化技术,云原生安全变得至关重要,以保护云基础设施、应用程序和数据免受各种威胁和攻击。 1.1 4C云原生安全分层模型 公认的云原生安全分为4个方面: 云(Cloud) :云平台层面的安全 集群(Cluster) :Kubernetes等编排系统的安全 容器(Container) :容器运行时的安全 代码(Code) :应用程序代码的安全 这种分层方法增强了深度防护能力,是保护软件系统的最佳实践。 2. 云(Cloud)层安全 2.1 云平台安全风险 身份和访问管理漏洞 API滥用和未经授权访问 云产品信任关系滥用 :如OOS、云服务器、VPC等信任关系 API密钥泄露 :如AK/SK的利用 云平台元数据滥用 身份冒用 2.2 云上身份管理 云上身份指的是在云计算环境中管理和控制用户、系统或服务访问资源的方式,涉及: 身份验证:确认谁可以访问资源 授权:定义访问权限 访问管理:监控和控制权限使用 2.2.1 基于身份的控制策略 通过策略授权来界定用户能够访问的资源和操作,附加到IAM用户、组或角色。 策略配置示例: 2.2.2 基于资源的控制策略 关注资源本身的安全性和访问规则,定义: 哪些资源可以被访问 何时可以访问 如何访问 访问时所需的权限 策略配置示例: 2.3 云上身份攻击手法 2.3.1 基于资源的策略攻击思路 如果权限细化非常严格,优先攻击敏感角色 权限过高则将目标放在资源上 即使账户无权限,仍可对配置基于资源的策略对象进行操作 攻击步骤: 获取身份后,深入分析其身份策略和可执行操作 审计环境中可能存在的资源预置权限信任关系 了解账户在云平台上的各种业务(S3、云服务、VPC、CDN等) 2.3.2 IMDS(Instance Metadata Service)攻击利用 IMDS为云虚拟机实例提供元数据服务,包括: Meta-data:服务器实例ID、网络ID等信息 User-data:首次启动或重启时的配置操作 攻击利用方式: 提权 敏感信息收集 横向移动 访问资源 获取硬编码凭据 利用root权限运行的脚本 2.3.3 AK/SK利用防护绕过 绕过方法: 新启服务器实例(已失效) 利用云函数发起请求 在VPC中建立隔离网络进行请求 3. 集群(Cluster)层安全 3.1 Kubernetes常见攻击手法 多租户隔离漏洞 Secrets对象滥用 服务间未授权访问 APIServer未授权访问 K8s自身漏洞 错误配置 3.2 从K8s到Cloud的攻击扩展 获取Pod控制权后可能具有的权限: 获取仓库和镜像信息 获取漏洞扫描结果 获取卷和存储信息 获取网络信息 可执行的攻击: 下载所有私有仓库镜像 查看所有镜像漏洞扫描结果 测绘网络拓扑 创建/修改/删除网络接口 修改安全组 3.2.1 真实攻击案例 通过Confluence RCE漏洞获取Pod控制权: 获取提权节点的token 下载私有仓库镜像 发现硬编码的Jenkins凭据 测绘网络拓扑发现Jenkins位置 修改VPC和安全组绕过VPN限制 控制Jenkins并登录其他受限服务器 3.2.2 API滥用提权(Azure示例) 常用请求凭据的API: listClusterUserCredential :返回user的token和证书(具有本地system权限) listClusterMonitoringUserCredential :返回管理员凭据 listClusterAdminCredential :返回管理员的token和证书(具有本地system权限) listCredential 3.2.3 绕过私有集群限制 方法: 利用 RunCommand API: 提供互联网访问私有集群的能力 默认在所有集群中启用 执行命令的Pod默认以集群管理员形式启动 获取权限后可控制整个集群 3.2.4 "Say admin without saying admin"攻击 发现某些账户(如AKS-services role)虽非管理员但具有管理员级别权限,可控制整个集群。 4. 容器(Container)和代码(Code)层安全 4.1 常见攻击手法 镜像漏洞 容器逃逸 内核漏洞 错误配置 应用程序漏洞(Code层) 5. 攻防启示 云原生快速发展对攻防双方都是巨大挑战 攻击者需面对庞大复杂的云原生体系 防御者需了解攻击策略以构建强防御 云原生安全不是黑匣子,理解攻击方式是防御的第一步 6. 防御建议 实施最小权限原则 :严格控制身份和资源访问权限 定期审计权限 :包括自身账户权限和所有业务权限 保护敏感凭据 :如AK/SK、IMDS数据等 监控异常行为 :如异常API调用、跨地域请求等 及时修补漏洞 :关注云平台、K8s、容器和应用程序漏洞 配置安全检查 :避免错误配置导致的安全风险 实施网络分段 :使用VPC等机制隔离敏感资源 启用多因素认证 :增强身份验证安全性