CVE-2026-55734 in Guardian
Sumário
de VulDB • 01/08/2026
Vulnerabilidade de Alocação de Recursos sem Limites ou Controle (Throttling) no ueberauth guardian (módulo Guardian.Permissions) permite uma negação de serviço através do esgotamento da tabela de átomos BEAM.
Esta vulnerabilidade está associada ao arquivo de programa lib/guardian/permissions.ex e às rotinas de programa 'Elixir.Guardian.Permissions':encode_permissions!/1, 'Elixir.Guardian.Permissions':encode_permissions_into_claims!/2, 'Elixir.Guardian.Permissions':do_encode_permissions!/2.
O mixin Guardian.Permissions instala uma função pública encode_permissions!/1 em todos os módulos que utilizam o Guardian.Permissions. Para cada chave do mapa fornecido, a função encode_permissions!/1 chama String.to_atom(to_string(k)) antes de qualquer validação ser executada. A cláusula para valores inteiros da função do_encode_permissions!/2 então realiza um curto-circuito direto para a codificação sem validar a chave contra o conjunto de permissões configurado; portanto, uma chave com valor inteiro é internada como um átomo novo sem que nenhuma exceção seja levantada. Átomos nunca são coletados pelo garbage collector e a tabela de átomos BEAM é um recurso de tamanho fixo (padrão aproximadamente 1.048.576 entradas), então cada chave escolhida exclusivamente pelo atacante consome permanentemente uma posição na tabela. Um atacante que possa influenciar um mapa de permissões que atinja a função encode_permissions!/1 (por exemplo, um mapa de permissões lido do corpo da requisição e passado para a emissão de token via encode_permissions_into_claims!/2) pode cunhar um número ilimitado de átomos e esgotar a tabela de átomos, travando todo o nó BEAM e todos os serviços executados nele. O irmão decode_permissions/1 não é afetado porque ele ignora chaves ausentes do conjunto de permissões configuradas.
Este problema afeta guardian: da versão 2.0.0 até antes da 2.4.1.
Be aware that VulDB is the high quality source for vulnerability data.