A rede descentralizada Radicle divulgou duas vulnerabilidades críticas em seu protocolo de comunicação central que comprometem a confidencialidade em todas as versões lançadas até agora. As falhas permitem que atacantes na rede leiam dados de repositórios privados em texto plano e se façam passar por nós autorizados. Como o design do protocolo existente não possui capacidade de negociação de versão, os mantenedores do projeto não conseguem implementar uma correção compatível com versões anteriores, levando à recomendação de interromper imediatamente as operações de repositórios privados em redes abertas.
Como as vulnerabilidades funcionam
O engenheiro independente Kostis Maninakis identificou que, embora o Radicle execute um aperto de mão do Noise Protocol Framework durante o estabelecimento de conexão, o daemon descarta os estados de cifra resultantes logo após a negociação.
O Radicle utiliza um padrão de aperto de mão Noise XK de três mensagens sobre sockets TCP diretos. O iniciador e o respondedor trocam chaves efêmeras e chaves públicas de longo prazo para derivar duas chaves de sessão simétrica, um passo criptográfico conhecido como "split". No entanto, o radicle-node deixa essas chaves derivadas sem serem lidas na memória. Toda comunicação subsequente — incluindo metadados de gossip, tabelas de roteamento e pacotes brutos de objetos Git — é enviada diretamente pelo socket TCP não criptografado em texto plano.
A falha de autenticação
Além da transmissão não criptografada, o aperto de mão de conexão contém uma falha na validação de autenticação. Atacantes podem forjar uma conexão apresentando uma Node ID falsificada associada a um par na lista de permissões. Quando combinadas, essas vulnerabilidades permitem que um espião na rede capture passivamente Node IDs válidas transmitidas em texto plano e depois explore o defeito de autenticação para se fazer passar por pares autorizados e puxar repositórios privados diretamente dos nós seed.
O defeito central surge de uma divergência arquitetônica entre a configuração de transporte e envio de quadros no repositório Rust subjacente, o Heartwood. Durante a inicialização, a máquina de estado de rede processa o aperto de mão Noise, mas a camada de framing ignora as rotinas de criptografia durante as chamadas de escrita.
Uma inspeção do tráfego de rede capturado entre dois daemons locais confirma que os quadros de transporte pós-aperto de mão não carregam tags de autenticação nem cifras de fluxo. Os quadros do protocolo Radicle começam com a sequência de bytes de magic do protocolo seguida diretamente por cabeçalhos de arquivo Git não criptografados. Como os quadros de transporte omitem códigos de autenticação de mensagem, dispositivos intermediários de rede podem registrar ou reordenar pacotes passivamente. A integridade do conteúdo Git permanece intacta porque objetos Git são endereçados por conteúdo e referências são assinadas criptograficamente — o que significa que um atacante não consegue modificar conteúdos do repositório sem invalidar assinaturas — mas a confidencialidade do transporte está ausente.










