Os dois primeiros exploits conhecidos contra circuitos ZK ao vivo simplesmente aconteceram, e não foram bugs sutis e subcontidos. Eles foram verificadores Groth16 implantados sem completar a cerimônia de configuração confiável. Um foi resgatado por $1,5 milhão, o outro drenado por 5 ETH. 🧵
Ambos os protocolos usavam Circom + snarkjs, a pilha mais comum para implantações do Groth16. O bug? Eles pularam a Fase 2 da configuração confiável: a etapa de contribuição específica para circuito. Sem ele, os parâmetros γ e δ da chave de verificação são definidos para o mesmo valor: os geradores G2
Por que γ = δ quebra tudo? Verificações do Groth16: e(-A, B) · e(α, β) · e(vk_x, γ) · e(C, δ) = 1 Quando γ = δ, um atacante pode definir C = -vk_x para cancelar ambos os termos, então definir A = α, B = β para cancelar o restante. A equação torna-se 1 · 1 = 1. Não precisa de testemunha.
O Protocolo Foom (~$1,4 milhão) era um dApp de loteria na Base e Ethereum. Um resgate whitehat por @duha_real e outro whitehat independente drenou os contratos antes que um ator malicioso pudesse, repetindo provas falsificadas para extrair 99,97–99,99% dos tokens.
O Protocolo Véu (~$5K) era um fork do Tornado Cash na Base. Um atacante drenou todo o pool em uma única transação, 29 saques falsificados usando anuladores fictícios como 0xdead0000, extraindo o saldo total de 2,9 ETH do pool.
Isso é sarcasmo funcionando como foi planejado. Quando você executa o groth16 setup, ele inicializa γ e δ para o gerador G2 como um marcador de lugar. Espera-se que você execute o zkey contribute para randomizar δ. Pule essa etapa, e seu verificador aceita qualquer prova.
A parte assustadora: isso não era uma falha criptográfica profunda nem um bug sutil de circuito. Foi um erro de implantação: faltou um comando CLI. E ficou em produção com fundos reais em risco.
Conclusão: - Sempre revisar scripts de implantação, não apenas código de circuito - Verifique suas chaves de verificação: se vk_gamma_2 == vk_delta_2, suas provas podem ser falsificadas - Trabalhamos com @DedaubSecurity para escanear cadeias de EVM em busca de outros contratos afetados, nenhum de alto valor foi encontrado, mas alguns existem
4,28K