Populaire onderwerpen
#
Bonk Eco continues to show strength amid $USELESS rally
#
Pump.fun to raise $1B token sale, traders speculating on airdrop
De eerste twee bekende exploits tegen live ZK-circuits hebben net plaatsgevonden, en het waren geen subtiele ondergeconstrueerde bugs.
Het waren Groth16-verifiers die zijn ingezet zonder de vertrouwde setup-ceremonie te voltooien. De ene werd door een white-hat gered voor ~$1,5M, de andere is leeggetrokken voor 5 ETH.
🧵
Beide protocollen gebruikten Circom + snarkjs, de meest voorkomende stack voor Groth16-implementaties.
De bug? Ze hebben Fase 2 van de vertrouwde setup overgeslagen: de circuit-specifieke bijdrage stap.
Zonder dit zijn de γ- en δ-parameters van de verificatiesleutel beide ingesteld op dezelfde waarde: de G2 gens
Waarom breekt γ = δ alles?
Groth16 verificatiecontroles:
e(-A, B) · e(α, β) · e(vk_x, γ) · e(C, δ) = 1
Wanneer γ = δ, kan een aanvaller C = -vk_x instellen om beide termen te annuleren, en vervolgens A = α, B = β instellen om de rest te annuleren. De vergelijking wordt 1 · 1 = 1. Geen getuige nodig.
Het Foom Protocol (~$1,4M) was een loterij dApp op Base en Ethereum. Een whitehat redding door @duha_real en een andere onafhankelijke whitehat heeft de contracten geleegd voordat een kwaadwillende actor dat kon doen, door vervalste bewijzen te gebruiken om 99,97–99,99% van de tokens te extraheren.
Het Veil Protocol (~$5K) was een fork van Tornado Cash op Base. Een aanvaller heeft de hele pool in één transactie leeggehaald, 29 vervalste opnames met dummy nullifiers zoals 0xdead0000, waarbij het volledige saldo van 2,9 ETH uit de pool werd gehaald.
Dit is snarkjs dat werkt zoals bedoeld. Wanneer je groth16 setup uitvoert, initialiseert het γ en δ naar de G2-generator als een tijdelijke aanduiding. Je wordt verwacht zkey contribute uit te voeren om δ te randomiseren. Sla die stap over, en je verifier accepteert elk bewijs.
Het enge deel: dit was geen diep cryptografisch probleem of een subtiele circuitfout. Het was een implementatiefout: het ontbreken van één CLI-opdracht. En het bleef in productie met echte fondsen op het spel.
belangrijkste punten:
- Controleer altijd de implementatiescripts, niet alleen de circuitcode
- Controleer je verificatiesleutels: als vk_gamma_2 == vk_delta_2, zijn je bewijzen vervalsbaar
- We hebben samengewerkt met @DedaubSecurity om EVM-ketens te scannen op andere getroffen contracten, er zijn geen contracten met hoge waarde gevonden, maar sommige bestaan.
4,08K
Boven
Positie
Favorieten
