SSRF vs. Developers
Date: October 15, 2024
Contribution
- 对于PHP中开源SSR缓解措施的调研
- 基于modern CPG框架的PHP CPG Generator
- 开发基于CPG的static analysis tool (SURFER),用于检测SSRF vulnerable code
- 调研27078个PHP项目,用于评估SSRF vulnerabilities & mitigation techniques
SSRF: Server-Side Request Forgery
伪造服务器端请求,用于1)
- Server-Side Request: 用户请求远程数据资源
- 例如,用户通过URL像服务器请求远程图片,服务器下载图片并返回给用户
- Server-Side Request Forgery: 攻击者伪造请求,让服务器请求恶意资源
- 1)Recon Attack:获取服务器网络信息,以绕过防火墙并访问内部网络
- 2)Origin Laundering:使用服务器作为代理访问被block的恶意内容
- 3)…
Defenses
- D1. URL Validation
- D2. DNS Validation
- D3. Secure Configurations
- D4. Response Modification
Threat Model
- 假设 PHP standard library 没有漏洞
- 假设所有提到 allow-listing 的项目都有完整的白名单
- 假设攻击者可以访问能够触发和影响请求目标的服务 (e.g. 通过表单提交)
SURFER: Static Analysis Tool
- CPG & interprocedural data flow analysis
- 构建PHP CPG Generator,通过更准确的CFG保证data dependency edges的准确性。
- 识别从 user-controlled sources 到 SSRF sink point 的函数间数据流 (Backward Program Slicing)
- 将该数据流生成为tree structure,其中,leaves 表示 input values (e.g., constant, variable), nodes 表示 transformations,root 表示 sink point
- 过滤无关App和攻击者不可控的输入源
- 人工分析 tree structure,识别是否存在D1-D4的防御机制