直接回答:SSRF 是攻击者诱导服务端发起请求——应用把用户给的 URL 拿去抓取(头像外链、webhook、PDF 生成),攻击者把 URL 指向内网。云环境放大危害的关键是元数据服务:169.254.169.254 这个链路本地地址能拿到实例的临时 IAM 凭证(IMDS),一次 SSRF 等于直接交出云账号权限,进而横向移动。内网管理端口、Redis、K8s API 同理暴露。
展开解析:防御要分层且默认 deny。网络层:抓取流量走专用出口代理,安全组禁止业务实例访问元数据端点,或强制 IMDSv2(要求 PUT 取 token 再加会话头,普通 SSRF 打不出 PUT)。应用层:URL 白名单优于黑名单——限制协议仅 http/https、解析域名后校验 IP 不在内网/保留段,且校验后不能再解析(DNS rebinding 攻击:第一次解析返回公网、第二次返回内网);禁用重定向跟随或重定向后重新校验。黑名单之所以不可靠:IP 有十进制、十六进制、IPv6 映射等无数写法,0、2130706433 都是 127.0.0.1。响应侧做大小与时间限制,慢响应攻击也顺手防掉。
追问方向:IMDSv2 的会话机制如何挡 SSRF?DNS rebinding 的完整过程?云函数场景的 SSRF 有何不同?
(约 440 字)