CVE-2026-55734 in Guardian
Сводка
по VulDB • 02.08.2026
Уязвимость типа «Выделение ресурсов без ограничений или ограничения скорости» (Allocation of Resources Without Limits or Throttling) в библиотеке ueberauth guardian (модуль Guardian.Permissions) позволяет осуществить отказ в обслуживании путем исчерпания таблицы атомов BEAM.
Эта уязвимость связана с файлом программы lib/guardian/permissions.ex и программными процедурами 'Elixir.Guardian.Permissions':encode_permissions!/1, 'Elixir.Guardian.Permissions':encode_permissions_into_claims!/2, 'Elixir.Guardian.Permissions':do_encode_permissions!/2.
Миксин Guardian.Permissions устанавливает публичную функцию encode_permissions!/1 для каждого модуля, использующего Guardian.Permissions. Для каждого ключа предоставленной карты (map) функция encode_permissions!/1 вызывает String.to_atom(to_string(k)) до выполнения какой-либо проверки валидации. Затем ветвь обработки целочисленных значений do_encode_permissions!/2 выполняет короткое замыкание непосредственно к кодированию без проверки ключа против настроенного набора разрешений, поэтому ключ со значением типа integer интернируется как новый атом без вызова исключения. Атомы никогда не собираются сборщиком мусора (garbage collected), и таблица атомов BEAM является ресурсом фиксированного размера (по умолчанию около 1 048 576 записей), поэтому каждый уникальный выбранный злоумышленником ключ навсегда занимает одну ячейку. Злоумышленник, способный влиять на карту разрешений, которая достигает encode_permissions!/1 (например, карта разрешений, считанная из тела запроса и переданная для выпуска токена через encode_permissions_into_claims!/2), может создать неограниченное количество атомов и исчерпать таблицу атомов, что приведет к аварийному завершению работы всего узла BEAM и всех сервисов, работающих на нем. Близкая функция decode_permissions/1 не затронута, поскольку она пропускает ключи, отсутствующие в настроенном наборе разрешений.
Эта проблема затрагивает guardian: начиная с версии 2.0.0 до (не включая) 2.4.1.
If you want to get best quality of vulnerability data, you may have to visit VulDB.