详解Samly访问控制漏洞CVE-2024-25718:Erlang/Elixir包中的会话过期缺陷

本文详细分析了Erlang/Elixir身份验证库Samly(版本低于1.4.0)中存在的一个高危访问控制漏洞(CVE-2024-25718)。该漏洞源于`Samly.State.Store.get_assertion/3`函数可能返回已过期的会话,而`Samly.AuthHandler`使用了缓存会话且过期后不会替换,从而破坏了访问控制机制。漏洞CVSS评分为9.3(严重级别),影响广泛。

Samly访问控制漏洞 CVE-2024-25718

漏洞概述

  • 编号: CVE-2024-25718
  • 软件包: Samly (Erlang/Elixir)
  • 受影响版本: < 1.4.0
  • 已修复版本: 1.4.0
  • 严重性: 严重 (CVSS评分: 9.3)
  • 漏洞类型: 访问控制漏洞

漏洞描述

在Elixir的Samly软件包(1.4.0之前的版本)中,Samly.State.Store.get_assertion/3函数可能会返回一个已经过期的会话。这干扰了访问控制,因为Samly.AuthHandler使用了缓存的会话,并且即使在会话过期后也不会替换它。

技术细节与影响

  • 根本原因: 会话管理逻辑缺陷导致过期会话未被正确清理和替换。
  • 攻击向量: 网络
  • 攻击复杂度: 低
  • 所需权限: 无
  • 用户交互: 无
  • 对脆弱系统的影响:
    • 保密性影响: 高 (攻击者可能访问未授权信息)
    • 完整性影响: 高 (攻击者可能篡改数据或执行未授权操作)
    • 可用性影响: 无
  • 对后续系统的影响: 无

关联的通用弱点枚举 (CWE)

  • CWE-400: 不受控制的资源消耗 - 产品未能正确控制有限资源的分配和维护,使得攻击者能够影响消耗的资源量,最终导致可用资源耗尽。
  • CWE-613: 会话过期不足 - 根据WASC(Web应用安全联盟)的定义,当网站允许攻击者重用旧的会话凭证或会话ID进行授权时,即存在此问题。

修复与参考

  • 修复提交: 开发者通过提交812b5c37637ebe修复了此问题。
  • 版本对比: 可通过https://diff.hex.pm/diff/samly/1.3.0..1.4.0查看具体代码变更。
  • 相关链接:
    • 国家漏洞数据库 (NVD): https://nvd.nist.gov/vuln/detail/CVE-2024-25718

    • 软件包主页: https://hex.pm/packages/samly

    • GitHub仓库: https://github.com/dropbox/samly, https://github.com/handnot2/samly

安全建议

所有使用Samly软件包(Erlang/Elixir)且版本低于1.4.0的用户应立即升级到1.4.0或更高版本,以修复此高危访问控制漏洞。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计