IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 区块链 -> CertiK:Solana跨链桥虫洞事件分析 -> 正文阅读

[区块链]CertiK:Solana跨链桥虫洞事件分析

2022年2月3日凌晨,Solana跨链桥项目虫洞(Wormhole)遭受攻击。攻击者成功铸造了12万枚wETH,价值约3.2亿美元。

黑客绕过了 Solana 上的Wormhole Bridge验证过程,并为自己铸造了Wormhole ETH (wETH)。

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

该事件造成的损失金额之大,令其成为了DeFi史上第二大黑客攻击事件。

虫洞(Wormhole)简介

虫洞(Wormhole),又称爱因斯坦-罗森桥,也译作蛀孔。是宇宙中可能存在的连接两个不同时空的狭窄隧道。

言归正传,其实Solana的跨链桥虫洞协议(Wormhole Protocal),确有虫洞在科学乃至科幻小说里相同的意思和定位。

漏洞相关利用交易

铸币12万枚Wormhole ETH:?

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

将代币转到以太坊:?

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

a的跨链桥虫洞协议(Wormhole Protocal),是连接以太坊的桥。简单来说,它帮助我们节约了交易的时间和周期,避开以太坊的拥堵从而体验到Solana的快速交易。

漏洞攻击流程

步骤一:攻击者使用假 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”函数生成的消息账户。

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

步骤四:部分铸造的 wETH 被转移到以太坊,其余的被交换到 USDC 和 SOL:

  • https://solscan.io/tx/j3jUDG43di8Dsg7Q3jQhstamtBovu1GLqnDJ7yNvM3r4pnK9e7uqgt9uBobCjT5S1BKhZZFQNQwDxypEYqLknec
  • https://solscan.io/tx/5UaqPus91wvAzKNve6L8YAHsESomZQ7GWi37gPFyzTHcXNMZA641bb8m8txo7bS7A5cAnzKDKYyiKcQC8GgDcAuf
  • https://solscan.io/tx/3AugXqrXunBa96YfqENhPBiWZWpnSnJdqAHS64qcHTVU9KtfGon8cN9cUuXsDmBobBBXjYUtuRxnYxgERS42nh6G
  • https://solscan.io/tx/2SndtH3tU4j6v14HJzEde3d3dnpdHqTPn4VnvhTj4zKLo26H5kmtCwjn2nANfjXNVbmFsyEGtD4Jte25azsPwaRk

合约漏洞分析

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

为了防止将来此类问题的发生,必须检查并验证函数使用的所有帐户。特别是在该案例中,由于部分检查过程依赖于外部调用,而外部调用的可靠性被过度信任,从而引入了风险。

总结

目前,Wormhole团队已修复漏洞并已恢复网络。在此,CertiK给开发者提出如下几点建议:

  • 开发者在使用外部依赖的函数时,需要对这个函数有足够的了解。
  • 随时关注外部依赖代码库的重要更新,在有重大版本变动时及时对自己的代码库做出相应的调整
  • 当代码版本更新时,也需及时进行全面审计,并将审计后的代码及时更新到已部署上链的代码中。

  区块链 最新文章
盘点具备盈利潜力的几大加密板块,以及潜在
阅读笔记|让区块空间成为商品,打造Web3云
区块链1.0-比特币的数据结构
Team Finance被黑分析|黑客自建Token“瞒天
区块链≠绿色?波卡或成 Web3“生态环保”标
期货从入门到高深之手动交易系列D1课
以太坊基础---区块验证
进入以太坊合并的五个数字
经典同态加密算法Paillier解读 - 原理、实现
IPFS/Filecoin学习知识科普(四)
上一篇文章      下一篇文章      查看所有文章
加:2022-02-09 20:45:08  更:2022-02-09 20:45:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 22:44:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码