2022年自年初至今,仅5次的跨链桥攻击就导致了13.17亿美元的损失——这个数字是2022年Web3.0行业因黑客、欺诈、漏洞等事件造成总资产损失金额的57%。
之所以跨链桥攻击的损失如此巨大,是因其本身的固有安全漏洞及整个领域缺乏防御攻击专业意识和相关理论知识。
规模位于前三的跨链桥攻击事件分别为:Ronin Network,造成6.24亿美元的损失;Solana跨链桥项目虫洞(Wormhole),造成3.26亿美元的损失;Nomad,造成1.9亿美元的损失。
本文将通过分析今年发生的这5起尤其是具有代表性的Nomad Bridge攻击事件,与大家探讨跨链桥的安全问题及解决方式。
跨链桥安全
在分析这几起攻击事件前,我们需要明确一下跨链桥存在的固有安全问题。
V神Vitalik Buterin曾在Reddit上写道,因为51%攻击的影响,他对跨链应用持悲观态度。然而除此之外,还有更多需要考虑的其他问题。
在2022年7月22日发布的一个推特视频中(https://twitter.com/nomadxyz_/status/1550525582714097664),Nomad的创始人James Prestwich解释了为何行业普遍在跨链应用建立安全模型方面缺乏专业知识,以及为何获取这些标准的专业知识需要花费一年的时间。
对于个人用户来说,很难将资产从一个区块链转移到另一个区块链,因此必须通过跨链桥来实现这一操作。跨链桥协议的原理是:用户在A链将代币存入,随后在B链上收到债务代币。一旦B链的债务代币被销毁,则A链存储的代币就会被释放。
为了实现这一功能,跨链桥需要实现这几个功能:保管用户存入的代币,向用户释放债务代币,以及在不同链之间发送消息的预言机。这使得跨链桥在安全方面更加脆弱——黑客可以下手的地方实在太多了。
条条大路通跨链桥,对黑客来说,又怎么能轻易拒绝这种快速暴富的攻击渠道?攻击造成的后果并不只是存款损失,一旦跨链桥产生漏洞或遭到攻击,整个跨链桥的代币将很可能失去所有价值。
Ronin Network
Ronin Network漏洞是有史以来最大的DeFi漏洞。
3月底,CertiK审计团队监测到NFT游戏Axie Infinity侧链Ronin Network遭到攻击,损失价值约6.24亿美元的17.36万枚ETH以及2550万枚USDC。
Ronin Network需要验证九个验证节点中的五个签名。而攻击者黑了4个Sky Mavis的私钥,制造了5个合法的签名,即:4个Sky Mavis验证器和1个Axie DAO运行的第三方验证器产生的签名。
这导致5个验证器节点被破坏,高级鱼叉式网络钓鱼攻击是造成这一情况的罪魁祸首。
Solana跨链桥项目虫洞(Wormhole)
北京时间2022年2月3日凌晨1点58分,CertiK审计团队监测到Solana跨链桥项目虫洞(Wormhole)遭到攻击。
此次事件中,攻击者通过注入一个欺骗性的sysvar账户绕过了系统验证步骤,并成功生成了一条恶意“消息”,指定要铸造12万枚wETH。最后,攻击者通过使用恶意“消息”调用了“complete_wrapped”函数,成功铸造了12万枚wETH,价值约3.26亿美元。
铸币两分钟后,攻击者将1万枚ETH桥接到以太坊链上,约20分钟后,以太坊链上又产生了8万枚ETH的交易。时至今日,这些资金仍在攻击者的钱包里。
该事件造成的损失金额之大,令其成为了跨链桥史上第二大黑客攻击事件。
HarmonyBridge
北京时间2022年6月23日19:06:46,CertiK审计团队监测到Harmony链和以太坊之间的跨链桥经历了多次恶意攻击。
CertiK团队安全专家分析,此次攻击事件可能源于黑客掌握了owner的私钥——攻击者控制MultiSigWallet的所有者直接调用confirmTransaction()从Harmony的跨链桥上转移大量代币,导致Harmony链上价值约9700万美元的资产被盗,该笔资金后被转移至Tornado Cash。
这起攻击事件涉及到了12笔价值约5万美元到4120万美元以上的交易及3个攻击地址,涉及到的代币包括ETH、USDC、WBTC、USDT、DAI、BUSD、AAG、FXS、SUSHI、AAVE、WETH和FRAX。
QubitBridge
发生于年初的Qubit攻击事件也是一个典型的跨链桥漏洞事件。
2022年1月27日,CertiK审计团队监测到Qubit遭到攻击,导致了约8000万美元的损失。
攻击者调用了QBridge合约,在没有提供任何加密货币的情况下使bridge合约产生了攻击者已存款的虚假时间证明。
ETH和ERC-20的存款共享相同的事件证明,因此允许攻击者调用该函数利用不存在的ERC20存款事实生成虚假的ETH存款事件证明,并以此在另一条链上提取ETH。因此,攻击者在没有向合约发送任何代币的情况下通过了QBridgeHandler证明,并在交叉链上铸造了大约77,162个qxETH。黑客随后将盗取的资金存入了Tornado Cash。
Nomad Bridge
北京时间2022年8月2日,CertiK安全团队监测到Nomad Bridge遭受攻击,导致了价值约1.9亿美元的损失。
合约的问题在于在initialize() 函数被调用的时候,“committedRoot” 被设成了0x00地址。因此,攻击者可以通过消息的验证,将在桥合约中的代币转移。锁仓总价值由1.9亿美元骤降为1.2万美元——这实质上使得攻击者可以在A链上存入1ETH而在B链上收到100ETH。
这个漏洞的神奇之处在于,看起来好像没有任何一个直接攻击者。但至少有41个钱包参与了此次攻击,我们可以认为它是Web3.0世界第一个「群体作案」。也许正是因为这个原因,攻击者可以轻易地从桥上提取资金。
第一笔可疑交易发生在8月2日凌晨5:32,100wBTC(价值约220万美元)被转移到0x56d8......我们可以观察到代币从这里开始持续疯狂转移。
这样的漏洞也在吸引着如Rari Capital攻击者这样的以往Web3.0黑客。
另外有个有意思的地方是,还有个恶意者试图对这起事件的黑客进行网络钓鱼攻击,ta持有ENS nomadexploiter.eth的EOA向持黑客EOA发送了链上信息,在8月2日注册冒充Nomad与黑客进行谈判:
Nomad在推特上发布声明称这不是他们干的
写在最后
这些攻击事件的漏洞在持续警醒我们:跨链桥漏洞所能造成的破坏性极其巨大。
Web3.0世界目前急需更安全和更广泛的跨链应用。未来同类性质的漏洞可能会出现的越来越多、越来越频繁。
我们可以尽力而为的至少是确保项目代码经过了完备的测试和安全审计,这将大幅提高面对高破坏性黑客攻击的抵御能力。