Ash Framework — это декларативная расширяемая среда для создания приложений Elixir. До версии 3.22.0 Ash.Type.Module.cast_input/2 безоговорочно создает новый атом Erlang через Module.concat([value]) для любой предоставленной пользователем двоичной строки, которая начинается с «Elixir.», прежде чем проверять, существует ли указанный модуль. Поскольку атомы Erlang никогда не подлежат сборке мусора, а таблица атомов BEAM имеет жесткое ограничение по умолчанию, составляющее примерно 1 048 576 записей, злоумышленник, который может передать значения любому атрибуту ресурса или аргументу типа :module, может исчерпать эту таблицу и привести к сбою всей виртуальной машины BEAM, уничтожив приложение.
Эта проблема исправлена в версии 3.22.0.
Показать оригинальное описание (EN)
Ash Framework is a declarative, extensible framework for building Elixir applications. Prior to version 3.22.0, Ash.Type.Module.cast_input/2 unconditionally creates a new Erlang atom via Module.concat([value]) for any user-supplied binary string that starts with "Elixir.", before verifying whether the referenced module exists. Because Erlang atoms are never garbage-collected and the BEAM atom table has a hard default limit of approximately 1,048,576 entries, an attacker who can submit values to any resource attribute or argument of type :module can exhaust this table and crash the entire BEAM VM, taking down the application. This issue has been patched in version 3.22.0.
Характеристики атаки
Последствия
Строка CVSS v4.0
Тип уязвимости (CWE)
Уязвимые продукты 1
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Ash-Hq Ash_Framework
cpe:2.3:a:ash-hq:ash_framework:*:*:*:*:*:*:*:*
|
— |
3.22.0
|