OpenID Connect客户端Atom耗尽漏洞分析与修复方案

本文详细分析了CVE-2024-31209漏洞,该漏洞存在于Erlang的OpenID Connect客户端库中,由于atom资源耗尽导致拒绝服务攻击风险,涉及具体的技术实现细节和修复方案。

OpenID Connect客户端Atom耗尽漏洞分析

漏洞概述

CVE-2024-31209是一个中等严重性的安全漏洞,影响Erlang的OpenID Connect客户端库(oidcc)。该漏洞存在于提供者配置工作器的ETS表位置处理过程中。

受影响版本

  • = 3.0.0, < 3.0.2

  • = 3.1.0, < 3.1.2

  • = 3.2.0-beta.1, < 3.2.0-beta.3

已修复版本

  • 3.0.2
  • 3.1.2
  • 3.2.0-beta.3

漏洞影响

通过调用oidcc_provider_configuration_worker:get_provider_configuration/1oidcc_provider_configuration_worker:get_jwks/1函数,可能造成Atom资源耗尽,从而导致拒绝服务攻击(DOS)。

由于名称通常作为应用程序中的静态值提供,因此被利用的可能性较低。

技术细节

漏洞存在于oidcc_provider_configuration_worker:get_ets_table_name/1函数中。

该函数调用了erlang:list_to_atom/1,在极少数情况下(概率极低),当oidcc_provider_configuration_worker:get_*/1的第二个参数每次使用不同的atom调用时,最终会导致atom表填满,从而使节点崩溃。

漏洞示例代码

1
2
3
4
5
6
7
8
{ok, Claims} =
  oidcc:retrieve_userinfo(
    Token,
    myapp_oidcc_config_provider,
    <<"client_id">>,
    <<"client_secret">>,
    #{}
  )

修复方案

补丁版本

  • 3.0.2
  • 3.1.2
  • 3.2.0-beta.3

临时解决方案

确保仅将有效的提供者配置工作器名称传递给相关函数。

参考链接

安全评分

CVSS总体评分:5.3(中等)

CVSS v3基础指标

  • 攻击向量:本地
  • 攻击复杂度:高
  • 所需权限:高
  • 用户交互:无
  • 范围:已更改
  • 机密性:无影响
  • 完整性:无影响
  • 可用性:高影响

弱点分类

CWE-400:不受控制的资源消耗

产品未能正确控制有限资源的分配和维护,从而使攻击者能够影响消耗的资源量,最终导致可用资源耗尽。

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