OpenID Connect客户端在提供者配置工作进程ETS表中的原子耗尽漏洞

3 阅读1分钟

OpenID Connect客户端Atom耗尽漏洞 (CVE-2024-31209)

描述

oidcc库的提供者配置工作进程中存在一个漏洞,可能导致拒绝服务攻击。

影响

通过调用 oidcc_provider_configuration_worker:get_provider_configuration/1oidcc_provider_configuration_worker:get_jwks/1 函数可能引发原子耗尽问题。由于在使用oidcc的应用程序中,名称通常作为静态值提供,因此此漏洞被利用的可能性较低。

漏洞示例

{ok, Claims} =
  oidcc:retrieve_userinfo(
    Token,
    myapp_oidcc_config_provider,
    <<"client_id">>,
    <<"client_secret">>,
    #{}
  )

漏洞存在于 oidcc_provider_configuration_worker:get_ets_table_name/1 函数中。该函数调用了 erlang:list_to_atom/1

代码位置: github.com/erlef/oidcc…

在极不可能的情况下,oidcc_provider_configuration_worker:get_*/1 的第二个参数每次使用不同的原子进行调用,最终会导致原子表填满,节点崩溃。

修复版本

  • 3.0.2
  • 3.1.2
  • 3.2.0-beta.3

缓解措施

确保只向函数传递有效的提供者配置工作进程名称。

参考链接

漏洞评分

  • CVSS v3基础分数: 5.3 (中等严重性)
  • 攻击向量: 本地
  • 攻击复杂度: 高
  • 所需权限: 高
  • 用户交互: 无
  • 范围: 已变更
  • 机密性影响: 无
  • 完整性影响: 无
  • 可用性影响: 高

CVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:C/C:N/I:N/A:H

  • EPSS分数: 0.019% (第4百分位) - 未来30天内被利用的概率估计

弱点类型

  • CWE-400: 不受控制的资源消耗 - 产品未能正确控制有限资源的分配和维护 glyoVzOLZA9nMhz/bDHDAWzfRfZ0dSZtQUalpUyOmxcA/TUA7nqfiI2bp4R3pgbhr+IemDoPhlY9WdbaytRoUA==