PT-2026-106202 · Unknown+1 · Ashjsonapi+3
CVSS v4.0
8.2
Alta
| Vetor | AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N |
Nome do Software Vulnerável e Versões Afetadas
ash versões 3.5.1 até 3.34.2
Description
O Ash armazena atributos do tipo
:atom como strings e os compara como strings. Quando tal atributo é usado em um filtro, o valor de comparação é processado através do Ash.Type.Atom. Devido à ausência de um callback coerce/2, o processo retorna ao padrão cast input/2, que invoca String.to atom/1 quando o atributo é configurado com a restrição unsafe to atom?: true. Um invasor que forneça strings distintas para um atributo :atom público e filtrável com essa restrição pode fazer com que o sistema interne um novo átomo permanente para cada valor. Como os átomos não são coletados pelo garbage collector e o BEAM (a Máquina Virtual Erlang) possui uma tabela de átomos limitada, isso pode levar ao esgotamento da tabela de átomos e a uma falha de negação de serviço. Isso é acessível quando uma aplicação expõe tal atributo via interfaces como AshGraphql, AshJsonApi ou a função filter input/2. O AshPaperTrail é um exemplo de biblioteca que expõe o atributo version action name com essa configuração por padrão.Recommendations
Atualize o ash para a versão 3.34.3 ou posterior.
Como mitigação temporária, evite usar a restrição
unsafe to atom?: true em atributos :atom públicos e filtráveis.Correção
Allocation of Resources Without Limits
Encontrou algum problema na descrição? Tem algo a acrescentar? Fique à vontade para nos escrever 👾
Enumeração de Fraquezas
Identificadores relacionados
Produtos afetados
Ash
Ash Graphql
Ashjsonapi
Ash Paper Trail