PT-2026-108772 · Hexpm · Elixir-Protobuf
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
elixir-protobuf versões 0.8.0 até 0.17.0
Description
Um invasor remoto não autenticado pode causar a interrupção do processo de decodificação ao fornecer um documento JSON profundamente aninhado. Isso ocorre quando uma aplicação decodifica um JSON fornecido por um invasor em um esquema que contenha um tipo de mensagem autorreferencial ou cíclica usando as funções
Protobuf.JSON.decode/3, Protobuf.JSON.decode!/3 ou Protobuf.JSON.from decoded/3.Em
lib/protobuf/json/decode.ex, a cláusula embedded-message da função decode singular/3 recursa para internal from json data/3 a cada nível de aninhamento sem incrementar ou verificar o contador de profundidade do decodificador. Embora a guarda increase depth and maybe throw/1 exista, ela se aplica apenas às cláusulas Google.Protobuf.ListValue e Google.Protobuf.Struct, tornando a opção recursion limit ineficaz para tipos de mensagem definidos pelo usuário. Consequentemente, cada nível de aninhamento aloca um quadro de pilha e objetos de heap, permitindo que um documento suficientemente profundo esgote a memória do processo de decodificação e o interrompa. Se a flag de processo max heap size do BEAM estiver configurada como ilimitada, requisições simultâneas podem esgotar a memória de todo o nó.Recommendations
Atualize o elixir-protobuf para a versão 0.17.1.
Como medida paliativa temporária, rejeite documentos JSON cuja profundidade de aninhamento exceda um limite fixo na camada web ou de middleware antes que sejam passados para as funções
Protobuf.JSON.decode/3, Protobuf.JSON.decode!/3 ou Protobuf.JSON.from decoded/3.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-Protobuf