Unknown · Ueberauth Guardian · CVE-2026-54894
**Nome do Software Vulnerável e Versões Afetadas**
ueberauth guardian versões 0.1.0 até 2.4.0
**Descrição**
Uma alocação de recursos sem limites ou controle permite a negação de serviço (DoS) através da criação ilimitada de átomos a partir de entradas binárias influenciadas por um invasor. O módulo `Guardian.Plug.Keys` deriva chaves de namespace de conexão e sessão passando binários arbitrários para a função `String.to atom/1`. Especificamente, a função `base key/1` em `lib/guardian/plug/keys.ex` converte binários em átomos, e as funções auxiliares `claims key/1`, `resource key/1` e `token key/1` criam átomos adicionais. Da mesma forma, `key from other/1` converte binários capturados por regex através de `String.to atom/1`. Pontos de entrada de alto nível, como `Guardian.Plug.current token(conn, key: key)`, passam chaves fornecidas pelo chamador diretamente para essas funções.
Como `String.to atom/1` cria um novo átomo para cada binário não visto e os átomos não são coletados pelo garbage collector, a tabela de átomos do BEAM (que possui um limite padrão de aproximadamente 1.048.576 entradas) pode ser esgotada. Se uma aplicação rotear dados não confiáveis, como um identificador de locatário ou cabeçalho de requisição, para uma chave Guardian através do parâmetro `key`, um invasor pode enviar um fluxo de entradas variadas para consumir a tabela de átomos e travar o nó BEAM, afetando todas as aplicações executadas nele.
**Recomendações**
Atualize o ueberauth guardian para a versão 2.4.1 ou posterior.
Como medida paliativa temporária, não derive chaves do Guardian a partir de entradas não confiáveis; em vez disso, use um conjunto fixo e codificado de chaves de namespace ou valide os valores contra uma lista de permissões limitada antes de passá-los como a opção `key`.