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

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

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

漏洞概述

CVE-2024-31209是一个中等严重性的安全漏洞,影响Erlang的OpenID Connect客户端库(oidcc)。该漏洞存在于提供者配置工作器的ETS表处理过程中,可能被利用导致Atom资源耗尽,最终引发节点崩溃。

受影响版本

  • = 3.0.0, < 3.0.2

  • = 3.1.0, < 3.1.2

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

技术细节

漏洞位置

漏洞核心位于oidcc_provider_configuration_worker:get_ets_table_name/1函数中:

1
2
3
% 漏洞代码示例
get_ets_table_name(ProviderName) ->
    erlang:list_to_atom(ProviderName).

攻击原理

攻击者可以通过重复调用以下函数来利用此漏洞:

  • oidcc_provider_configuration_worker:get_provider_configuration/1
  • oidcc_provider_configuration_worker:get_jwks/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

临时解决方案

确保仅向相关函数传递有效的提供者配置工作器名称,避免动态生成atom。

安全评分

CVSS v3.1评分:5.3(中等)

基础指标:

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

相关资源

弱点分类

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

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

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