De to første kjente utnyttelsene mot levende ZK-kretser skjedde nettopp, og de var ikke subtile, underbegrensede feil. De var Groth16-verifikatorer utplassert uten å fullføre den pålitelige oppsettsseremonien. Den ene var white-hat reddet for ~1,5 millioner dollar, den andre tappet for 5 ETH. 🧵
Begge protokollene brukte Circom + snarkjs, den vanligste stakken for Groth16-distribusjoner. Feilen? De hoppet over fase 2 av den pålitelige oppsettet: det kretsspesifikke bidragssteget. Uten den settes verifiseringsnøkkelens γ og δ parametere til samme verdi: G2-generatorene
Hvorfor ødelegger γ = δ alt? Groth16-verifiseringssjekker: e(-A, B) · e(α, β) · e(vk_x, γ) · e(C, δ) = 1 Når γ = δ, kan en angriper sette C = -vk_x for å kansellere begge leddene, deretter sette A = α, B = β for å kansellere resten. Ligningen blir 1 · 1 = 1. Ingen vitne trengs.
Foom-protokollen (~1,4 millioner dollar) var en lotteri-dApp på Base og Ethereum. En whitehat-redning utført av @duha_real og en annen uavhengig whitehat tappet kontraktene før en ondsinnet aktør rakk å gjøre det, og de løkket forfalskede bevis for å hente ut 99,97–99,99 % av tokenene.
Veil-protokollen (~5 000 dollar) var en Tornado Cash-fork på Base. En angriper tømte hele poolen i én transaksjon, 29 forfalskede uttak ved hjelp av dummy-nullifikatorer som 0xdead0000, og hentet ut poolens fulle 2,9 ETH-saldo.
Dette er snarkjs som fungerer som planlagt. Når du kjører Groth16-oppsettet, initialiserer det γ og δ til G2-generatoren som en midlertidig løsning. Du forventes å kjøre zkey contribute for å randomisere δ. Hopp over det steget, og verifikatoren din godtar alle bevis.
Det skumle: dette var ikke en dyp kryptografisk feil eller en subtil feil i kretsen. Det var en utrullingsfeil: å mangle én CLI-kommando. Og den sto i produksjon med reelle midler i fare.
Konklusjoner: - Gjennomgå alltid distribusjonsskript, ikke bare kretskode - Sjekk verifiseringsnøklene dine: hvis vk_gamma_2 == vk_delta_2, er bevisene dine forfalskbare - Vi samarbeidet med @DedaubSecurity for å skanne EVM-kjeder etter andre berørte kontrakter, ingen høyt verdsatte ble funnet, men noen finnes
4,11K