The use of `String.to_atom/1` in PowAssent is susceptible to denial of service attacks. In `PowAssent.Phoenix.AuthorizationController` a value is fetched from the user provided params, and `String.to_atom/1` is used to convert the binary value to an atom so it can be used to fetch the provider configuration value. This is unsafe as it is user provided data, and can be used to fill up the whole atom table of ~1M which will cause the app to crash.
Advisories
Source ID Title
EUVD EUVD EUVD-2022-1629 The use of `String.to_atom/1` in PowAssent is susceptible to denial of service attacks. In `PowAssent.Phoenix.AuthorizationController` a value is fetched from the user provided params, and `String.to_atom/1` is used to convert the binary value to an atom so it can be used to fetch the provider configuration value. This is unsafe as it is user provided data, and can be used to fill up the whole atom table of ~1M which will cause the app to crash.
Github GHSA Github GHSA GHSA-5653-437f-5hmc Denial of service
Fixes

Solution

No solution given by the vendor.


Workaround

A plug can be used to validate conn.params["provider"] before it reaches the PowAssent.Phoenix.AuthorizationController.

History

No history.

cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2024-08-05T01:24:47.215Z

Reserved: 2019-09-24T00:00:00

Link: CVE-2019-16764

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Modified

Published: 2019-11-25T17:15:11.713

Modified: 2024-11-21T04:31:08.573

Link: CVE-2019-16764

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

No data.