Skip to content

OpenID Connect client Atom Exhaustion in provider configuration worker ets table location

Moderate severity GitHub Reviewed Published Apr 3, 2024 in erlef/oidcc • Updated Apr 4, 2024

Package

erlang oidcc (Erlang)

Affected versions

>= 3.0.0, < 3.0.2
>= 3.1.0, < 3.1.2
>= 3.2.0-beta.1, < 3.2.0-beta.3

Patched versions

3.0.2
3.1.2
3.2.0-beta.3

Description

Impact

DOS by Atom exhaustion is possible by calling oidcc_provider_configuration_worker:get_provider_configuration/1 or oidcc_provider_configuration_worker:get_jwks/1.

Since the name is usually provided as a static value in the application using oidcc, this is unlikely to be exploited.

Details

Example to illustrate the vulnerability.

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

The vulnerability is present in oidcc_provider_configuration_worker:get_ets_table_name/1.
The function get_ets_table_name is calling erlang:list_to_atom/1.

https://github.com/erlef/oidcc/blob/018dbb53dd752cb1e331637d8e0e6a489ba1fae9/src/oidcc_provider_configuration_worker.erl#L385-L388

There might be a case (Very highly improbable) where the 2nd argument of
oidcc_provider_configuration_worker:get_*/1 is called with a different atom each time which eventually leads to
the atom table filling up and the node crashing.

Patches

Patched in 3.0.2, 3.1.2 & 3.2.0-beta.3

Workarounds

Make sure only valid provider configuration worker names are passed to the functions.

References

References

@maennchen maennchen published to erlef/oidcc Apr 3, 2024
Published to the GitHub Advisory Database Apr 3, 2024
Reviewed Apr 3, 2024
Published by the National Vulnerability Database Apr 4, 2024
Last updated Apr 4, 2024

Severity

Moderate
5.3
/ 10

CVSS base metrics

Attack vector
Local
Attack complexity
High
Privileges required
High
User interaction
None
Scope
Changed
Confidentiality
None
Integrity
None
Availability
High
CVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:C/C:N/I:N/A:H

Weaknesses

CVE ID

CVE-2024-31209

GHSA ID

GHSA-mj35-2rgf-cv8p

Source code

Credits

Dependabot alerts are not supported on some or all of the ecosystems on this advisory.

Learn more about GitHub language support

Checking history
See something to contribute? Suggest improvements for this vulnerability.