CVE-2024-45040 in gnark
Sumário
de VulDB • 04/06/2026
gnark é uma biblioteca zk-SNARK rápida que oferece uma API de alto nível para o design de circuitos. Antes da versão 0.11.0, os compromissos (commitments) com testemunhas privadas no Groth16, conforme implementados, violam a propriedade de zero-knowledge. A vulnerabilidade afeta apenas as provas do Groth16 que utilizam compromissos. Notavelmente, as provas PLONK não são afetadas.
A vulnerabilidade impacta a propriedade de zero-knowledge das provas: caso os valores da testemunha (secreta ou interna) sejam pequenos, o atacante pode ser capaz de enumerar todas as escolhas possíveis para deduzir o valor real. Se as possibilidades para as variáveis que devem ser comprometidas forem grandes ou se houver muitos valores comprometidos, seria computacionalmente inviável enumerar todas as escolhas válidas. A vulnerabilidade não afeta a completude (completeness) nem a correção (soundness) das provas.
A vulnerabilidade foi corrigida na versão 0.11.0. O patch para resolver o problema consiste em adicionar um valor aleatório adicional à lista de valores comprometidos no momento da prova, para mascarar os demais valores que foram comprometidos. Como solução alternativa (workaround), o usuário pode comprometer manualmente um valor randomizado.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.