在区块链和密码学的世界里,零知识证明(ZK,Zero-Knowledge Proofs) 一直被誉为“皇冠上的明珠”。
大家普遍认为,ZK 的技术太高深、数学公式太复杂,黑客根本看不懂,所以极其安全。以至于在过去几年里,智能合约天天被黑客当“提款机”,而 ZK 领域却稳如泰山,从未爆出过被攻击的新闻。
但是,常在河边走,哪有不湿鞋。
就在前不久,ZK 圈子发生了一场大地震——连续两个使用 ZK 技术的项目被黑客攻破,一个损失了 5 个以太坊,另一个高达 150 万美元的资金池险些被洗劫一空!(幸运的是,后者被白帽黑客抢先一步截胡保住了资金)。
你以为黑客是用什么极其高超的数学天才手段破解了 ZK 吗?
错!原因让人大跌眼镜:仅仅是因为程序员在部署项目时,粗心大意漏掉了一个基础步骤,导致给黑客留下了一把“万能钥匙”!

今天,我们看看这场堪称“史诗级乌龙”的攻击到底是怎么发生的!
🧐 1. 什么是 ZK 的“可信设置”?
出事的这两个项目,都使用了一种叫 Groth16 的主流 ZK 技术。
在这个技术里,如果你想让系统正常运行,必须先进行一场极其重要的仪式,叫做**“可信设置(Trusted Setup)”**。
💡 大白话科普时间:
什么是“可信设置”?
想象你要造一个全天下人都打不开的超级保险柜。造这个保险柜的图纸里,有一组绝密的参数(密码学里叫有毒废物)。
为了防止造保险柜的工匠私吞这组参数(也就是私留一把万能钥匙),工匠们发明了一个两步走的流程:
第一步(造锁芯): 找全世界几千个互不认识的人,每个人往锁芯里加一点随机的金属废料(提供随机数)。只要这几千人里有一个人没有偷偷记录他加的废料,这把锁的底层密码就没人能猜透。
第二步(配专属钥匙): 针对你这个特定的项目(比如你家大门),再找几个人,往里面注入特定的参数。这一步极其关键,它会把两根原本一模一样的“弹簧”(在数学上叫 $\gamma$ 和 $\delta$ 参数),打乱成完全不同的形状。
只要这两步做完,把参与者的痕迹全部销毁,这个保险柜(ZK 系统)就坚不可摧了。
🤦♂️ 2. 惊天乌龙:程序员忘了走“第二步”
问题就出在这该死的“第二步”上。
在出事的这两个项目(Foom 彩票和 Veil 隐私池)中,程序员在使用开发工具(snarkjs)时,可能因为嫌麻烦,或者根本不懂背后的逻辑,他们直接跳过了“第二步”!
也就是上面说的,他们没有把那两根一模一样的“弹簧($\gamma$ 和 $\delta$ 参数)”打乱!
这会导致什么灾难性的后果呢?
在 Groth16 技术的数学公式里,系统在验证一个证明(也就是检查你有没有密码)时,会进行非常复杂的交叉比对。那两根“弹簧”的作用,就是用来互相制约的。
因为程序员偷懒没走第二步,导致 $\gamma$ 和 $\delta$ 这两个参数的值,保持了出厂默认的完全一致!
在黑客眼里,这简直就是天堂!
黑客发现这两个参数一样后,利用小学数学里“正负抵消”的原理,直接在数学公式里构造了一个“负数”。
结果,复杂的验证公式在一阵“加减抵消”后,竟然直接变成了“1 = 1”!
这意味着什么?
这意味着黑客不需要提供任何密码、不需要证明自己有钱、不需要任何合法的凭证,只要提交一个空壳申请,系统的保安大爷一看公式是“1=1”,就直接放行,把保险柜里的钱全送给黑客了!
💸 3. 案发现场还原:钱是怎么没的?

让我们来看看这两个惨遭“洗劫”的项目:
惨案一:Foom 协议(资金池 140 万美元)
这是一个开在 Base 和以太坊上的x彩项目。黑客发现这个漏洞后,根本不用买票。他自己写了个脚本,利用漏洞伪造了“我中奖了”的凭证。
因为系统的参数没有打乱($\gamma = \delta$),系统直接认定他中奖了。
幸好,有一群好心的“白帽黑客”一直盯着链上的安全。他们抢在恶意黑客动手前,连续发起了几十次提取操作,把 140 多万美元的资金全部“抢救”到了安全地址,避免了用户的血本无归。
惨案二:Veil 协议(资金池约 5000 美元)
这是一个小型的隐私转账池。攻击者就没那么客气了,他自己写了一个智能合约,连续循环调用了 29 次提款指令。每次伪造一个凭证提走 0.1 个以太坊,一瞬间就把池子里所有的钱(2.9 ETH)全部抽干,扬长而去。
🛡️ 4. 血泪教训:不能盲目迷信“高科技”
这次事件在 2026 年的密码学圈子里引起了巨大的震动。它告诉了我们三个血淋淋的真相:
没有绝对的安全: ZK 零知识证明底层的数学确实无懈可击,但写代码、部署代码的人会犯错!就像你买了一个银行金库的门,但走的时候忘了拔钥匙,门再厚也没用。
简单错误最致命: 我们总以为黑客会用极其高深的技术来破解系统。但实际上,越是高级的系统,往往越容易死在最基础的“配置错误”上(没跑阶段二指令)。
代码审计不能省钱: 很多项目方花大价钱请人审计核心逻辑,却在最后上线的“部署环节”自己瞎搞。现在,顶级的安全公司(如 zkSecurity)已经明确表示:以后的审计,连带你部署上线的操作步骤也要查个底朝天!
💡 结语:技术再牛,也怕“猪队友”。
这次的“丢钥匙”事件,是 Web3 世界给所有 ZK 开发者敲响的第一记响亮警钟。
未来,随着 ZK 技术越来越普及,如何用傻瓜式的工具防止程序员犯这种低级错误,将是整个行业必须跨越的一道坎。
⚠️

【免责声明】本文内容仅为商业模式拆解与技术知识分享,数据均源于网络。绝不构成任何投资或操作建议,亦不对数据真实性承担责任。请大家独立研究,谨慎决策。
🌹 如果您喜欢本篇深度解析,欢迎点赞、关注、留言与转发!您的支持是我们持续输出的最大动力!