OpenID Connect客户端Atom耗尽漏洞 (CVE-2024-31209)
描述
在oidcc库的提供者配置工作进程中存在一个漏洞,可能导致拒绝服务攻击。
影响
通过调用 oidcc_provider_configuration_worker:get_provider_configuration/1 或 oidcc_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==