PT-2026-42699 · Npm+2 · @Libp2P/Gossipsub+1
CVE-2026-46679
·
Publicado
2026-05-21
·
Atualizado
2026-06-10
CVSS v3.1
7.5
Alta
| Vetor | AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H |
Nome do Software Vulnerável e Versões Afetadas
libp2p versões anteriores a 15.0.23
Descrição
Três omissões cooperativas no
@libp2p/gossipsub permitem que um único peer não autenticado esgote o heap do Node.js de qualquer nó gossipsub que utilize as opções padrão, levando a um travamento por falta de memória (Out-Of-Memory - OOM). O problema decorre dos seguintes defeitos técnicos:- A variável
defaultDecodeRpcLimits.maxSubscriptionsestá definida comoInfinity, o que significa que não há um limite de nível de decodificação para entradas de assinatura por RPC. - A função
handleReceivedSubscription()é ilimitada; cada string de tópico única cria uma nova entrada deMape um objetoSetemthis.topicssem um limite de contagem por peer. - A função
removePeer()não exclui Sets vazios dethis.topicsapós a desconexão de um peer, fazendo com que a memória não seja recuperável durante a vida útil do processo.
Um invasor pode explorar isso enviando um frame LP de 4MB contendo centenas de milhares de entradas SUBSCRIBE de tópicos únicos. Isso resulta em um crescimento significativo do heap (amplificação de aproximadamente 22x) e bloqueia o event loop. Como o processamento de assinaturas carece de verificações de pontuação ou penalidades, um único peer pode derrubar um processo Node.js com limite de heap de 1,5GB usando aproximadamente 68MB de largura de banda total em cerca de 5 segundos a 100Mbps.
Recomendações
Atualize para a versão 15.0.23.
Como mitigação temporária, restrinja o uso do módulo
@libp2p/gossipsub configurando opts.allowedTopics para limitar o crescimento de tópicos por invasor.Exploit
Correção
DoS
Memory Leak
Resource Exhaustion
RCE
Encontrou algum problema na descrição? Tem algo a acrescentar? Fique à vontade para nos escrever 👾
Identificadores relacionados
Produtos afetados
@Libp2P/Gossipsub
Js-Libp2P