企业上云的新攻击面分析与防御指南
一、前言
云安全包含两大方面:
- 云平台自身的安全
- 云上租户的安全
本文重点探讨企业上云后面临的新攻击面,主要分为三大类:
- 云服务漏洞
- 错误的云配置
- 高风险的云特性
二、云安全责任共担模型
不同云服务类型的安全责任边界不同:
- IaaS:从操作系统开始由租户负责
- PaaS:云平台负责底层基础设施和平台
- SaaS:云平台负责大部分安全责任
实际安全责任边界存在模糊地带,需要特别注意。
三、云服务漏洞
3.1 跨租户漏洞
3.1.1 租户资源实例隔离缺陷
隔离方案与打破隔离所需能力:
- 物理隔离:需要物理访问能力
- 虚拟化隔离:需要虚拟机逃逸能力
- 容器隔离:需要容器逃逸能力
- 命名空间隔离:需要命名空间逃逸能力
- 应用隔离:需要应用层漏洞
典型案例:
- Azure PostgreSQL:通过数据库提权+容器逃逸实现跨租户访问(无网络隔离)
- GCP PostgreSQL:同样技术但无法跨租户(有VM和网络隔离)
3.1.2 云服务管理面失陷
典型案例:
-
ChaosDB(Azure Cosmos DB):
- 接管底层集群,访问任意租户数据库
- 通过Jupyter功能漏洞实现
-
I Own your Cloud Shell:
- 控制K8s集群接管任意租户的CloudShell
3.1.3 云服务内部账号凭据泄露
典型案例:
-
Superglue(AWS Glue):
- 获取服务内部账号凭据
- 可代入任意租户授权给Glue的角色
-
BreakingFormation(AWS CloudFormation):
- 类似Superglue,获取服务内部账号凭据
-
Cataclysms in the Cloud Formations:
- 通过Lambda表达式获取内部凭据
- 创建EventBridge规则获取租户凭据
3.1.4 跨租户越权访问
典型案例:
-
AttachMe(Oracle Cloud):
- 跨租户挂载任意存储卷
- 未校验租户对卷的权限
-
AWS AppSync混淆代理人漏洞:
- 未校验RoleArn属主
- 跨租户访问数据
3.1.5 云服务引入的供应链攻击
典型案例:
-
ECR Public漏洞:
- 通过未公开API操作公有库镜像
- 可删除或注入恶意代码
-
CloudImposer(GCP):
- 依赖混淆攻击
- 在GCP内部服务器执行命令
3.2 非跨租户漏洞
3.2.1 资源实例内的漏洞
典型案例:
-
Azure Function逃逸:
- 文件覆盖漏洞提权
- 容器逃逸到宿主机
-
FabricScape(Azure Service Fabric):
- 从容器接管整个集群
3.2.2 Agent漏洞
典型案例:
-
AWS SSM Agent本地提权:
- 条件竞争修改sudoers文件
-
OMIGOD(Azure OMI Agent):
- 认证绕过获取root权限
- 可远程利用(当开放外部访问时)
3.2.3 各类oneclick漏洞
典型案例:
- GCP Cloud Shell init.py执行:
- 通过恶意GitHub项目触发Python包导入
- 执行任意命令
四、高风险的云特性
4.1 云服务角色引入的提权路径
典型案例:
-
AWS CodeStar:
- CreateProjectFromTemplate权限即可获取高权限
- 默认有50+服务完全访问权限
-
Azure Function Apps:
- Reader权限即可提权至完全控制
-
ConfusedFunction(GCP Cloud Functions):
- 创建权限即可获取Cloud Build权限
4.2 利用云平台内部IP打破网络隔离
攻击方法:
- 通过API网关等服务的VPC内网域名
- 访问云平台大内网(100.x.x.x)
- 使不出网的机器回连
4.3 隐式API
常见隐式API:
-
IMDS(实例元数据服务):
- AWS/Azure/华为云:169.254.169.254
- GCP:metadata.google.internal
- 阿里云:100.100.100.200
- 腾讯云:metadata.tencentyun.com
-
Azure WireServer:168.63.129.16
-
任务元数据服务:169.254.170.2
4.4 共享父域引入的风险
风险类型:
- 往父域写cookie
- 读父域cookie
- 域名校验绕过
典型案例:
- GCP Jupyter Notebooks:
- 通过cookie tossing实现CSRF
- 结合扩展安装实现RCE
4.5 云凭据即运维系统
云凭据的特殊性:
- 默认可从公网调用API
- 在资源实例中广泛存在
- 结合公开API产生多种利用手段
4.6 可将攻击技术应用于云服务
连锁反应:
- 云服务A漏洞 → 影响使用A的云服务B → 影响使用B的租户
五、错误的云配置
5.1 对象存储使用不当
常见错误:
- 基于资源的权限控制策略配置不当
- 将AKSK、STS直接返回前端
- 存储桶抢注
- 桶文件解析导致的XSS
- 临时共享连接路径校验不当
典型案例:
- AWS影子S3存储桶抢注:
- 跨region抢注同名桶
- 导致数据泄露或篡改
5.2 AWS Cognito配置不当
错误配置场景:
- 未设置Condition
- Condition仅将amr设置为unauthenticated
- Condition仅将amr设置为authenticated
典型案例:
- AWS Amplify IAM role公开可承担:
- 删除身份验证组件后遗留不安全配置
- 允许任意Cognito身份池承担角色
六、防御建议
对云厂商的建议:
- 增强资源实例隔离边界防护
- 云服务角色权限最小化
- 审视软件云服务化保留的高风险功能
- 默认安全的实例配置
- 增强IAM能力,支持更细粒度管控
- 针对高风险特性推出缓解措施(如IMDSv2)
对租户的建议:
- 建立云凭据的安全使用规范和监控机制
- 熟悉云服务,识别高风险配置
- 业务设计考虑云上安全风险(如SSRF防护包含IMDS)
- 定期审视IAM用户和角色授权
- 敏感数据加密存储,解密物料分离
- 及时跟进云平台安全资讯
七、总结
企业上云后面临的新攻击面主要来自三个方面:云服务漏洞、错误配置和高风险特性。云环境的共享特性和自动化管理机制在带来便利的同时,也引入了传统IDC环境中不存在的安全风险。租户需要充分理解云安全责任共担模型,针对性地加强云环境的安全防护,特别是对云凭据的管理和云服务配置的审查。
通过分析各类公开漏洞案例,我们可以总结出云环境攻击的一些共性模式,并据此制定有效的防御策略。云安全是一个持续演进的过程,需要云厂商和租户共同努力,才能构建更安全的云上环境。