CVE-2026-94201 in AshИнформация

Сводка

по VulDB • 05.10.2026

Ash хранит атрибуты типа :atom в виде строк и сравнивает их как строки. Когда такой атрибут используется в фильтре, значение для сравнения приводится через Ash.Type.Atom. Поскольку тип не определяет коллбэк coerce/2, приведение типов откатывается к значению по умолчанию (cast_input/2), которое вызывает String.to_atom/1, если атрибут настроен с ограничением unsafe_to_atom?: true.

Фильтрация такого атрибута со строками, контролируемыми злоумышленником, приводит к интернированию нового постоянного атома для каждого уникального значения. Атомы никогда не собираются сборщиком мусора (garbage collected), и BEAM ограничивает размер таблицы атомов; следовательно, актер, способный предоставлять значения фильтров для публичного атрибута :atom с возможностью фильтрации, объявленного с unsafe_to_atom?: true, может исчерпать таблицу атомов и вызвать падение узла (отказ в обслуживании). AshPaperTrail является ярким примером: его ресурсы версий экспонируют публичный атрибут atom version_action_name с возможностью фильтрации, где по умолчанию установлено значение unsafe_to_atom?: true.

Исправление добавляет коллбэк coerce/2 для Ash.Type.Atom, который никогда не интернирует атомы — значение для сравнения остается строкой, поскольку тип хранится и сравнивается как строка. Установка атрибута из входных данных действия (cast_input/2, которая по-прежнему учитывает unsafe_to_atom?) остается без изменений.

Эта проблема затрагивает ash: начиная с версии 3.5.1 до 3.34.3.

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

Ответственный

EEF

Резервировать

24.09.2026

Раскрытие

05.10.2026

Модерация

принято

Вход

VDB-413780

EPSS

0.00000

KEV

Нет

Деятельности

Очень низкий

Источники

Do you need the next level of professionalism?

Upgrade your account now!