OKLink:2023年7月安全事件盘点
2021年迄今DeFi已发生82起安全问题,初始被盗资金超18亿美元
区块链作为过去十年最伟大的技术发展之一,除了为传统金融、跨境支付与结算、供应链、征信与反欺诈、用户隐私等应用领域带来革新性进展外,受区块链原生思想、文化而孕育出的去中心化金融(DeFi)以颠覆者的形象崛起,旨在构建一个无需第三方、公平自主、对所有人开放的金融体系。DeFi被认为具有无限活力和可能,有望重构金融交易和服务模式,在经历了2年多的蛰伏期后,DeFi于2020年6月底爆发,迅速发展壮大,成了当前区块链世界备受瞩目、金融领域落地最大,也是采用率最高的应用之一。但随着DeFi短时间内吸引了成百上千万资金,也让它们成为了大量黑客攻击的目标,链上安全事故频发。
据公开资料显示,2020年DeFi攻击事件达到了60起,损失逾2.5亿美元,其中至少10起为闪电贷攻击,包括bZx、Balancer、Harvest、Akropolis、Cheese Bank、Value DeFi和Origin Protocol等多个DeFi项⽬遭到攻击。
尽管仍有近2个月的时间2021年才宣告结束,但据OKLink不完全统计,截至11月7日,2021年年初至今已经发生了82起链上安全问题,初始被盗资金约18.16亿美元,但其中约有7亿美元已经归还,被盗资金的总额达到了11.16亿美元。
与2020年对比明显的除了攻击事件显著增多外,单个项目被盗金额在量级上也有了显著提升。据Rekt排行榜显示,前十大D黑客攻击事件中,仅有1起发生在2020年。排名前三的分别是Poly Network(6.11亿美元)、Compound(1.47亿美元)以及Cream Finance(1.3亿美元)。
其中仅Poly Network被盗资金就超过了2020年全年,不过好在攻击该项目的黑客事后已归还全部被盗资金。最近一次大规模的攻击,当属于10月28日Cream Finance遭受到的闪电贷攻击,损失超过1.3亿美元,被盗的资金主要是Cream LP代币和其他ERC-20代币。据了解,这并非是Cream Finance遭受的初次攻击,去掉本次,仅2021年,Cream Finance就因闪电贷、合约漏洞亦或是被其他DeFi项目连带影响,就已经遭受了3次攻击,损失共计5,740万美元。
从2021年年初至今的82起安全事件中,我们发现闪电贷是黑客最常用的手段,占到了33起,其次是合约漏洞,共27起。此外,因激励机制变更、私钥或助记词泄露(保管不当)等因素也会导致黑客攻击。接下来,我们将结合具体案例,为大家展现。
- Cream Finance再遭闪电贷攻击,损失1.3亿美元
10月27日,DeFi借贷协议Cream Finance遭到闪电贷攻击,攻击者从C.R.E.A.M. Ethereum v1市场取走约1.3亿美元代币。
闪电贷是指不需要抵押资产,在同一个区块内完成借款、还款的一种贷款方式。需要说明的是,闪电贷本身只是一种工具,没有好坏之分,但因为闪电贷不时出现在与DeFi暴雷相关的新闻中,因此在很多不明就里的人眼中,闪电贷似乎成为了恶意攻击者的帮凶,这其实是对闪电贷的误解。
事实上,闪电贷甚至可以称得上是智能合约上的一个伟大创新。由于DeFi存在结构性缺陷,所以在大多数抵押借贷协议里都要求用户超额质押资产,这就意味着资金利用率会变得十分低下。闪电贷的出现,大大降低了资金成本,用户可以在不需要任何抵押借款的情况下,只需付出极小的手续费(如AAVE上的闪电贷手续费仅为 0.09%),就能获得巨额的资金,用户在借到款后,可以利用借到的资金进行其他操作,在交易结束时,只需将借款及手续费及时归还,否则该笔交易就会回滚,犹如什么都没有发生过,因此它可以用于套利、交换抵押品和自我清算等。
针对此次Cream Finance攻击,攻击者从MakerDAO闪电贷借出5亿枚DAI,接着质押兑换成4.51亿枚yDAI,再将yDAI在Curve ySwap中添加流动性获得4.47亿枚yDAI+yUSDC+yUSDT+yTUSD。
然后攻击者将4.47亿枚yDAI+yUSDC+yUSDT+yTUSD质押并获取近4.47亿枚yUSD,通过在crYUSD中调用铸币函数,铸造了近223.38亿枚crYUSD。
随后攻击合约0x961D创建了攻击合约2 0xf701,并调用攻击合约2的flashLoanAAVE() 函数,先从AAVE借入52.41万WETH,其中6,000 WETH发给攻击合约 0x961D,剩余的WETH存入Cream获得crETH。使用攻击合约2借出近4.47亿枚yUSD,重复两次,并以此铸造crYUSD,铸币完成后将crYUSD转给攻击合约0x961D。攻击合约2 0xf701第三次又借出近4.47亿枚yUSD,此次直接转给攻击合约0x961D。
攻击者使用1,873枚WETH在Uniswap V3中获得745.30万枚USDC,再通过Curve.fi将372.65万枚USDC换成338.33万枚DUSD,然后将DUSD换成4.50亿枚yDAI+yUSDC+yUSDT+yTUSD。
随后将843.15万枚yDAI+yUSDC+yUSDT+yTUSD直接发送回yUSD抵押池,导致Cream协议对抵押资产yUSD 的价值计算剧增,最终借出大量CRETH2、xSUSHI、PERP等共15种资产,并归还攻击合约2借出的WETH闪电贷。
最后赎回各资产成DAI,归还攻击合约0x961D的闪电贷。
本次攻击是典型的闪电贷价格操控,通过闪电贷获取大量资金后,利用合约设计缺陷,大幅改变价格导致获利,此次是Cream Finance今年遭受的第四次黑客攻击。发生闪电贷攻击,实质是发起闪电贷的攻击者只是利用了闪电贷的特点,在短时间内借出资金、交易、然后存入并再次借出大量的资金,这样他们就可以人为地在某一个DEX里操纵特定加密资产的价格,进而从中获利。也就是说,单单就攻击者在闪电贷流程里的操作来看,其本身是合规的,但是从结果来看,这一行为损害了智能合约的公平性和其他用户的利益。
2. 史上最大的DeFi被盗案Poly Network
2021年8月10日,异构链跨链互操作协议Poly Network遭到攻击,使用该协议的O3 Swap损失惨重,据OKLink链上浏览器显示,30多分钟的时间里,黑客带走了共计6.1亿美元的加密资产,分批转出至3个地址。转至0x0d6e的BSC地址的资金超2.5亿美元,转至0xc8a6的以太坊地址有超2.7亿美元,而转至0x5dc3地址的也有超8,500万美元。
本次攻击主要是黑客利用了EthCrossChainManager合约中存在的漏洞,EthCrossChainData合约的Keeper权限可由EthCrossChainManager合约进行修改,而EthCrossChainManager合约的verifyHeaderAndExecuteTx函数可以被任何用户调用进行交易执行,并且在其内部进行call调用时,恶意用户又可以通过_executeCrossChainTx函数传入自行构造的数据,这样黑客通过精心构造的数据就能把EthCrossChainData的Keeper更改为自己指定地址,从而取出LockProxy合约中的代币。
以下是欧科云链链上天眼团队绘制的被攻击过程。
由于此次事件涉及的6.1亿美元太过引人注目,事件发生后各大平台都在积极响应,试图阻止黑客利用平台特性将赃款转移,链上天眼团队也在合规的前提下,与安全团队同步相关攻击者信息,为追踪攻击者争取了宝贵时间。
据Dune Analytics数据显示,当前跨链桥的TVL超过了388亿美元,而跨链桥作为一个新兴领域,它的诞生虽然打破了链与链之间的孤岛现象,但由于其发展速度和庞大的资金体量,再加上链上项目水平参差,自然是成了黑客眼中的“香饽饽”。
7月11日,跨链项目ChainSwap遭到黑客攻击,在该桥部署的超20个项目的代币都遭到黑客盗取,损失约合440万美元。本次安全事故发生的主要原因是每个代币在跨链转移时有代理合约,黑客调用合约时需在_chargeFee中支付0.005 ETH作为费用,但这个过程没有真正的身份验证审查,只需一个签名,问题可能是_decreaseAuthQuota函数,如果当天签名人的配额已完成,该函数就会恢复。但是每个人似乎都从默认配额开始。所以攻击者每次只需用不同的地址签名来规避这一点。然后在_receive函数中将“volume”参数传输到“to”攻击者地址。
而就在一天后,另一知名跨链项目AnySwap也遭到攻击,其新推出的V3跨链流动性池损失239万USDC和550万MIM,总损失超过了790万美元。根据AnySwap公告解释,在BSC上的V3路由器MPC账户下检测到两个V3路由器交易,这两个交易具有相同的R值签名,而黑客反推到这个MPC账户的私钥,团队已经修复代码以避免使用相同的 R 签名。
Poly NetWork不是跨链桥安全事件的第一起,也不会是最后一起,由于TVL的迅速壮大,跨链桥必然会继续成为安全事件的高发地,Poly Network的结尾虽然以黑客归还全部资产告终,但本次事件也是一次警示,即跨链桥作为更为复杂的业务场景,对合约撰写和审计的要求应更为严格,而管理员权限、私钥授权等安全问题也需更加重视。
3. BXH或因私钥泄露被盗
10月30日,多链部署的去中心化交易协议BXH被盗,1.39亿美元的加密资产被洗劫一空。据了解,此次安全事故发生在BSC链上的BXH协议,出于谨慎考量,BXH官方也暂停了Heco、OEC相关存取款服务。
事故发生后的第一时间,链上天眼团队便第一时间监控了黑客在BSC、以太坊和比特币链上的地址,并预警交易所和钱包注意加强地址监控,避免相关恶意资金流入平台。经过复盘,链上天眼团队分析,黑客在10月27日部署了0x8877这一攻击合约,接着10月29日BXH管理员地址0x5614通过grantRole赋予了黑客攻击合约0x8877管理权限。10月30日,黑客通过攻击合约的管理权限将BXH资金库中的资产转出。
简单理解就是,有人拿到了BXH管理员的私钥,再将另一个地址设置为管理员,然后通过这另一个地址把钱都提走了,此番调查结果一出,引起哗然,毕竟这样的盗币手段颇为原始,黑客都不需要攻克复杂的智能合约,仅靠私钥就提取了1.39亿美元的资金。
BXH链上资产被盗,也产生了一系列的连锁反应,依赖于BXH流动性的相关机枪池也受到了牵连,CoinWind和Earn DeFi接连关闭了充提。10月31日晚,BXH在官方媒体上公示了其在BSC链上的资金池剩余资产,包括USDT、USDC、BTC、ETH、BUSD、MDX在内,总计约1.84亿美元。
截至11月9日,BXH的最新动态是,项目方表示,在持续测试、消除潜在风险,并完成私钥验证的多签升级后,项目在OEC上的活动已经恢复正常。
4. Rug Pull攻击
作为DeFi圈中常被提及的术语,Rug Pull指的是项目方撤出支持、DEX流动性池或突然放弃一个项目,毫无征兆地卷走投资者的资金,Rug Pull多发生于DEX,是DeFi领域较为典型的骗局。骗子们会在流动性池中投入大量的资金,并在社交媒体上发布诱人的广告吸引投资者入局,一旦投资者将代币存入这些流动性池中,骗子就会“抽地毯般”地把池子里的代币全部提走,通常是恶意团队攻击的最后一步,也是一种常见的退出骗局。由于Rug Pull在技术上实施起来颇为简单,通常会是一些土狗项目(低投入、无审计、Copy Cat)在打造出所谓“一夜暴富”的假象骗散户上车后惯常的技俩。
7月15日,数字收藏品平台Bondly Finance遭受攻击,在以太坊网络铸造了3.73亿枚BONDLY,导致代币价格下跌,损失590万美元,此举被质疑为Rug Pull。据项目方自身披露,攻击者通过精心策划的策略获得了Bondly Finance CEO Brandon Smith密码账户的访问权限,密码帐户包含他的硬件钱包的助记词恢复短语,复制后允许攻击者访问BONDLY智能合约,以及也被泄露的公司钱包。Brandon保持对Bondly大部分企业钱包的独家访问权。这些钱包包括所有去中心化交易所流动性池代币、投资账户代币、抵押储备代币、生态基金代币、工资单、公司储备金、所有NFT钱包和Opensea储备金。
结语
随着区块链在全球范围内的迅速发展,相应的链上安全事件也在不断滋生。与去年相比,DeFi领域的安全形势依旧严峻,链上问题不容小觑,相较于新型漏洞,我们发现大多数黑客攻击都属于已经出现过的漏洞,EVM兼容链的崛起,使得黑客攻击目标从以太坊转移至其他链,但攻击手法相差无几,一方面项目需对自身提高要求,在开发,包括第三方安全公司在审计时需多做考虑,另一方面也显示出了DeFi现存的雷同项目问题,众多项目或直接fork,或在fork的基础上进行创新,而这样的结果很容易带来隐匿风险或潜藏漏洞,例如此前BSC链上的AutoShark Finance和Merlin接连遭到闪电贷攻击,分别损失75万美元和680万美元,原因是fork的Pancake Bunny,导致存在相同风险而被套利。
希望每一次安全事件都能给行业带来警示,尽管我们无法规避所有问题,但对于频繁发生的漏洞,是否应当引起重视,加强对合约审计、风控、应急等方面的落实。链上安全问题应当获得最高的重视,而不是为了盲目追求热点急于上线产品,没有做好项目安全性审查,这既是对用户资产的不负责任,也是对区块链链上生态的消耗,而用户也需增强自身的安全意识,做好DYOR,如匿名团队、无审计、明显的Copy Cat类的项目,就可以纳入自己的避坑点,将初级风险规避在外。