Resposta da Nym à auditoria de segurança da Cure53 (Julho de 2024)
Auditoria completa do código, rede e aplicativos da Nym
Atualizado em 18 de novembro de 2025
Introdução
O NymVPN foi desenvolvido para garantir proteção privada, segura e confiável para suas comunicações online. Na Nym, transparência e confiança do usuário são prioridades absolutas — por isso o código da Nym é open-source e passa por auditorias independentes regulares.
Em julho de 2024, a Nym passou por uma auditoria independente realizada pela Cure53, empresa de cibersegurança sediada em Berlim com ampla experiência em avaliações de segurança de alto nível. A revisão abrangente cobriu componentes-chave da infraestrutura da Nym, incluindo aplicativos móveis e desktop, software VPN e criptografia.
Todas as vulnerabilidades críticas e de alta severidade identificadas foram tratadas. Após a Cure53 revisar as correções implementadas, todas as vulnerabilidades críticas e de alta severidade foram confirmadas como resolvidas
O relatório completo da Cure53 está publicado aqui. Você também pode assistir à palestra do Dr. Nadim Kobeissi para a OSTIF sobre a auditoria.
Resumo da Auditoria da Nym pela Cure53
A Cure53 conduziu uma avaliação de segurança abrangente do ecossistema Nym, incluindo testes de penetração, auditoria de código-fonte e análise de configuração. A auditoria focou em avaliar a postura de segurança dos aplicativos móveis e desktop da Nym, API backend, software VPN e criptografia. A equipe da Nym apoiou continuamente a equipe da Cure53 durante toda a auditoria, garantindo colaboração eficiente e um processo transparente.
A Cure53 adotou uma estratégia crystal-box, com acesso total ao código-fonte, builds, documentação, ambientes de teste e comunicação direta com os desenvolvedores. Com duração de 56 dias úteis, a auditoria envolveu uma equipe de seis especialistas sênior em cibersegurança. O trabalho foi dividido em cinco pacotes de trabalho (WPs):
- WP1: Apps móveis da Nym
- WP2: Apps desktop da Nym
- WP3: API backend da Nym
- WP4: Software VPN e infraestrutura da Nym
- WP5: Criptografia da Nym
A auditoria alcançou cobertura abrangente dentro do escopo definido, identificando 43 descobertas, incluindo 7 vulnerabilidades de segurança e 36 problemas gerais de fraqueza.
O software e a infraestrutura do NymVPN foram considerados em excelente estado do ponto de vista de segurança, sem problemas de alto ou crítico risco identificados. A Cure53 concluiu que todos os componentes investigados possuem bases de segurança sólidas, demonstrando uma postura robusta no geral. Os aplicativos desktop foram avaliados como estando em bom estado do ponto de vista de segurança, sem falhas de segurança significativas identificadas. A equipe de auditoria destacou que a implementação geral era sólida. Da mesma forma, o backend e a API da Nym foram avaliados como estando em estado moderado do ponto de vista de segurança. O relatório reconheceu que várias vulnerabilidades críticas foram efetivamente mitigadas e prevenidas, demonstrando a abordagem proativa da equipe em relação à segurança.
Principais descobertas
WP1: Testes de penetração crystal-box e auditorias de código-fonte dos apps móveis da Nym
No WP1, a Cure53 realizou análises estáticas e dinâmicas combinadas com testes white-box nos aplicativos móveis do NymVPN para iOS e Android. O objetivo era identificar quaisquer fraquezas, configurações incorretas ou riscos de segurança nos aplicativos. No geral, as descobertas foram de menor severidade, sem vulnerabilidades críticas ou de alto risco identificadas. Os problemas identificados foram principalmente de severidade média, baixa ou informacional, e podem ser tratados efetivamente como parte do ciclo normal de desenvolvimento. A análise estática buscou configurações abaixo do ideal ou incorretas nos aplicativos que poderiam levar a fraquezas de segurança. No entanto, a análise não revelou nenhuma preocupação de alto risco.
Além disso, a Cure53 conduziu uma investigação aprofundada sobre vetores de ataque comuns no Android, incluindo possível acesso a armazenamento externo, atividades exportadas, deep links e intenções. Nenhuma vulnerabilidade foi identificada em nenhuma dessas áreas, refletindo a solidez das medidas de segurança da plataforma.
A Cure53 também confirmou que nenhum dos apps Android ou iOS continha informações sensíveis ou segredos codificados diretamente no código, o que seria uma falha de segurança significativa.
No geral, os apps móveis demonstraram boa postura de segurança com uma superfície de ataque mínima. Com exceção de algumas áreas menores para melhoria, como o uso inadequado do armazenamento seguro nativo do app iOS (NYM-01-002 WP1), os aplicativos demonstraram práticas de segurança sólidas.
WP2: Testes de penetração crystal-box e auditorias de código-fonte dos apps desktop da Nym
O WP2 focou nos apps desktop do NymVPN para Windows, Linux e macOS. A equipe de testes conduziu uma revisão completa dos componentes frontend para problemas do lado do cliente e do backend em Rust para problemas do lado do servidor. No geral, os aplicativos desktop demonstraram boas práticas de segurança.
Os principais pontos positivos incluem o uso do framework React para os componentes frontend, que reduz significativamente a superfície de ataque ao eliminar muitas vulnerabilidades comuns do lado do cliente. A equipe não identificou grandes vulnerabilidades do lado do cliente, exceto em um cenário muito específico onde um renderizador malicioso poderia explorar o Tauri IPC para acessar funcionalidades do sistema. Este problema foi categorizado como de baixo risco, sem dados sensíveis ou vulnerabilidades críticas identificadas. No lado do backend, a comunicação com o daemon via Unix socket (Linux) e pipe (Windows) foi cuidadosamente examinada, e verificou-se que seguia boas práticas de segurança.
Embora alguns problemas menores tenham sido observados, essas descobertas focaram em melhorias de segurança adicionais, não em falhas críticas.
WP3: Testes de penetração crystal-box e auditorias de código-fonte da API backend da Nym
O WP3 focou na API dos componentes backend da Nym, incluindo gateways e nós de mix, excluindo validadores. O processo de teste examinou minuciosamente serialização/desserialização, injeção SQL, mecanismos de autenticação e autorização, além de validação de entrada. O backend da Nym demonstrou segurança moderada, sem vulnerabilidades diretas de execução de código, riscos de SQLi ou problemas de autenticação e autorização. Os mecanismos de autenticação e autorização da nossa rede são implementados seguindo padrões seguros, mitigando efetivamente as principais ameaças de segurança. Embora os componentes backend tenham demonstrado segurança robusta no geral, alguns problemas notáveis foram identificados. Entre eles, duas descobertas foram categorizadas como de alta ou crítica severidade (NYM-01-027, NYM-01-030 e NYM-01-032), que foram tratadas conforme descrito abaixo.
NYM-01-027 WP3: Reutilização de nonce-chave em AES-CTR nos gateways da Nym (Crítico)
Durante uma revisão de código-fonte do repositório da Nym, foi identificado que a comunicação entre o gateway e os clientes utilizava AES-CTR com um nonce fixo de 0, resultando em reutilização de nonce-chave. Especificamente, descobriu-se que o handshake entre os gateways e clientes da Nym utilizava o seguinte esquema de criptografia de comunicação. Isso coloca toda a comunicação em risco caso um único texto simples vaze para um atacante, pois permite que ele decifre toda a comunicação subsequente.
Embora a confidencialidade dos dados transferidos entre o cliente e o gateway esteja em risco apenas em caso de vazamento de texto simples, a gravidade desta vulnerabilidade justifica sua classificação como Crítica. A equipe da Nym respondeu prontamente substituindo a criptografia AES-CTR pelo esquema AES-GCM-SIV recomendado, melhorando significativamente a segurança da comunicação.
NYM-01-030 WP3: Gateway ignora verificação de número serial de credencial (Crítico)
A ausência de verificações de número serial de credencial no nível do gateway não compromete a segurança do sistema porque o protocolo zk-nyms segue um modelo de e-cash offline. Em esquemas de e-cash online, os provedores mantêm conexão constante com uma autoridade central (ex.: banco ou blockchain) e verificam números seriais em tempo real para evitar gastos duplos. Aplicado ao NymVPN, isso significaria que os gateways verificariam ativamente os números seriais das credenciais à medida que as transações ocorrem. Em contraste, o e-cash offline elimina a necessidade de conexão contínua — os provedores podem aceitar pagamentos e depositá-los posteriormente com a autoridade central. O protocolo zk-nyms segue esse modelo de e-cash offline, garantindo que mesmo sem verificações locais de número serial no gateway, os gastos duplos sejam detectados de forma confiável durante a fase de liquidação. Isso significa que a verificação de número serial no gateway não é necessária para a segurança. No entanto, verificações locais no gateway poderiam fornecer uma camada adicional de detecção antecipada, melhorando a velocidade de identificação de tentativas de gasto duplo. Embora tais verificações possam aumentar a eficiência, não são essenciais para a segurança central do protocolo. As garantias criptográficas incorporadas no protocolo zk-nyms asseguram que gastos duplos sejam detectados de forma confiável em uma etapa posterior durante a liquidação. Como resultado, as verificações de gasto duplo no gateway devem ser consideradas um aprimoramento opcional de eficiência, e não um requisito de segurança.
Além disso, em nosso sistema, cada credencial zk-nym tem uma data de validade fixa, atualmente definida para uma semana. Após esse período, credenciais expiradas não são mais aceitas pelos nós de entrada da rede. Esse mecanismo de expiração limita ainda mais o impacto de qualquer tentativa de gasto duplo, garantindo que o sistema permaneça seguro.
NYM-01-032 WP3: Parâmetros do filtro Bloom geram falsos positivos (Alto)
Observamos que essa parte do código estava em desenvolvimento ativo e não estava em uso no app NymVPN no momento da auditoria. Os parâmetros fornecidos eram puramente para fins de teste. Conforme explicado no NYM-01-030 WP3, os filtros Bloom foram adicionados como uma verificação adicional para gastos duplos. No entanto, como nosso protocolo trata gastos duplos de forma diferente por design, e os filtros Bloom geravam falsos positivos excessivos, decidimos remover os filtros Bloom completamente.
Além dessas questões prioritárias, a auditoria também destacou várias vulnerabilidades de severidade média, especificamente relacionadas a ataques de negação de serviço (DoS) direcionados aos componentes do backend. Essas descobertas destacam áreas onde o backend do NymVPN pode melhorar sua resiliência contra interrupções de serviço. Planejamos tratar essas questões como parte do nosso roadmap de 2025.
No geral, a API e os componentes backend demonstraram um nível de segurança exemplar, com vulnerabilidades amplamente confinadas a melhorias de eficiência e aspectos específicos de configuração.
WP4: Testes de penetração crystal-box e auditorias de código-fonte do software VPN e infraestrutura da Nym
O WP4 envolveu uma avaliação de segurança abrangente do software NymVPN, focando em:
- Funcionalidade central: tratamento de protocolo, criptografia, gerenciamento de rede, resolução de DNS e implementação de roteamento IP, tunelamento e integração de pilha de rede.
- Integração frontend: A interface baseada em Tauri foi avaliada quanto a design, usabilidade e integração eficiente com o núcleo em Rust.
- Medidas de segurança chave: armazenamento seguro de credenciais, prevenção de vazamentos, gerenciamento de chaves e mitigação de vulnerabilidades conhecidas de VPN.
A implementação em Rust do tratamento de protocolo, criptografia, roteamento IP, tunelamento e integração de pilha de rede foi altamente elogiada pela equipe de auditoria. Recursos de segurança chave, como armazenamento de credenciais, prevenção de vazamentos e gerenciamento de chaves de criptografia, foram considerados conformes com os mais altos padrões do setor.
O frontend desktop demonstrou combinar com sucesso usabilidade e integração eficiente com o núcleo em Rust. Os mecanismos de tratamento de erros e logging foram confirmados como abrangentes e bem implementados, fornecendo informações valiosas para debug e manutenção.
Nenhuma vulnerabilidade foi identificada durante a análise do WP4, e o software NymVPN foi confirmado como demonstrando um estado de segurança excelente.
WP5: Testes de penetração crystal-box e auditorias de código-fonte da criptografia da Nym
O WP5 focou em uma avaliação completa da criptografia utilizada na plataforma Nym. Isso incluiu componentes chave como o crate Coconut, crate zk-nyms (ecash), o protocolo Sphinx, o protocolo Outfox e outros primitivos criptográficos. O código-fonte de todos os esquemas criptográficos, escrito inteiramente em Rust, foi elogiado pela excelente organização, permitindo fácil navegação e análise.
O protocolo Coconut e e-cash foi extensivamente revisado e demonstrou o uso efetivo de mecanismos de cegamento para preservar a privacidade do usuário. Os dois NIZKPs utilizados no protocolo não apresentaram vulnerabilidades exploráveis que permitissem contornar ou enganar o sistema de verificação. Além disso, a seleção de bibliotecas criptográficas subjacentes, particularmente bls12_381, garantiu verificações estritas de pertencimento a grupos e resistência a ataques de subgrupo. Adicionalmente, a geração de aleatoriedade para chaves criptográficas e nonces foi confirmada como utilizando geradores seguros e criptograficamente robustos.
Apesar dessas qualidades, a auditoria também identificou vários problemas classificados como críticos ou de alto risco. Abordamos cada um deles individualmente abaixo.
NYM-01-009 WP5: Desvios de assinatura EC BLS12-381 na biblioteca Coconut (Crítico)
A Cure53 observou que a função verify_partial_blind_signature, destinada a verificar assinaturas cegas parciais durante a emissão de credenciais, poderia ser contornada. No entanto, queremos esclarecer que dentro do protocolo Coconut, a função que verifica o uso de credenciais inclui as verificações necessárias para prevenir esse contorno. Como resultado, dado o design do protocolo, qualquer tentativa de ataque seria malsucedida, pois credenciais falsificadas são detectadas durante a fase de uso. Isso garante que a segurança e integridade do sistema não sejam comprometidas na prática.
Dito isso, reconhecemos que as verificações adicionais sugeridas pela Cure53 poderiam aumentar a robustez dessas funções em outros contextos de uso. Como nosso código é open-source e buscamos fornecer componentes reutilizáveis para a comunidade mais ampla, implementamos as verificações adicionais recomendadas. Isso garante que as funções possam ser utilizadas de forma confiável em outros contextos, mantendo os mais altos padrões de segurança.
NYM-01-014 WP5: Desvio de assinatura parcial no eCash offline (Crítico)
Este problema é semelhante ao descrito acima, mas se aplica ao esquema e-cash em vez do Coconut. Assim como na implementação Coconut, todas as verificações necessárias foram já implementadas durante a fase de uso do protocolo. Isso significa que, na prática, a segurança e integridade do sistema nunca foram colocadas em risco, apesar do problema ter sido classificado como Crítico.
No entanto, assim como no caso do Coconut, implementamos proativamente as verificações de assinatura adicionais recomendadas pela Cure53. Embora essas verificações não fossem necessárias para garantir o fluxo do protocolo existente, elas aumentaram a robustez do código e sua adequação para uso mais amplo. Essa abordagem reforça nosso compromisso em manter altos padrões de segurança, tanto para nosso sistema quanto para a comunidade mais ampla.
NYM-01-033 WP5: Falsificação de assinatura do esquema Pointcheval-Sanders (Crítico)
A Cure53 identificou uma vulnerabilidade em nossa implementação da função sign dentro do esquema de assinatura Pointcheval-Sanders. Especificamente, a vulnerabilidade surge porque, em nossa implementação, o valor aleatório h na tupla de assinatura (h, s) é calculado como um hash dos atributos públicos. Como resultado, se assinarmos apenas atributos públicos, a assinatura seria suscetível a falsificação.
No entanto, é importante enfatizar que essa vulnerabilidade de falsificação de assinatura não apresenta nenhum risco no contexto de como o Coconut e o e-cash são utilizados no NymVPN. Ambos os protocolos dependem de atributos privados por design, utilizando assim o processo de emissão cega para o cálculo de assinaturas. No protocolo de emissão cega, o uso de um compromisso com as mensagens como entrada para a função hash garante que diferentes entradas produzam valores h distintos. Como resultado, a vulnerabilidade só se manifestaria se os protocolos Coconut ou e-cash fossem utilizados apenas com atributos públicos. Portanto, o risco identificado pela Cure53 não se aplica ao nosso sistema, pois os protocolos em uso mitigam inerentemente essa vulnerabilidade.
NYM-01-042 WP5: Agregação defeituosa para assinaturas eCash offline inválidas (Crítico)
Este problema é semelhante aos NYM-01-009 e NYM-01-014, onde a função de agregação standalone para assinaturas poderia produzir uma assinatura inválida sem sinalizar um erro. No entanto, nos protocolos Coconut e e-cash, o processo de verificação rejeita explicitamente qualquer assinatura que resulte de uma agregação inválida. No entanto, em linha com as ações tomadas para os NYM-01-009 e NYM-01-014, implementamos verificações adicionais para garantir que a função de agregação retorne um erro adequado nesses casos.
NYM-01-005 WP5: Ausência de verificação de ponto infinito revela texto simples para ElGamal (Alto)
A implementação atual do Coconut e e-cash não utiliza criptografia ElGamal (nem era utilizada durante a auditoria). Em vez disso, utilizamos compromissos Pedersen mais eficientes, que não apresentam os mesmos riscos. Portanto, o problema relacionado ao ElGamal não representou nenhum risco de segurança em nosso sistema existente. Também removemos agora o crate Coconut e, consequentemente, o esquema ElGamal.
Últimas Palavras
Gostaríamos de agradecer à equipe da Cure53 pela expertise e dedicação durante todo o processo de auditoria. Também apreciamos a colaboração e o profissionalismo demonstrados durante as etapas de planejamento e execução da auditoria. Nosso compromisso contínuo com a segurança permanece uma prioridade máxima, e aguardamos a continuidade das parcerias com especialistas em segurança para manter os mais altos padrões para o nosso ecossistema.