一、事件概览
北京时间2021年3月4日,根据【链必安-区块链安全态势感知平台(Beosin-OSINT)】舆情监测,BSC生态DeFi项目Meerkat Finance疑似跑路,其自称金库合约遭遇到黑客攻击,黑客利用漏洞盗取了金库中的全部资金。目前该项目网站已经无法打开。
原文链接如下:
https://www.bishijie.com/kuaixun/909558.html
成都链安(Beosin)安全团队第一时间针对该事件启动安全响应,针对用户攻击地址:
(0x9542966f1114eaa5859201aa8d34358bfedbfa79)进行跟踪。经过跟踪攻击者地址,我们发现,攻击者分别地一次性地将大量资金进行转出,如图1所示。尽管官方自称是遭遇了黑客攻击,但根据我们的分析结果,基本能够断定Meerkat Finance项目方已经跑路。
△图1
△图2
二、事件分析
紧接着,我们开始针对转移盗窃资金的两笔交易进行分析,发现攻击者直接通过调用金库合约的一个函数,将金库合约中的资金全部转走;而金库合约使用的是可升级的代理合约,也就是实际逻辑是可以进行更改的,其权限在项目方。
△图3
△图4
根据记录还可得出,项目方在WBNB金库盗窃中,代理合约的实际逻辑还是正常的金库合约,在攻击时才将合约逻辑替换成存在后门的合约。但是在盗取BUSD的交易中,项目方索性扯下了自己的“遮羞布”,一开始就部署的是存在后门的合约。如图5所示:
△图5
成都链安(Beosin)安全团队发现两次攻击所用的后门合约都是同一套代码,我们在对其中一个合约进行反编译时分析发现,其就是一个将代币进行转移的函数。如图6所示:
△图6
最终,我们得出结论,本次事件显然是项目方预谋的钓鱼事件,从一开始就是奔着跑路去的;而在本次事件中,代码层的罪魁祸首就是“可升级的代理合约”给予了项目方过大的权限,导致项目方盗取用户资金,如同探囊取物。
三、安全建议
成都链安(Beosin)安全团队认为,对于“可升级的代理合约”,在审计角度来看,为了保证项目的可维护性和迭代可能,保留这类权限并不是不可取的。
即使在日常的安全审计工作中,我们也不能要求项目方取消这类权限。但权力是一把双刃剑,是好是坏则取决于使用它的人。在成都链安出具的安全审计报告中,我们一直以来都有对此类权限加以说明。同时,在这里有必要提醒广大用户选择投资项目时,一定要详细阅读安全审计报告中的细节描述,特别是我们给出的潜在风险提示及安全建议。
最后,需要引起注意到是,我们监测到攻击者在使用transferFrom函数盗取用户钱包内已授权给金库合约的资金,目前已有用户钱包内的资金被盗16万BUSD。
在此,成都链安(Beosin)安全团队特别提醒各位已参与此项目的用户,立即取消对该项目地址的授权,或立即转移钱包内的资金,避免造成二次损失。
BSC授权检查地址如下:
https://bscscan.com/tokenapprovalchecker
原文始发于微信公众号(成都链安):上线不到1天就携款跑路,3000万美金被卷走! | Meerkat Finance跑路事件分析