CertiK:八千万人民币不翼而飞,Compounder.finance内部操作攻击分析
CertiK
2020-12-02 03:03
本文约2409字,阅读全文需要约10分钟
北京时间12月1日下午3点,CertiK安全技术团队发现Compounder.Finance项目发生数笔大额交易。系内部操作攻击事件。

八千万人民币的大案子,是不是想起了《人民的名义》里那一墙的人民币?

在日常生活里,也许你不小心疏忽遗失了钱包也丢不了太多钱。但在加密货币的世界中稍有不慎,损失的金额也许是一把撒出去遮天蔽日的那种效果。

在层出不穷的矿坑中,一着错漏,满盘皆输。往往项目拥有者与投资者一样,心心念念记挂着自家项目的安全性。

但有一种情况是例外.....

北京时间12月1日下午3点,CertiK安全技术团队通过Skynet发现Compounder.Finance项目位于0x0b283b107f70d23250f882fbfe7216c38abbd7ca地址处智能合约发生数笔大额交易。

CertiK安全技术团队验证后,发现这些交易是Compounder.Finance项目拥有者内部操作,将大量代币转移到自己的账户中。

经统计,Compounder.Finance最终共损失约价值八千万人民币的代币。

攻击事件经过如下:

图一:inCaseTokenGetStuck()函数

Compounder.Finance项目拥有者通过多次调用如图一所示位于0x0b283b107f70d23250f882fbfe7216c38abbd7ca中的inCaseTokenGetStuck()函数,将代币转移到自己的指定的地址中。

调用该函数时,首先在1471行会检查外部函数调用者是否为strategist或者governance角色地址,通过检查于0x0b283b107f70d23250f882fbfe7216c38abbd7ca智能合约的strategist角色地址,发现与Compounder.Finance项目拥有者地址一致。

图二:Compounder.Finance: StrategyControllerV1中strategist角色地址

图三: 项目管理者盗取代币的交易举例

项目管理者盗取代币的交易列表:

当今DeFi市场中存在着项目拥有者权限过大,中心化程度过高的项目比比皆是。

目前对项目拥有者缺乏额外治理或者限制措施,由于此类原因导致的内部操作攻击事件也逐渐增多。

此次事件造成损失巨大,攻击技术细节简单,更是为所有DeFi项目敲响了警钟:

1. 当前DeFi市场中缺乏对项目拥有者进行有效限制的方法。

2. 投资者对该类安全风险主要还是依靠查找项目背书的方式来进行确认。

项目的安全与否不该依赖于项目拥有者或团队自身的“选择”,这样的防范方式并不可行,从智能合约代码层面对项目拥有者进行权限限制才能从根本上杜绝此类攻击。

欢迎搜索微信【certikchina】关注CertiK官方微信公众号,点击公众号底部对话框,留言免费获取咨询及报价!

CertiK
作者文库