受Moledao邀请,Cobo安全总监Max近日通过网络为社区成员分享了一堂DeFi安全课。Max为大家回顾了过去一年多Web3行业遭遇的重大安全事件,并着重探讨了这些安全事件发生的原因以及如何规避,总结了常见智能合约的安全漏洞及预防措施,还对项目方和一般用户给出了一些安全建议。在此,我们将Max分享的内容分为两篇发布,供DeFi爱好者收藏。根据慢雾统计,2022年发生了300多起区块链安全事件,总涉及金额达43亿美元。
本文详细讲解以下八个典型案例,这些案例损失金额基本都是大于1亿美元,其中Ankr涉及的金额虽然较小,但也是一个比较典型的案例。
RoninBridge
事件回顾:2022年3月23日,NFT游戏AxieInfinity侧链RoninNetwork表示,早些时候发现,SkyMavis的Ronin验证器节点和AxieDAO验证器节点遭到入侵,导致在两笔交易中桥接了17.36万枚ETH和2550万USD。美国财政部表示,朝鲜黑客组织Lazarus与AxieInfinityRoninNetwork6.25亿美元的黑客事件有关。据媒体引述知情人士透露,黑客通过领英联系了AxieInfinity开发商SkyMavis公司的一名员工,经过几轮面试告知其以高薪被录用。随后该员工下载了以PDF文档呈现的伪造的“Offer”录取信,导致黑客软件渗透到Ronin的系统,从而黑客攻击并接管Ronin网络上九个验证器中的四个,只差一个验证器无法完全控制。随后,黑客又控制了未撤销权限的AxieDAO来实现最终的入侵。朝鲜黑客团体已经存在很长时间,在Web3技术还未盛行的时候,已有多起新闻报道一些银行或大型商业机构遭到入侵。现在,越来越多传统的黑客团体,以及一些国家级势力,已从以往盗取数据和信用卡信息的行为,演变成攻击区块链项目,直接获得实际利益。这次事件的攻击方式非常典型,在传统的安全领域称作APT,即高级持续性威胁。黑客团体一旦确定目标,就会通过社会工程学等方法,先控制目标组织内的一台电脑,作为跳板点,以进一步渗透,最终达成攻击目的。此事件也暴露出了AxieInfinity公司员工安全意识较弱,以及公司内部安全体系存在一些问题。Wormhole
事件回顾:根据Wormhole发布针对该事件的报告中指出,此次事件中Wormhole的漏洞具体是Solana端核心Wormhole合约的签名验证代码存在错误,允许攻击者伪造来自“监护人”的消息来铸造Wormhole包装的ETH,共损失约12万枚ETH。JumpCrypto投入12万枚以太坊以弥补跨链桥Wormhole的被盗损失,支持Wormhole继续发展Wormhole遇到的问题主要是代码层面的,因为它使用了一些废弃的函数。拿以太坊举例,初期版本的Solidity中,有些函数设计不完善,随着后续的更新逐渐被废弃。其他生态中也是一样的情况。因此,建议开发者使用最新版本,以避免出现类似问题。NomadBridge
事件回顾:跨链互操作协议Nomad桥遭受黑客攻击,是由于Nomad桥Replica合约在初始化时可信根被设置为0x0,且在进行可信根修改时并未将旧根失效,导致了攻击者可以构造任意消息对桥进行资金窃取,攻击者能够从攻击中榨取超过1.9亿美元的价值。黑客正是利用该漏洞,找一笔有效交易反复发送构造好的交易数据抽取跨链桥被锁定的资金,从而导致Nomad上锁定的资金被几乎全数盗走。\t\t\t\t\t派盾(PeckShield)监测显示,Nomad被攻击事件中,约41个地址获利约1.52亿美元(占80%),包括约7个MEV机器人(约710万美元)、RariCapital黑客(约340万美元)和6个白帽黑客(约820万美元),约10%的ENS域名地址获利610万美元。NomadBridge这个事件很典型,本质上是因为它的设置在初始化的时候存在一些问题,如果黑客找到一批曾经有效的交易然后重新广播出去的话,那么那笔有效交易涉及的资金就会重新再去执行,并将收益返回给黑客。在整个以太坊生态中,参与者有很多,除了项目方和参与者之外,还有很多MEV机器人。在这个案例中,当自动化的机器人发现了这笔攻击交易无论谁广播出去,发出广播这个人都会得到收益。只要能覆盖Gas费,大家都多去广播,所以整个事件就变成了一个抢钱事件。这次事件涉及到的地址非常多,虽然事后项目方找到一些ENS以及一些白帽黑客的地址,追回一部分资金,但绝大部分资金都没有被追回来。如果黑客用一个非常干净的设备,非常干净的地址的话,是很难从一些数据关联的角度找到背后的人是谁。虽说像Google、微软、Facebook、阿里、腾讯等都经受过黑客攻击,但是他们的程序都是闭源的;而在以太坊生态,或者是整个智能合约生态,很多程序都是开源的,对于黑客来讲,分析开源的实际上是相对简单的。所以当项目有漏洞的时候,基本就宣布了这个项目的失败。Beanstalk
事件回顾:基于以太坊的算法稳定币项目BeanstalkFarms在这次闪电贷攻击中的损失约为1.82亿美元,具体资产包括79238241枚BEAN3CRV-f、1637956枚BEANLUSD-f、36084584枚BEAN和0.54枚UNI-V2_WETH_BEAN。攻击者获利超8000万美元,包括约24830枚以太坊以及3600万枚BEAN。本次攻击的主要原因在于提案的投票与执行两阶段间无时间间隔,导致攻击者在完成投票后未经社区审核可以直接执行恶意提案。攻击过程:提前一天购买代币并质押获取提案资格,创建恶意提案合约;通过闪电贷获取大量代币投票恶意合约;恶意合约执行,完成套利。Beanstalk也是很典型的案例,黑客没有用到什么漏洞,只是利用了项目的一个机制。这个项目的机制是任何人抵押代币之后可以提交提案,提案也是一个合约。攻击者在实施攻击的前一天买了一定的代币,然后提交了一个恶意的提案,提案在24小时之后就可以被投票,投完票之后没有任何时间窗口,没有任何时间锁,投票被通过,就可以立刻执行。现在很多项目都讲社区自治,用纯去中心化的方式,就会出现很多问题。比如提案,每一个提案是否有审核机制?一个提案到底是正常的提案还是恶意的提案?提案如果被通过,闪电贷过来直接抵押投票就有用,还是创建一种机制必须要staking一定的时间,甚至是发放投票代币才可以?以及提案通过之后到执行这个阶段,到底应不应该有一个时间锁?理论上是应该有的,这样的话大家只要看在时间锁内的操作,给了大家一个出逃的机会,如果没有的话,假如执行的是一个恶意操作,谁也跑不了。Wintermute
事件回顾:2022年9月21日早上,EvgenyGaevoy在推特上公布被盗事件进展,称Wintermute确实曾于6月份使用Profanity和一个内部工具来创建钱包地址。这样做的原因是优化手续费,而不只是为了创建靓号,并称在上周得知Profanity存在漏洞后,Wintermute加速弃用旧密钥。但由于内部错误,调用了错误的函数,因此Wintermute没有删除受感染地址的签名和执行操作。我们可以看到网上很多前面有八个0这种号,以太坊地址中的0越多,手续费就越低,所以很多MEV的抢跑机器人和项目方都比较喜欢用,尤其是一些相对高频操作的。Wintermute是一家做市商,当时他们把很多代币发到一个合约里,用靓号生成程序生成合约地址。这个合约的Owner也是一个靓号,刚好非常不巧的是这个Owner靓号私钥被人给强算出来了,合约里的钱直接都被转走了。当我们在网上使用一种开源工具的时候,一定要有接受可能带来一些不好后果的准备。当使用一个外部程序的时候,强烈建议要对它进行一个相对比较充分的安全评估。HarmonyBridge
事件回顾:Horizon跨链桥损失逾1亿美元,包括超1.3万枚以太坊及5000枚BNB。Harmony创始人称,Horizon被攻击是由私钥泄露导致。据彭博社报道,根据区块链研究公司Elliptic的最新分析,被称为LazarusGroup的疑似朝鲜黑客组织被认为是在Harmony跨链桥Horizon盗取1亿美元的幕后黑手。Elliptic的分析强调了此次黑客事件中指向LazarusGroup的关键因素,包括自动存入Tornado.Cash以模拟RoninBridge事件的程序化,以及盗窃的时间等。Harmony这个事件没有公布具体的细节,但最后的报道说可能还是朝鲜黑客集团,如果是朝鲜黑客组织的话,与RoninBridge攻击手法是一致的。朝鲜的黑客组织这些年非常活跃,尤其是针对币圈,最近很多公司都受到过他们的钓鱼攻击。\tAnkr
事件回顾:Ankr:Deployerupdate合约。Ankr:Deployer给AnkrExploiter转了BNB。AnkrExploiter通过更新后合约的铸币方法进行铸币。被凭空铸造出10万亿枚aBNBc,黑客A将aBNBc通过PancakeSwap兑换出500万枚USDC,掏空了交易池,导致aBNBc几乎归零;,黑客A后续将币跨到以太坊,并转入TornadoCash。黑客A铸币之后的约半小时,aBNBc暴跌,产生了套利机会,套利者B利用借贷协议Helio的预言机6小时平均加时权重的设置,利用aBNBc在市场上和在Helio系统中的价差将其换成hBNB,并将hBNB质押换出稳定币HAY,并将其换成BNB和USDC,总共套出超过1700万美元等值的稳定币和BNB,基本掏空HAY的交易对池子。Ankr将从1500万美元恢复基金中调资购买增发的HAY以补偿攻击事件受害者Ankr的整体的损失不大,我们单独来说一下。因为现在很多DeFi的项目都是乐高积木,A依赖B、B依赖C,各种组装,那么当链条中其中某一环节出现问题的时候,整个链条中的上游下游可能全部都受影响。
后来Ankr发文说明了事件发生的缘由:归结于一个已离职的内部员工作恶。暴露的问题:首先,Staking合约Owner是一个EOA账户而不是多签,本质上来讲谁掌握私钥,谁就能控制智能合约,这是非常不安全的;其次,Deployer的私钥又能被所谓的核心员工所掌控,甚至是离职之后依然可用;也就是说整个内部安全体系基本没有起到什么作用。Mango
事件回顾:黑客使用了两个账户一共1000万USDT起始资金。第一步,黑客首先向Mango交易平台A、B地址分别转入500万美元。第二步,黑客通过A地址在Mango上利用MNGO永续合约做空平台TokenMNGO,开仓价格0.0382美元,空单头寸4.83亿个;与此同时,黑客在B地址做多MNGO,开仓价格0.0382美元,多单头寸4.83亿个。(多空双开的原因在于,Mango平台深度较差,如果不和自己做对手盘,仓位就很难开到这么高)第三步,黑客转身拉盘多个平台(FTX、Ascendex)上MNGO的现货价格,致使价格出现5-10倍的增长,该价格通过Pyth预言机传递到Mango交易平台,进一步推动价格上涨,最终Mango平台上MNGO价格从0.0382美元拉升至最高0.91美元。第四步,黑客的多头头寸收益为4.83亿个*(0.91美元-0.0382美元)=4.2亿美元,黑客再利用账户净资产从Mango进行借贷。好在平台流动性不足,黑客最终只借出近1.15亿美元资攻击发生后,黑客发布了一项新提案,表示希望官方利用国库资金(7000万美元)偿还协议坏账。据了解,目前国库资金约为1.44亿美元,其中包括价值8850万美元的MNGOToken以及近6000万美元的USDC。黑客表示,如果官方同意上述方案,将返还部分被盗资金,同时希望不会被进行刑事调查或冻结资金。“如果这个提案通过,我将把这个账户中的MSOL、SOL和MNGO发送到Mango团队公布的地址。Mango国库将用于覆盖协议中剩余的坏账,所有坏账的用户将得到完整补偿......一旦Token如上述所述被送回,将不会进行任何刑事调查或冻结资金。”据CoinDesk报道,此前公布身份的Mango攻击者AvrahamEisenberg2022年12月26日在波多黎各被捕,AvrahamEisenberg面临商品欺诈和商品操纵的指控,这些指控可能会受到罚款、监禁的惩罚。Mango这个事件可以定义成安全事件,也可以定义为套利行为,因为问题不是安全漏洞,而是业务模式漏洞。其交易品类中包括BTC、ETH等市值较高的币种,也有MNGO这样的小币种,而这种小币种在熊市流动性不足时,只要花很少的钱可能就把币价拉起来,这种币价操控行为使永续合约的平台的头寸管理变得十分困难。所以作为项目方,要充分考虑到各种场景,在测试的时候,要把所有超出预期的场景都包含在测试用例中。而作为普通用户,去参与某个项目的时候,不能只盯着收益,还要多考虑考虑本金安全。抛开安全漏洞层面,要花心思去看一下它的业务模式有没有一些漏洞可能被利用。原地址
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。