Hackney库中的服务器端请求伪造(SSRF)漏洞剖析

本文详细分析了Erlang HTTP客户端库hackney中存在的服务器端请求伪造(SSRF)漏洞CVE-2025-1211。该漏洞源于URL解析不一致,攻击者可通过特殊构造的URL绕过主机检查,导致内部服务被访问。文章涵盖了漏洞原理、影响版本、修复方案及CVSS评分细节。

服务器端请求伪造(SSRF)在hackney库中 · CVE-2025-1211

漏洞概述

CVE-2025-1211是一个影响Erlang HTTP客户端库hackney的服务器端请求伪造(SSRF)漏洞,被GitHub安全团队评为低危级别。该漏洞存在于hackney 1.21.0之前的所有版本中。

技术细节

漏洞根源

此SSRF漏洞源于URI内置模块与hackney库之间的URL解析不一致性。当处理特殊构造的URL时,两个组件对主机名的识别会产生分歧,从而导致安全绕过。

攻击向量

考虑以下示例URL:

1
http://127.0.0.1?@127.2.2.2/
  • URI模块解析结果:正确地将127.0.0.1识别为主机
  • hackney库解析结果:错误地将127.2.2.2/识别为主机

这种解析差异使得攻击者能够绕过基于URI模块的主机检查机制,当应用程序依赖URI函数进行主机验证时,攻击者可能访问非预期的内部服务。

影响范围

  • 受影响版本:hackney < 1.21.0
  • 已修复版本:hackney 1.21.0

安全评估

CVSS v4评分

  • 总体评分:2.9/10(低危)
  • 攻击向量:网络(Network)
  • 攻击复杂度:低(Low)
  • 所需权限:无(None)
  • 用户交互:无(None)

受影响系统指标

  • 机密性影响:低(Low)
  • 完整性影响:无(None)
  • 可用性影响:无(None)

后续系统指标

  • 机密性影响:低(Low)
  • 完整性影响:低(Low)
  • 可用性影响:低(Low)

EPSS评分

漏洞被利用的概率估计为0.045%(第14百分位),表明短期内被广泛利用的可能性较低。

弱点分类

  • CWE标识:CWE-918
  • 弱点类型:服务器端请求伪造(SSRF)
  • 描述:Web服务器从上游组件接收URL或类似请求并获取该URL的内容,但未能充分确保请求被发送到预期目的地。

修复与参考

官方修复

漏洞在hackney 1.21.0版本中通过提交9594ce5得到修复。用户应立即升级到该版本或更高版本。

参考资源

  1. NVD漏洞详情:https://nvd.nist.gov/vuln/detail/CVE-2025-1211
  2. 技术分析文档:https://gist.github.com/snoopysecurity/996de09ec0cfd0ebdcfdda8ff515deb1
  3. Snyk安全报告:https://security.snyk.io/vuln/SNYK-HEX-HACKNEY-6516131
  4. Black Hat技术研究:https://www.blackhat.com/docs/us-17/thursday/us-17-Tsai-A-New-Era-Of-SSRF-Exploiting-URL-Parser-In-Trending-Programming-Languages.pdf
  5. 官方发布说明:https://github.com/benoitc/hackney/releases/tag/1.21.0

安全建议

  1. 立即升级:所有使用hackney库的项目应尽快升级至1.21.0或更高版本
  2. 输入验证:即使使用修复后的版本,也建议实施多层URL验证机制
  3. 网络隔离:限制应用程序服务器的出站网络访问,减少SSRF攻击面
  4. 监控日志:加强对异常URL请求的监控和日志记录

元数据

  • GHSA ID:GHSA-vq52-99r9-h5pw
  • 首次发布:2025年2月11日(GitHub安全公告数据库)
  • 最后更新:2025年2月20日
  • 漏洞分析人员:benoitc
  • 数据库状态:GitHub已审核
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计