MoleEdu|安全合规之周 - 区块链安全
2023-03-10 12:53
Moledao
2023-03-10 12:53
订阅此专栏
收藏此文章

Moledao 和 OGBC 联合举办的 Web3 系列课已经进入尾声啦,本周是第七周,开发者项目实战之周,会给大家带来 Solidity 语言教程和 NFT 智能合约教程。我们的课程笔记也进入到了第四周,Web3 安全合规之周。

今天带大家回顾 Bryce 导师的”区块链安全“课程!课程录屏已经上传 Moledao 的 Bilibili。

第四周:Web3 安全合规之周 | 区块链安全
www.bilibili.com/video/BV1bY411Y7gp/?spm_id_from=333.999.0.0&vd_source=8497d6b38e91681ca1de4fd1c2530a4c

导师介绍

Bryce 导师有 8 年网络安全经验,曾就职于大型互联网和物联网公司安全实验室,擅长区块链安全、人工智能安全、物联网安全等领域。目前就职于 Beosin,主要负责区块链链平台和智能合约安全研究。他期待与 web3 同行者一起守护生态安全。



学习收获

01 web3 生态安全态势



1.1 2022 年攻击事件概况

根据“2022 全球 web3 区块链安全态势报告”统计,2022 年的重大攻击事件总计 167 起,总损失 36 亿美元,相比 2021 年,总损失增长了 47%。如下图“2022 季度损失统计图”显示,第一和第四季度的总损失较高。

1.2 被攻击的项目类型

被攻击的项目类型主要分为:跨链桥、DeFi、中心化交易所、链平台、钱包、NFT。其中 DeFi 主要包含稳定币、交易借贷、资产管理、基础设施和保险等项目。2022 年全年发生了 12 次跨链桥安全事件,损失接近 18.9 亿美元,是所有项目类型中损失最多的。在跨链桥安全事件中,单次损失超过 1 亿美元的有五起,攻击手法包括社会工程学、私钥泄露、链平台或合约漏洞等。

在全年的 167 起主要攻击事件中,被攻击次数最多的是 DeFi,共发生了 113 次,占比达到了 67.6%。DeFi 的总损失排名第二,仅次于跨链桥,接近 9.5 亿美元。与用户相关或涉及用户最广的是交易所和钱包类的安全事件,共发生了 21 起,损失金额达到了 6 亿美元。

1.3 主要攻击手法

攻击手法可归纳为漏洞利用、社会工程学、私钥泄露、闪电贷、价格操控、虚拟机漏洞、交易重放和钓鱼等。其中“漏洞利用”是全年频率最高并且损失最多的一个攻击方式,去年总共发生有 87 起,造成的总损失达到了 14.58 亿美元。其次是社会工程学攻击,去年仅有一起,就是 Ronin 事件,事件造成了 6.24 亿美元的损失。私钥泄露也占了重要比例,总共 19 起泄露事件,损失总计达到了 4.3 亿美元;总共有 8 起单次损失金额超过千万美元。据调查结果,团队成员或离职前团队成员盗取私钥的情况较为普遍,因此提醒项目方要加强团队的安全管理和运营安全;同时在使用第三方工具时进行专业的安全评估。


02 链平台安全



针对链平台的攻击一般分为两类,一种是针对共识层面的攻击,另一种则是网络层面的攻击。在共识层面上,最常见且影响最大的攻击是 51% 算力攻击,这种攻击在链平台上已经发生了很多次。历史上也有很多 51% 攻击的案例,我们可以在下图看到历史上攻击事件的案例。

2.1 51% 算力攻击的原理

在区块链中,目前比较常用的共识算法是 POW 和 POS。比特币一直采用 POW 共识。在这种共识算法中,有两个要注意的点。第一是采用 PoW 共识机制来解决如何获得记账权的问题,第二是采用“最长链共识”解决如何记账的问题。简单来说,如果网络中同时出现了两个版本的区块链,共识算法会促使全网的矿工选择最长的那一条链。“51% 攻击”,其实就是是指攻击者控制全网 50% 以上的算力。

下图展示了攻击是如何发生的:当发生“51% 算力攻击”时,一个恶意的矿工获得了记账权,并打包交易;然而,他可以选择不将交易广播出去,从而导致出现两个版本的区块链。在攻击前,全网矿工认可绿色链作为主链。在攻击后,红色攻击者私自打包了一个区块链,但没有将其广播出去。例如,在第 40 个区块的位置,他花费 100 个比特币购买了一辆汽车。尽管交易得到了大家的共识,但在他私自打包的区块链中并没有记录这个交易。在第 41 个块时,商家已经确认了交易;但攻击者在自己的区块链中没有记录交易。如果他已经控制了超过 51% 的算力,那么他就有更大的机会比其他矿工更快地算出这个区块,并将其添加到链上,就像下图中“攻击后”的情况。因为他拥有更多的算力,所以他出块的概率更高。以至于如果他出的块的比上面的块更多,那么根据最长链的共识,他放出来的这个链就会被当作主链。因为他没有把自己消费的交易打包进去,所以他自己还有 100 个比特币的余额,但事实上,他已经把这辆车开走了,他可以再用这 100 个比特币去购买其他物品。我们也把这种情况称为“双花攻击”。

2.2 其他攻击方式

包括:日蚀攻击、女巫攻击和自私挖矿攻击。

在实际生活中,“女巫攻击”更常见。包括一些恶意的榜单刷票行为,例如一个人可以伪装成多个不同的人去刷票。也包括恶意空投活动,一些人伪装成多个不同的用户或身份,去抢夺空投奖励。有三种规避”女巫攻击“的方法。第一种方式是通过工作量证明身份。第二种可以通过资源检测来找到真实节点与伪造节点之间的差异,以确定是否为女巫节点。第三种是对这些节点进行身份验证,以确保它们可信。

03 智能合约安全



3.1 漏洞利用

代码部署在智能合约上就没有办法修改,因此就吸引了一些攻击者利用合约中的漏洞来获利。也正是因为这样,所以从智能合约里面被盗的资产是没有办法收回的,去追踪也是比较复杂。

“漏洞利用”为全年频率最高、且损失最多的攻击方式。2022 年全年涉及漏洞利用的攻击事件有 87 起,总损失达到了 14.58 亿美元。再按照漏洞类型细分,造成损失最多的前三名分别是验证问题、链平台漏洞和业务逻辑 / 函数设计不当。

下图展示了常见的漏洞类别:

3.2 漏洞利用 - 重入漏洞


3.2.1 漏洞原理

3.2.2 实现攻击的条件

大多数重入漏洞出现在转账场景中。转账有两种情况:向普通钱包用户的 EOA 账户转账,或向合约账户转账。在合约账户转账的情况下,会默认调用受害者的一个 fallback 函数,如果这个函数包含恶意功能,存在安全隐患。

真正要实现重入攻击,必须具备下图中的两个条件:

关于“账本的改变在实际转账后”的调用过程,可参照下图代码:

举例(如下图):攻击者帐户使用 1 个以太币调用 Attacker.beginAttack 函类数将会重复攻击受害者帐户,并将赚取远超其提供以太币的数量。

3.2.3 漏洞修复建议

1. 使用 transfer() 函数:在可能的情况下,将 ether 发送给外部地址时使用 solidity 内置的 transfer() 函数,transfer() 转账时只发送 2300gas,不足以调用另一份合约 ( 即重入发送合约 )。

2. 检查 - 生效 - 交互模式 (checks-effects-interactions):确保状态变量改变发生在 ether 被发送 ( 或者任何外部调用 ) 之前,即 Soliditv 官方推荐的“检查 - 生效 - 交互”模式。

3. 使用互斥锁:添加一个在代码执行过程中锁定合约的状态变量,防止重入调用。


3.2.4 OrionProtocol 被攻击案件分析

事件背景:2 月 3 日,以太坊和 BSC 链上的 OrionProtocol 合约遭到了重入攻击,攻击者获利 300 万美金。Orion 是一种新型的 DeFi 平台,它围绕着流动性聚合器来连接主要的中心化和去中心化的交易所。

下面几个截图展示了攻击发生的过程;导师详细的讲解请参考课程视频回放(从 24 分 30 秒到 33 分):

3.3 智能合约审计

在 2022 年监测到的 167 次主要攻击事件里,经过审计与未经审计的项目比例分别为 51.5% 和 48.5%。在 86 个经过审计的项目里,仍有 39 次攻击事件 (45%) 源自于漏洞利用。建议项目上线之前一定要寻找专业的安全公司进行审计,才能有效地保障资产安全。


04 智能合约安全



4.1 钓鱼攻击

根据统计数据,常见的钓鱼攻击分为以下四类:

第一种:伪造官网引诱用户进行转账。

第二种:假空头诱骗用户进行授权。

第三种:诱骗用户去填写助记词。

第四种:虚假的 discord。

钓鱼攻击的入口如下面两张截图,希望大家注意防范。

4.2 私钥安全

私钥安全分“项目方”和“用户”两个类别。

4.2.1 项目方私钥安全

项目方私钥泄露造成的损失一般都是非常大的。下图是几次重大泄露事件总结:

4.2.2 用户私钥安全

1. 钓鱼网站 ( 诱骗用户填写助记词 )

2. 假 App 钱包:利用搜索引擎伪造钱包官网。向受害者发送邮件、海报等,引诱用户下载假钱包。通过社工的方式,首先获取受害者信任,然后再诱骗其下载假 APP 钱包。

3. 木马:这种攻击主要是通过 Discord 邀请用户参与新的游戏项目内测,打着 “给予优惠” 等幌子,或是通过群内私聊等方式发一个程序让你下载,一旦你在电脑上运行,它会扫描你电脑上的文件,然后筛选包含 Wallet 等关键词的文件上传到攻击者服务器,达到盗取加密货币的目的。


4.3 安全防护措施

4.3.1 钱包安全

用户可通过以下四种措施,来保障自己的钱包安全。

4.3.2 私钥安全

在存储私钥的时候,做到以下三点:

1. 不使用剪贴板保存私钥

2. 助记词不使用云服务保存私钥

3. 助记词警惕供应链攻击

4.3.3 钓鱼防护

避免钓鱼攻击,有以下三种措施:

1. 社交媒体交叉信息验证

2. 使用防钓鱼插件

3. 谨慎点击不明链接


05 金融安全



5.1 Rug Pull 骗局

Rug Pull 骗局是指恶意的项目方在开盘后收集到资金后就立刻跑路的行为。下图是 2022 年月度 Rug Pull 骗局造成的损失金额。

2022 年全年共发生 Rug Pull 事件 243 起,总涉及及金额达到了 4.25 亿美元。243 起 Rug Pull 事件中,涉及金额在千万美元以上的共 8 个项目。210 个项目 ( 约 86.4%) 跑路金额集中在几千至几十万美元区区间。

以下几点提示,可以帮助大家识别 Rug Pull 骗局:

1. Rug Pull 项目大多无法通过审计,因为要隐藏后门,而审计公司很容易发现。审计公司不会为这样的项目提供合格的审计报告。

2. Rug Pull 项目的社交媒体信息通常不完善,统计显示,至少有一半的 Rug Pull 项目缺乏完善的官网、推特、Telegram 或 Discord 群组。

3. 项目不规范:抄袭其他项目的白皮书,语法错误等等。

4. 蹭热点的项目,这些项目基本上都是在 3 个月内卷到资金后就跑路。


5.2 钞能力攻击

顾名思义,攻击者要有很高的资金储配,不然无法发动攻击。下图是去年去中心化交易平台 Mango 被黑客攻击的过程:

5.3 其他骗局:

5.3.1 老鼠仓

“老鼠仓”是金融行业的一个很常见的民间俗语,指的就是涉嫌内幕交易的行为。基本表现为:在利好消息出来之前,那些掌握内部消息的买家会低价购入大量代币,等利好一兑现就立马砸盘走人。

据相关数据分析,某个加密钱包在币安宣布即将上架 Gnosis 币的前 6 天购买了价值 36 万美元的 Gnosis 币,之后在安宣布 Gnosis 币即将上线的四分钟后,这个钱包开始抛售 Gnosis 币,净赚了大概 14 万美元,回报率约为 40%。

5.3.2 “貔貅盘”

“貔貅”是中国古代传说中一种神兽,有嘴无肛,能吞万物 ( 大多为黄金珠宝 ) 且不泄,只进不出,所以被形容只能买进而无法卖出的某种数字货币。

可以从下面四个角度进行鉴别:代码是否开源;是否经过审计;交易数据;分析社交媒体。

文章中的大部分统计数据,都来自由 Beosin 等机构联合出品的【2022 年全球 Web3 区块链安全态势报告及加密行业监管政策总结】。长按下方二维码,获取完整报告。

06 鸣谢



感谢以下组织对本次公益课程的支持!

赞助方支持:

One Global Blockchain Centre (OGBC)

https://www.ogbc.com/

OGBC 是 Web 3.0 的领先孵化器,他们与新兴的加密货币初创公司合作,建立未来的基础设施。通过利用 OGBC 在加密货币领域的专业知识、网络和资源,公司和项目可以充分发挥其潜力,努力为区块链行业越来越多的用户开发创新和有价值的解决方案。

其它合作方支持:

07 关于 Moledao



MoleDAO是一个区块链开发者社区,供所有区块链爱好者了解区块链的最新动态,并在经验丰富的区块链先驱者和创新者的帮助下成长,为构建 Web 3 生态系统贡献更多创新想法。

我们旨在通过搭建区块链爱好者交流社区、提供区块链项目支持、举办全球黑客松系列活动、帮助项目人才匹配、提供项目赞助和指导,将区块链理念带给每个人并发展区块链生态系统。

我们的愿景是成为一个精心策划的一站式区块链生态系统。无论你是区块链爱好者、区块链开发者、机构还是投资者,都可以在 Moledao 找到适合自己的定位。

更多内容请查看👉:Moledao 是谁?在做什么?你能在这儿收获什么

加入我们

我们欢迎所有区块链爱好者加入 Moledao 并共建 Web3.0 生态。

官方所有链接⬇️

https://linktr.ee/moledao

Discord 社区⬇️

https://discord.gg/khR98dRPum

微信群⬇️

添加微信申请入群:WeChat ID: Phoebe_Junbo

【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

相关Wiki
Moledao
数据请求中
查看更多

推荐专栏

数据请求中
在 App 打开