借着Euler黑客事件 聊聊DeFi的安全审计和安全
大的DeFi 协议基本上都经过多轮审计,我们前前后后5次审计费用百万刀级别 大的协议常规审计每年都百万刀,但蓝筹DeFi没哪个没被黑过?这里原因很简单,简单的数学问题 从攻防来看,所有静态审计的输入(安全投入)和输出(发现bug) 都是有限的。
除了常规审计,Euler还用了Certora做形式化验证,这个我们之前也用过,形式化验证能帮助穷尽“已知”路径的覆盖范围,但是无法穷尽“未知的未知”。
DeFi是一个开放系统,对于黑客(攻方)来说,它的输入是无限的,输出也是无限的。假设把安全攻防看成挖矿,你守方用三五台机器算哈希挖矿攻方无数机器时刻在算哈希,只要算对一次就赢了;这个输赢面对比是明显的。静态的安全审计,由于输入输出固定,无法覆盖已知的未知,更无法覆盖未知之未知。
所以出现另一种审计,叫开发式竞争型审计,如Code4rena,审计奖金池固定,但是输入在一定时间内是弹性的,所有人都可以参加,谁发现bug按照严重程度,分奖金,这个方式是让审计师/白帽去卷,可以扩大覆盖面,但总体输入依然固定,远远不够。
最后是完全开放的模式,那就是赏金网络,DeFi里最出名的Immunefy,云集最多DeFi白帽高手的平台,我建议每个DeFi在上面发bounty,亲测效果十分明显。
Immunefy的奖金项目方会给非常高。比如最高已支付的是Warmhole的千万美金(就是被黑了两亿美金的那个bridge,又给敲了一大笔bounty)。 这次出事的Euler也曾放出100w 刀赏金,但依旧没发现这次的漏洞。 赏金模式在输入输出上也是开放式的,这个类似于黑客的攻击模式。
但两者激励模式很大区别。 假如把两者当成是抽奖,同样1000w 奖金池,赏金模式奖金一般都会在10w-30w刀封顶,黑客模式是100%奖金全拿走。这两种模式,同等投入,同样中奖概率,假设没有犯罪成本,毫无疑问黑客池输入/输出会跑赢。 赏金模式就算加到10%,也跑不赢黑客池,除非把犯罪成本加入等式,有人建议把赏金比例和TVL挂钩,比如10%,是否会激励更多黑客转白帽?
首先,没哪个defi协议能支付10% TVL的赏金,其次,遇到真黑客,他大概率还是愿意一黑到底而不会止步要10%。 DeFi的安全更复杂问题在于除了代码层面,还有可组合风险(如这次Euler波及多个整合协议)攻击面上,DeFi本身随着整合增加,攻击面是四维增长的,定期静态安全审计加长期赏金,也无法覆盖不断扩大的攻击面 DeFi安全是无限游戏,唯一靠谱的是在协议上减少外部依赖(资产/oracle/第三方协议),最小化攻击面,尽量待在“自己的舒适区”,不乱做扩展。对开放系统来说,安全代价就是自由的代价