作者:Dforce Mindao
借着 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/第三方协议),最小化攻击面,尽量待在「自己的舒适区」,不乱做扩展 对开放系统来说,安全代价就是自由的代价。
文章来源于互联网:从Euler黑客事件,漫谈DeFi的安全审计和安全