一、前言
北京时间3月20日晚,知道创宇区块链安全实验室监测到以太坊上分布式跨链协议Li.Finance受到了攻击,攻击者执行了37次call注入获取了多个钱包中约60万美元的资产。此次资产损失并没有非常大,但项目方对于攻击的处理非常积极并值得学习与肯定(见后文),目前项目方已补偿了协议损失并修复后重新部署了协议。知道创宇区块链安全实验室第一时间跟踪本次事件并分析。
二、分析
1.攻击者相关信息
攻击tx:0x4b4143cbe7f5475029cf23d6dcbb56856366d91794426f2e33819b9b1aac4e96
经济学者:采用加密货币的国家最大危险是被列入FATF黑名单,面临制裁:8月9日消息,经济专家Steve H . Hanke最近在接受采访时表示,加密支持者一直推行“加密货币优于拉丁美洲的地方主权货币”,这一论断值得商榷,目前已知的是美元化效果很好。自从2001年萨尔瓦多实行美元化以来,其平均通胀率一直是每年2%,与美国几乎相同,是拉丁美洲最低的。他还称,采用加密货币的国家最大的危险是不遵守FATF的规定,这可能导致其被列入FATF黑名单,面临FATF成员国制裁。另外加密货币也不能帮助伊朗经济发展,唯一能帮助伊朗经济的是货币发行局制度。[2021/8/9 1:43:58]
被攻击合约:
0x5A9Fd7c39a6C488E715437D7b1f3C823d5596eD1--代理合约
0x73a499e043b03fc047189ab1ba72eb595ff1fc8e--逻辑合约
ZenGo研究工程师:Bancor漏洞暴露了以太坊DeFi中的危险常规操作:金色财经报道,ZenGo研究工程师Oded Leiba表示,Bancor智能合约的资金提取功能设置有误,以至于任何人都可以调用它。使这一问题更加复杂的是,Bancor的合约要求在首次与协议交互时获得无限制的取款授权。即使用户只计划用有限的资金来测试协议,系统也可以提取他们特定代币的全部余额。并且事实证明,以太坊上的许多DApp都在执行相同的操作,如Compound、Uniswap、bZX、Aave、Kyber和dYdX等均具有无限制或极大的授权。据此前报道,Bancor新合约于6月18日出现安全漏洞,黑客可以轻易提取任何与该公司签订智能合约的用户的全部资金。[2020/6/24]
攻击者地址:
0xC6f2bDE06967E04caAf4bF4E43717c3342680d76--部署地址0x878099F08131a18Fab6bB0b4Cfc6B6DAe54b177E--收款地址
动态 | 欧洲央行官员称脸书天秤座货币“诱人但危险”:欧洲央行(ECB)一位高级官员周一概述了拟议中的脸书天秤座(Libra)加密货币存在的问题。这是政府官员发出的一系列警告中的最新一例。欧洲央行行政长官伊夫梅尔施(Yves Mersch)表示:“我真诚地希望欧洲人民不要抛弃现有支付解决方案和渠道的安全性和稳健性,转而接受脸书那诱人但危险的承诺。“ 在法兰克福法律会议上的一次演讲中,他讽刺地指出,天秤座加密货币的创造者因为在社交媒体上处理个人隐私数据正在受到美国和欧盟立法者的调查。默施提出的另一个担忧是,天秤座货币将由一个在支付、技术、电子商务和电信领域的同业联盟发行。该联盟被称为天秤座协会,它将控制区块链和收取铸币税收入。天秤座协会成员包括万事达、贝宝、易趣和优步。(新浪财经)[2019/9/3]
2.攻击流程
持有加密货币可能被美国国防部标记为“危险”:多份报告表明,美国国防部正在讨论,加密货币是否会对那些正在申请或者已有美国安全许可的人士产生影响。持有比特币或以太坊等加密货币的个人可能被美国国防部认为是“危险的”。今年2月,美国国防部透露他们正在制定加密货币所有权的准则。[2018/5/23]
攻击调用流程攻击者构造payload并调用被攻击合约0x5a9fd7c3的swapAndStartBridgeTokensViaCBridge函数
具体使用的Payload如下--图中选中部分即为利用授权转账部分的payload:
金色财经现场报道Distributed Lab创始人:目前加密货币的营销方式非常危险:金色财经现场报道,今日在Coindesk 2018共识会议上,Distributed Lab的创始人Pavel Kravchenko表示区块链无法验证任何数据,不允许即时交易、不可变、不加密、不能替代服务器。 同时,他也给出了区块链的五个用例,即投票、公共注册、供应链、分散交易及调和。Pavel认为,目前加密货币的营销方式是非常危险的,“必须在其他人富起来之前现在立刻购买比特币”的宣传方式是错误的方式。[2018/5/15]
调用一次正常50刀的跨链桥功能
在payload中包括多个call方法(调实际用transferFrom)。让0x5a9fd7c3调用37个call,借此利用多个钱包对于0x5a9fd7c3合约的授权(approve)将钱包资产转账到攻击者地址:
后续执行正常的跨链桥逻辑_startBridge(_cBridgeData);。这也是为什么第一个swap是正常的,这样才能让后续逻辑正常执行下去
3.漏洞细节
导致本次问题的根本原因被攻击合约0x5a9fd7c3的逻辑合约存在一个批量让call调用传入数据的函数swapAndStartBridgeTokensViaCBridge
该合约将会取出payload中的多个_swapData数据结构并调用,LibSwap.swap(...);实现如下:
借此,攻击者利用该合约的call将各个钱包对0x5a9fd7c3合约的代码授权转走了多个钱包中的各种代币。
4.项目方进展
在事件发生后,项目方第一时间对合约可能的方法进行了停用,并为其审计和安全性问题进行致歉。
而后,项目方还联系了黑客,希望能与其取得联系并和平解决:
同时,最快的时间将漏洞合约修复后上线:
并将钱包对于之前被攻击合约的授权取消,对新的合约进行了重新授权:
最后,将用户资产进行补回:
同时我们关注到,其在polygon链上的合约也已实现了新的部署:
三、总结
此次攻击的根本原因是项目方对于swapAndStartBridgeTokensViaCBridge合约的实现过度自由化所导致的call调用注入,但项目方积极的面对问题的态度和后续补救的及时性值得学习和肯定。不贵于无过,而贵与改过。但我们仍希望能将错误扼杀在发生之前,应从他人的错误中学习并避免自己未来的错误,正如Li.Finance所说的那样:
我们的使命是最大化用户体验,现在我们痛苦地了解到,为了遵循这种精神,我们的安全措施必须大幅改进。
近期,各类合约漏洞安全事件频发,合约审计、风控措施、应急计划等都有必要切实落实。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。