Transit Swap被黑分析

Numen Cyber Labs热度: 24859

Erc20协议中,approve授权一直是个问题,已经发生了多起安全事件。

原文作者:Numen Cyber Labs

原文来源:微信公众号

  事件回顾

10月2日,NUMEN实验室根据链上数据监测,发现TokenPocket支持的跨链交易平台聚合器Transit Swap遭到黑客攻击,损失金额巨大。目前黑客地址0x75F2abA6a44580D7be2C4e42885D4a1917bFFD46在以太坊链上有3180个ETH价值4161559美元,在BSC Chain链上有49612个BNB,价值14011105美金和一些其他代币。攻击损失接近2100W。

  攻击分析

攻击发生在bsc。用户在用Transit Swap进行兑换时,会有一个入口合约(0x8785bb8deae13783b24d7afe250d42ea7d7e9d72),这个入口合约会根据代币的种类选择路径,最后0x0B47275E0Fe7D5054373778960c99FD24F59ff52这个合约会调用0xed1afc8c4604958c2f38a3408fa63b32e737c428这个合约的claimtokens进行转账。

黑客


看上图,前面几次调用都是在查余额和查指定的合约有没有调用transferfrom的权限。

从调用0x8785bb8deae13783b24d7afe250d42ea7d7e9d72这个合约开始,这个合约相当于闪兑的入口,接下来调用0x0b47275e0fe7d5054373778960c99fd24f59ff52的callBytes(bytes)函数,这个地方的数据已经是恶意数据了。然后调用0x75fa557bb38daa465f06f5e605e46abe0d5ce9ec这个合约的getFeeRate(address,uint256,uint256,string),查费率。最后调用0xed1afc8c4604958c2f38a3408fa63b32e737c428合约的claimTokens(address,address,address,uint256),这个函数先授权0xed1afc8c4604958c2f38a3408fa63b32e737c428,然后再调用进行转账(应该是函数内部有不同的分支)。授权calldata看下图:

黑客


看调用栈,此时transferfrom已经是0xed1afc8c4604958c2f38a3408fa63b32e737c428,有权限调用transferfrom给黑客地址转钱。

参考tx:

0x181a7882aac0eab1036eedba25bc95a16e10f61b5df2e99d240a16c334b9b189

  最后

Erc20协议中,approve授权一直是个问题,已经发生了多起安全事件,同时在跨合约的函数调用时,通过上层调用透传到下层的数据需要谨慎,首先下层对上层给的返回值一定要是不信任的,需要经过正确的校验。熊市,黑客事件频发,各位用户多注意。

目前Transit Swap已经暂停了所有合约交易功能并在努力追踪黑客信息,希望能挽回本次攻击的损失。NUMEN实验室建议使用过Transit Swap去revoke.cash取消合约授权并且将自己的资金提走。

责任编辑:Felix

声明:本文为入驻“MarsBit 专栏”作者作品,不代表MarsBit官方立场。
转载请联系网页底部:内容合作栏目,邮件进行授权。授权后转载时请注明出处、作者和本文链接。未经许可擅自转载本站文章,将追究相关法律责任,侵权必究。
提示:投资有风险,入市须谨慎,本资讯不作为投资理财建议。
免责声明:本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况,及遵守所在国家和地区的相关法律法规。