危险的授权转账:Li.Finance 攻击事件始末_DAO:Poly Bridge

前言

北京时间3月20日晚,知道创宇区块链安全实验室?监测到以太坊上分布式跨链协议。Li.Finance 受到了攻击,攻击者执行了 37 次call注入,获取了多个钱包中约 60 万美元的资产(204个ETH)。此次资产损失并没有非常大,但项目方对于攻击的处理非常积极并值得学习与肯定(见后文),目前项目方已补偿了协议损失并修复后重新部署了协议。

知道创宇区块链安全实验室?第一时间跟踪本次事件并分析。

分析

1.攻击者相关信息

攻击tx:

0x4b4143cbe7f5475029cf23d6dcbb56856366d91794426f2e33819b9b1aac4e96

华尔街看空者David Tice:现在投资股市和BTC非常危险:华尔街长期看空者David Tice表示,现在投资股市和BTC非常危险。他认为就未来收益而言,目前股市定价过高,有40%的回调风险,不值得为了3-5%的短期收益而冒险。他尤其担心科技巨头的股票,目前科技巨头已经吸引了大量资金,行业成本已经上升。他敦促投资者在加密货币领域保持警惕。他曾在年初看涨比特币,3月创下历史新高后转而看跌。他表示:比特币达到6万美元时,我们就觉得很危险了。最近,各大央行行长、国际清算银行和英格兰银行都发表了负面声明,引起了更多骚动。我认为今天继续持有非常危险。(CNBC)[2021/7/19 1:01:49]

被攻击合约:

0x5A9Fd7c39a6C488E715437D7b1f3C823d5596eD1--代理合约

经济日报:BTC表现出脱离全球经济基本面的危险倾向:3月2日消息,《经济日报》针对比特币发表评论文章称,新冠肺炎疫情严重破坏全球增长基础,加之金融监管缺位和全球治理失灵,波动性、投机性、风险性“三高”的比特币,表现出脱离全球经济基本面的危险倾向。文章称,盲目追捧比特币?别犯傻了!就连马斯克这个忠实的比特币粉丝最近都呼吁投资者须慎之又慎。毕竟,一句老话说得好,“当潮水退去,才知道谁在裸泳”。[2021/3/2 18:06:06]

0x73a499e043b03fc047189ab1ba72eb595ff1fc8e--逻辑合约

攻击者地址: ?

0xC6f2bDE06967E04caAf4bF4E43717c3342680d76 -- 部署地址

0x878099F08131a18Fab6bB0b4Cfc6B6DAe54b177E -- 收款地址

声音 | 杨海坡:很多BSV浏览器和钱包出现故障 对一个全球支付系统很危险:ViaBTC矿池CEO杨海坡发微博称,BSV还没分(网络升级)之前我就警告过,在整个网络没有准备好的情况下盲目且没有必要的扩大区块上限是很危险的,今天很多BSV的浏览器和钱包出现故障,之前已经出现多次,这对一个全球支付系统是很危险的行为。不过幸运的是,ViaBTC BSV 浏览器服务运转正常。[2019/7/26]

2.攻击流程

攻击调用流程

攻击者构造 payload 并调用被攻击合约 0x5a9fd7c3 的 swapAndStartBridgeTokensViaCBridge 函数:

动态 | FOMO山寨合约全家桶连续三日霸榜危险合约榜:区块链项目评级机构RatingToken最新数据显示,2018年7月22日全球共新增7643个合约地址,其中276个为代币型智能合约。此外,RatingToken发布最新“新增代币型智能合约风险榜”。榜单显示,当日TOP 20 危险合约项目均被FOMO 3D山寨合约占领,例如FOMO Free、FOMO Short、f3dplus等。其中f3dplus创建不到24小时,交易量已超过10000笔,累计交易额超128 ETH。RatingToken安全审计团队分析发现,这些山寨合约均存在较为严重的安全漏洞,其中FOMO Free合约安全漏洞高达24个,在RatingToken.net检测得分仅为1.5分,涉及资金安全堪忧。RatingToken与区块风豹实验室旗下“Dapp浏览器”合作,为其接入合约鉴别功能。帮助用户鉴别Dapp地址真伪,避免被山寨版欺诈。了解智能合约更多详情,请访问RatingToken官网。[2018/7/23]

具体使用的 Payload 如下--图中选中部分即为利用授权转账(transferFrom)部分的 payload:

Bespoke区块链分析师:Tether缺乏透明度带来了危险:据cnbc报道,Bespoke投资集团软件工程师兼区块链分析师Dan Ciotoli表示:“Tether缺乏透明度为我带来了危险。 Tether的发行很有可能对去年人为增长的比特币价格做出了重大贡献。”[2018/6/14]

调用一次正常50刀的跨链桥功能(为了能正常调用 swapAndStartBridgeTokensViaCBridge 函数):

在 payload 中包括多个call方法(调实际用transferFrom)。让 0x5a9fd7c3 调用 37 个call,借此利用多个钱包对于 0x5a9fd7c3 合约的授权(approve)将钱包资产转账到攻击者地址:

后续执行正常的跨链桥逻辑 _startBridge(_cBridgeData); 这也是为什么第一个 swap 是正常的,这样才能让后续逻辑正常执行下去:

3.漏洞细节

导致本次问题的根本原因被攻击合约0x5a9fd7c3的逻辑合约存在一个批量让call 调用传入数据的函数 swapAndStartBridgeTokensViaCBridge:

该合约将会取出payload中的多个_swapData 数据结构并调用,LibSwap.swap(...);实现如下:

借此,攻击者利用该合约的 call 将各个钱包对 0x5a9fd7c3 合约的代码授权转走了多个钱包中的各种代币。

4.项目方进展

在事件发生后,项目方第一时间对合约可能的方法进行了停用,并为其审计和安全性问题进行致歉:

而后,项目方还联系了黑客,希望能与其取得联系并和平解决:

同时,最快的时间将漏洞合约修复后上线:

并将钱包(以Matic为例)对于之前被攻击合约的授权取消,对新的合约进行了重新授权:

最后,将用户资产进行补回:

同时我们关注到,其在 polygon 链上的合约也已实现了新的部署:

总结

此次攻击的根本原因是项目方对于 swapAndStartBridgeTokensViaCBridge 合约的实现过度自由化所导致的 call 调用注入,但项目方积极的面对问题的态度和后续补救的及时性值得学习和肯定。不贵于无过,而贵与改过。

但我们仍希望能将错误扼杀在发生之前,应从他人的错误中学习并避免自己未来的错误,正如 Li.Finance 所说的那样:“我们的使命是最大化用户体验,现在我们痛苦地了解到,为了遵循这种精神,我们的安全措施必须大幅改进。”

近期,各类合约漏洞安全事件频发,合约审计、风控措施、应急计划等都有必要切实落实。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金宝趣谈

[0:15ms0-8:64ms