常见漏洞验证121 条

SSRF 与云元数据防护

云上实例的元数据服务是 SSRF 的重点防护对象:启用 IMDSv2、收紧实例角色权限,并在应用层基于解析后的 IP 做目标校验。

SSRF 与云上元数据防护

云主机的实例元数据服务是 SSRF 的重点攻击目标:一旦服务端请求被导向元数据地址,就可能读取到实例角色的临时凭据。防护分三层——实例侧强制启用需要令牌的元数据访问协议,权限侧让实例角色遵循最小权限,应用侧在解析目标地址之后做校验,而不是只匹配字符串。

基本信息

实例侧启用要求令牌的元数据访问协议,禁用无令牌访问
权限侧实例角色遵循最小权限,避免一失全失
应用侧解析目标地址后校验,优先使用白名单
配套限制限定协议、端口与重定向次数
评估边界只核查配置与解析逻辑,不发起指向元数据地址的请求

典型使用场景

  • 核查云主机是否已强制启用需令牌的元数据访问协议
  • 评估实例角色权限是否过大,存在凭据被读取后的风险
  • 审查应用中的地址校验逻辑是否基于解析结果
  • 检查代理与跳转参数是否限制协议与目标范围
  • 为云上资产的 SSRF 防护提供配置级整改建议

校验要点(伪代码)

校验要点(伪代码)
# 解析 URL 得到目标地址(注意重定向后要重新解析)
# 拒绝:回环地址、链路本地地址(含云元数据地址段)
# 按业务需要决定是否拒绝内网私有地址段
# 仅放行:业务必需的外部域名或地址白名单
# 同时限制:协议仅允许 http/https、端口白名单、重定向次数
# 关键:校验必须在解析之后进行,不能只判断字符串

防护层次读法

层次防护动作失效后果
实例侧启用需令牌的元数据访问无令牌访问可被直接读取凭据
权限侧实例角色最小权限凭据一旦泄露可操作大量云资源
应用侧按解析结果校验目标仅字符串黑名单可被多种写法绕过
网络侧出站策略限制限制外联范围,降低内网探测成功率
仅做字符串黑名单不够:十进制、八进制等写法仍可能到达目标地址,必须校验解析后的结果地址。
评估中不要发起指向元数据地址的请求来验证防护:元数据地址返回的凭据一旦获取即构成实际的凭据泄露。

易错点

  • 只在应用层拦截关键字,未限制解析后的实际目标地址
  • 实例角色权限过大,即使校验被绕过损失也被放大
  • 忽略重定向场景,跳转后未重新校验目标地址
  • 为验证防护效果发起指向元数据服务的请求,造成凭据暴露

数据来源与参考

  • AWS IMDSv2 文档(实例元数据服务)
  • OWASP SSRF Prevention Cheat Sheet
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌