不借助漏洞的攻击?True Seigniorage Dollar攻击事件分析

CertiK
CertiK 机构得得号

Mar 16, 2021 CertiK 专注于区块链安全,被称为区块链安全世界的「普华永道」。

该文章已上链

摘要: 北京时间 3 月 14 日,True Seigniorage Dollar发生新型攻击事件,总损失高达约1.66万美金,CertiK带你分析此次攻击。

北京时间3月14日,CertiK安全技术团队发现DeFi稳定币项目True Seigniorage Dollar发生新型攻击事件,总损失高达约1.66万美金。
此次攻击事件中攻击者利用了去中心化组织(DAO)的机制原理,完成了一次不借助"漏洞"的攻击

 

技术分析 

整个攻击流程如下:

 攻击者(地址: 0x50f753c5932b18e9ca28362cf0df725142fa6376)通过低价收购大量True Seigniorage Dollar项目代币TSD,然后利用大量的投票权,强行通过2号提案。
图1:TSD项目2号提案的目标(恶意)代币实现合约以及提案人信息
在2号提案中,攻击者提议并通过了将位于0xfc022cda7250240916abaa935a4c589a1f150fdd地址的代理合约指向的实际TSD代币合约地址,改为攻击者通过另外地址0x2637d9055299651de5b705288e3525918a73567f部署的恶意代币实现合约。
恶意代币实现合约地址:0x26888ff41d05ed753ea6443b02ada82031d3b9fb
图2:代理合约指向的代币实现合约通过2号提案被替换为恶意代币实现合约

图3:攻击者利用所持地址之一建立恶意代币实现合约
当2号提案被通过后,攻击者利用地址0x50f753c5932b18e9ca28362cf0df725142fa6376,实施确定提案中包含的新代币实现合约地址0x26888ff41d05ed753ea6443b02ada82031d3b9fb。
图4:攻击者利用所持地址之一确定2号提案,并向所持另一地址铸造巨额TSD代币
同时,位于0x26888ff41d05ed753ea6443b02ada82031d3b9fb地址的恶意合约中的initialize()方法也会在升级过程中被调用。
通过反编译恶意合约,可以得知恶意合约的initialize()方法会将约116亿枚TSD铸造给攻击者的另外一个地址0x2637d9055299651de5b705288e3525918a73567f。
图5:代理合约合约在升级代币实现合约的时候会同时调用initialize()方法

图6:反编译恶意代币实现合约中initialize()方法向攻击者地址铸造代币
 当以上攻击步骤完成后,攻击者将所得TSD代币转换成BUSD,获利离场。
图7:攻击者将116亿TSD代币通过PancakeSwap交易为BUSD
总结
此次攻击完全没有利用任何TSD项目智能合约或Dapp的漏洞。
攻击者通过对DAO机制的了解,攻击者低价持续的购入TSD,利用项目投资者由于已经无法从项目中获利后纷纷解绑(unbond)所持代币之后无法再对提案进行投票的机制,并考虑到项目方拥有非常低的投票权比例,从而以绝对优势"绑架"了2号提案的治理结果, 从而保证其恶意提案被通过。
虽然整个攻击最后是以植入后门的恶意合约完成的,但是整个实施过程中,DAO机制是完成该次攻击的主要原因
CertiK安全技术团队建议:
从DAO机制出发,项目方应拥有能够保证提案治理不被"绑架"的投票权,才能够避免此次攻击事件再次发生。
作者:CertiK-链得得专栏;来自链得得内容开放平台“得得号”,本文仅代表作者观点,不代表链得得官方立场凡“得得号”文章,原创性和内容的真实性由投稿人保证,如果稿件因抄袭、作假等行为导致的法律后果,由投稿人本人负责得得号平台发布文章,如有侵权、违规及其他不当言论内容,请广大读者监督,一经证实,平台会立即下线。如遇文章内容问题,请发送至邮箱:linggeqi@chaindd.com
链得得仅提供相关信息展示,不构成任何投资建议
本文系作者 CertiK 授权链得得发表,并经链得得编辑,转载请注明出处、作者和本文链接

更多精彩内容,关注链得得微信号(ID:ChainDD),或者下载链得得App

分享到:

相关推荐

    评论(0

    Oh! no

    您是否确认要删除该条评论吗?

    分享到微信