PT-2026-83142 · Elixir · Elixir
CVSS v4.0
5.9
Média
| Vetor | AV:L/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
Elixir versões 1.15.0-rc.0 até 1.18.4
Elixir versões 1.19.0-rc.0 até 1.19.5
Elixir versões 1.20.0-rc.0 até 1.20.3
Description
Um problema de recursão descontrolada na biblioteca padrão permite que um invasor que controle uma lista passada para as funções
inspect/1, List.to string/1 ou List.to charlist/1 esgote a memória de um nó BEAM. O problema ocorre quando o prefixo imprimível de uma lista excede o :printable limit (4096 elementos por padrão), mas contém um elemento subsequente que não é um ponto de código válido, como um átomo ou um inteiro fora do intervalo. Isso faz com que a lista seja classificada incorretamente como uma charlist, resultando em um ArgumentError. Em List.to string/1 e List.to charlist/1, a cláusula de resgate tenta construir uma mensagem de erro chamando inspect(list), o que aciona novamente o mesmo caminho de erro. Como essa recursão não está em posição de cauda, a pilha do processo cresce até que o nó fique sem memória ou o processo seja encerrado pelo max heap size.Recommendations
Atualize o Elixir para a versão 1.18.5 ou posterior.
Atualize o Elixir para a versão 1.19.6 ou posterior.
Atualize o Elixir para a versão 1.20.4 ou posterior.
Como solução temporária, instale uma função de inspeção global via callback de inicialização da aplicação usando
Inspect.Opts.default inspect fun/1 com fn term, opts -> Inspect.inspect(term, %{opts | charlists: :as lists}) end para evitar que o ramo de charlist seja acessado.Exploit
Correção
Uncontrolled Recursion
Encontrou algum problema na descrição? Tem algo a acrescentar? Fique à vontade para nos escrever 👾
Enumeração de Fraquezas
Identificadores relacionados
Produtos afetados
Elixir