首页 > GameFi > CertiK:Solana跨链桥虫洞事件分析
路安  

CertiK:Solana跨链桥虫洞事件分析

摘要:北京时间2022年2月3日凌晨1点58分,Solana跨链桥项目虫洞(Wormhole)遭受攻击者发起的攻击。黑客绕过了 Solana 上的Wormhole Bridge验证过程,并为自己铸造了Wor

漏洞2022年2月3日凌晨1点58分,北京时间Solana跨链桥项目虫洞(Wormhole)攻击者发起的攻击。黑客绕过 Solana 上的Wormhole Bridge验证过程,并为自己铸造Wormhole ETH (wETH)。

攻击者事件中,攻击者注入了欺骗性 sysvar 账户绕过系统验证步骤,成功生成恶意消息,指定铸造12万个wETH。最后,攻击者用恶意的消息调用了complete_wrapped成功铸造了12万个函数wETH,价值约3.2亿美元。

事件造成的巨大损失使其成为DeFi历史上第二大黑客攻击事件。

虫洞(Wormhole)简介

虫洞(Wormhole),又称爱因斯坦-罗森桥也被翻译成蛀洞。它是连接宇宙中两个不同时空的狭窄隧道。

言归正传,其实Solana跨链桥虫洞协议(Wormhole Protocal),科学甚至科幻小说中都有相同的含义和定位。

虫洞可以连接两条不同时空的隧道,从而节省传输的时间Solana跨链桥虫洞协议(Wormhole Protocal),它是一座连接以太坊的桥。简单地说,它帮助我们节省交易时间和周期,避免以太坊拥堵Solana快速交易。

利用交易漏洞

铸币12万枚Wormhole ETH:

https://solscan.io/tx/2zCz2GgSoSS68eNJENWrYB48dMM1zmH8SZkgYneVDv2G4gRsVfwu5rNXtK5BKFxn7fSqX9BvrBc1rdPAeBEcD6Es

将代币转移到以太坊:

https://etherscan.io/address/0x629e7da20197a5429d30da36e77d06cdf796b71a#internaltx

漏洞攻击过程

第一步:攻击者使用假 sysvar account调用“verify_signatures”函数:https://solscan.io/tx/25Zu1L2Q9uk998d5GMnX43t9u9eVBKvbVtgHndkc2GmUFed8Pu73LGW6hiDsmGXHykKUTLkvUdh4yXPdL3Jo4wVS①以伪造的“sysvar account作为参数调用verify_signatures”函数:

漏洞

相比之下,以下截图是以真实的“sysvar account作为参数verify_signatures”函数:

漏洞②“verify_signatures”函数从 sysvar (L92) 加载当前指令。

漏洞③然而,函数load_current_index无法验证sysvar account是否真的是system sysvar。因为从从。sysvar当前检索到的指令(L92)是由攻击者控制的,因此它可以顺利通过以下验证过程。

第二步:攻击者随后使用上一步验证的签名调用post_vaa函数,并创建恶意新闻账户,声明要铸造12万个wETH:https://solscan.io/tx/2SohoVoPDSdzgsGCgKQPByKQkLAXHrYmvtE7EEqwKi3qUBTGDDJ7DcfYS7YJC2f8xwKVVa6SFUpH5MZ5xcyn1BCK

漏洞① Account2 是通过“verify_signatures签名集是指令生成的。② Account3 是将在“complete_wrapped函数中使用的信息帐户。

第三步:攻击者调用complete_wrapped函数读取恶意信息账户中的数据,铸造 12万wETH:https://solscan.io/tx/2zCz2GgSoSS68eNJENWrYB48dMM1zmH8SZkgYneVDv2G4gRsVfwu5rNXtK5BKFxn7fSqX9BvrBc1rdPAeBEcD6Es

漏洞①Account3 是“post_vaa函数生成的信息账户。

②Account6 是“收件人”地址,用于接收铸造的Wormhole ETH。③ Account9 是 Wormhole ETH 铸币机构,是 PDA(程序衍生地址)。这就是为什么攻击者在签名验证后可以直接铸造代币。

第四步:部分铸造 wETH 转移到以太坊,其余转移到 USDC 和 SOL:

https://solscan.io/tx/j3jUDG43di8Dsg7Q3jQhstamtBovu1GLqnDJ7yNvM3r4pnK9e7uqgt9uBobCjT5S1BKhZZFQNQwDxypEYqLknechttps://solscan.io/tx/5UaqPus91wvAzKNve6L8YAHsESomZQ7GWi37gPFyzTHcXNMZA641bb8m8txo7bS7A5cAnzKDKYyiKcQC8GgDcAufhttps://solscan.io/tx/3AugXqrXunBa96YfqENhPBiWZWpnSnJdqAHS64qcHTVU9KtfGon8cN9cUuXsDmBobBBXjYUtuRxnYxgERS42nh6Ghttps://solscan.io/tx/2SndtH3tU4j6v14HJzEde3d3dnpdHqTPn4VnvhTj4zKLo26H5kmtCwjn2nANfjXNVbmFsyEGtD4Jte25azsPwaRk

合同漏洞分析

这个漏洞的根本原因是验证签名过程(verify_signatures)程序中使用了一个Solana更新至1.8.0时被废弃load_current_index函数。该函数不会验证输入sysvar account是否真的是system sysvar攻击者可以借此机会伪造这个关键账户。

漏洞

为了防止将来出现这样的问题,所有使用函数的账户都必须进行检查和验证。特别是在这种情况下,由于部分检查过程依赖于外部呼叫,外部呼叫的可靠性被过度信任,导致风险。

总结

目前,Wormhole该团队已修复漏洞并恢复网络。CertiK对开发者提出以下建议:

当开发人员使用外部依赖函数时,他们需要对该函数有足够的了解。随时关注外部依赖代码库的重要更新,并在有重大版本变化时及时调整自己的代码库。当代码版本更新时,还需要及时进行全面审计,并及时将审计代码更新到已部署的链代码。

农历破五即将来临。我希望你能破五穷。同时,我们也希望每个项目经过严格审计后在线部署,以获得更高的安全性,减少财产损失的可能性。好运从新年开始继续循环;安全从严格审计开始,每个项目都有更好的开始!

迄今为止,CertiK已获得2500家企业客户的认可,保护了3110多亿美元的数字资免损失。欢迎点击CertiK微信官方账号底部对话框,留言免费咨询报价!

Tags:
免责声明
世链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
世链粉丝群:提供最新热点新闻,空投糖果、红包等福利,微信:juu3644。