SSRF vs. Developers

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的防御机制