Server-Side Request Forgery
服务器端请求伪造
服务器端请求伪造(SSRF)是攻击者控制的输入,让服务器向原本不该访问的内部或外部位置发送请求。
另一个例子
发票工具接受供应商标志 URL。它只解析一次,只允许批准供应商的 HTTPS 主机,并拒绝解析后落在私有、回环、链路本地或元数据网段的地址。它也会禁用重定向、限制数据量和时间、通过出口代理获取,并阻止 `http://169.254.169.254`。
主要部分
- 01攻击者可影响 URL
- 02服务器端获取能力
- 03目标与出口控制
什么时候用
每个会获取用户可影响 URL 的服务器功能,都要进行威胁分析。必须强制目标允许列表、网络出口限制,以及名称解析后的检查。
什么时候不要用
只检查字符串开头、只查一次 DNS,或只解析 URL 都不够。重定向和 DNS 重绑定仍可能跨过已验证的边界。
代码里的名称
strict URL parser + destination allowlist + IP-range checks + redirect policy + egress proxy 上线前要检查
只能在明确授权且隔离的防御测试中操作。检查信任边界、无害回归案例和缓解方法。也要检查机密与个人数据处理,以及隐藏敏感数据的检测信号。再检查安全失败、事件负责人、恢复与回到上一版。不得测试真实目标。
预期结果:评估并缓解 服务器端请求伪造 (Server-Side Request Forgery) 的风险。不得实现、启用或在真实环境使用这种攻击。 用户场景:发票工具接受供应商标志 URL。它只解析一次,只允许批准供应商的 HTTPS 主机,并拒绝解析后落在私有、回环、链路本地或元数据网段的地址。它也会禁用重定向、限制数据量和时间、通过出口代理获取,并阻止 `http://169.254.169.254`。 要处理的风险或控制措施:服务器端请求伪造 (Server-Side Request Forgery)。 适用理由:每个会获取用户可影响 URL 的服务器功能,都要进行威胁分析。必须强制目标允许列表、网络出口限制,以及名称解析后的检查。 分类边界:只检查字符串开头、只查一次 DNS,或只解析 URL 都不够。重定向和 DNS 重绑定仍可能跨过已验证的边界。 安全要求:只能在已明确授权、与外界隔离的测试环境中操作。使用无害且不会执行的输入。保护机密与个人数据,说明哪些数据或系统可以互相信任(信任边界),并记录缓解方法。 运营防护:上线前设置检测与隐藏敏感数据的日志。指定事件负责人,并定义失败时保持安全及恢复上一版的方法。 验收标准:防御用回归测试在缓解前失败,缓解后通过。不使用真实目标、机密或个人数据。监控与恢复上一版的方法都已验证。 证据与限制(证据边界):它只代表该来源的官方说法。其他平台或团队可能有不同用法。 待确认:授权范围、受影响资产、数据等级、可能的攻击者、事件负责人,以及恢复上一版的限制。
检查这份需求
请 AI 编程助手检查当前如何使用 服务器端请求伪造 (Server-Side Request Forgery)。 定义:服务器端请求伪造(SSRF)是攻击者控制的输入,让服务器向原本不该访问的内部或外部位置发送请求。 生产环境检查:只能在明确授权且隔离的防御测试中操作。检查信任边界、无害回归案例和缓解方法。也要检查机密与个人数据处理,以及隐藏敏感数据的检测信号。再检查安全失败、事件负责人、恢复与回到上一版。不得测试真实目标。 修改程序前,先列出看到的证据、缺口、严重程度,以及最小且安全的修正。