Ensimmäiset kaksi tunnettua hyväksikäyttöä live-ZK-piirejä vastaan tapahtuivat juuri, eivätkä ne olleet hienovaraisia rajoitettuja bugeja. He olivat Groth16:n varmennustekijöitä, jotka oli otettu käyttöön ilman luotetun asennusseremonian suorittamista. Toinen oli valkohattu, joka pelastettiin ~1,5 miljoonalla, toinen tyhjennettiin 5 ETH:llä. 🧵
Molemmat protokollat käyttivät Circom + snarkjs:ää, joka on yleisin pino Groth16:n käyttöönotoihin. Se bugi? He ohittivat luotetun järjestelmän vaiheen 2: piirikohtaisen panostusvaiheen. Ilman sitä vahvistusavaimen γ- ja δ-parametrit asetetaan samaan arvoon: G2-generaattorit
Miksi γ = δ rikkoo kaiken? Groth16:n vahvistustarkistukset: e(-A, B) · e(α, β) · e(vk_x, γ) · e(C, δ) = 1 Kun γ = δ, hyökkääjä voi asettaa C = -vk_x kumoamaan molemmat termit ja asettaa A = α, B = β kumoamaan loput. Yhtälö muuttuu 1 · 1 = 1. Todistajia ei tarvita.
Foom-protokolla (~$1,4M) oli arpajais-dApp Basessa ja Ethereumissa. Whitehat-pelastus @duha_real:n ja toisen itsenäisen whitehatin toimesta tyhjensi sopimukset ennen kuin pahantahtoinen toimija ehti ehtiä, silmukoimalla väärennettyjä todisteita saadakseen 99,97–99,99 % tokeneista.
Veil Protocol (~5 000 dollaria) oli Tornado Cash -haarukka tukikohdassa. Hyökkääjä tyhjensi koko poolin yhdellä tapahtumalla, 29 väärennettyä nostoa käyttäen näennäisiä nullifikaattoreita kuten 0xdead0000, jolloin poolin koko 2,9 ETH saldo poistettiin.
Tämä on snarkjsin toimintaa suunnitellusti. Kun käytät groth16-asetusta, se alustaa γ ja δ G2-generaattorille paikkamerkkinä. Sinulta odotetaan zkey contry -toimintoa satunnaistamaan δ. Jos ohitat tämän vaiheen, varmistajasi hyväksyy kaikki todisteet.
Pelottava osa: tämä ei ollut syvä kryptografinen vika tai hienovarainen piirivirhe. Kyseessä oli sijoitusvirhe: yksi komentokomento puuttui. Ja se oli tuotannossa, kun todelliset varat olivat vaarassa.
Johtopäätöksiä: - Tarkista aina käyttöönottoskriptit, ei pelkästään piirikoodi - Tarkista vahvistusavaimet: jos vk_gamma_2 == vk_delta_2, todistuksesi ovat väärennettäviä - Teimme yhteistyötä @DedaubSecurity:n kanssa skannataksemme EVM-ketjuja muiden vaikutuspiirien sopimusten varalta, arvokkaita ei löytynyt, mutta joitakin on olemassa
4,07K