主页 > imtoken制作冷钱包 > 以太坊再爆高危漏洞!黑客发行ATN 1100万代币始末

以太坊再爆高危漏洞!黑客发行ATN 1100万代币始末

imtoken制作冷钱包 2023-11-21 05:11:17

以太坊和以太经典未来哪个好_sitehqz.com 以太坊和以太坊贸易的关系_黑客以太坊私钥

事情发生在5月中旬,ATN技术人员发现Token合约因漏洞被攻击。 不过,ATN基金会随后透露,将销毁1100万个ATN,并恢复ATN总量。 同时,主链上线和映射时,黑客地址中的资产将被移除,保证原有固定总量不变。

以下为事件还原。

活动回顾

2018年5月11日中午,ATN技术人员收到异常监控报告,显示ATN Token供应异常。 迅速介入后,他们发现Token合约由于漏洞被攻击。 以下是黑客的攻击操作和利用合约漏洞的全过程。

攻击

本次攻击主要分为4个步骤。 首先,黑客利用ERC223方法的漏洞进行提权,将自己的地址设置为owner:

sitehqz.com 以太坊和以太坊贸易的关系_黑客以太坊私钥_以太坊和以太经典未来哪个好

二、黑客在获得所有者权限后,向其主要攻击地址发出1100w ATN:

黑客以太坊私钥_sitehqz.com 以太坊和以太坊贸易的关系_以太坊和以太经典未来哪个好

sitehqz.com 以太坊和以太坊贸易的关系_黑客以太坊私钥_以太坊和以太经典未来哪个好

三、黑客还原机主设置,企图隐藏行踪:

黑客以太坊私钥_sitehqz.com 以太坊和以太坊贸易的关系_以太坊和以太经典未来哪个好

最后,黑客将盗取的黑币从主地址分发到14个地址:

以太坊和以太经典未来哪个好_黑客以太坊私钥_sitehqz.com 以太坊和以太坊贸易的关系

利用合约漏洞

ATN Token合约采用了在传统ERC20Token合约基础上的扩展版本ERC223,并使用了其中的dapphub/ds-auth库。 采用这种设计是为了实现以下能力:

天然支持Token互换协议,即ERC20Token与ERC20Token之间的直接互换。 本质上就是在发送ATN的时候黑客以太坊私钥,通过回调函数执行额外的指令,比如发回其他的Token。 可扩展和结构化的权限控制能力。 Token 合约可以升级,在出现意外情况时可以进行治理。

单独使用 ERC223 或 ds-auth 库时,

sitehqz.com 以太坊和以太坊贸易的关系_以太坊和以太经典未来哪个好_黑客以太坊私钥

这没什么不对,但是当你把两者结合起来时,

黑客利用回调函数回调setOwner方法,

获得高级权限。

ERC223转账代码如下:

黑客以太坊私钥_以太坊和以太经典未来哪个好_sitehqz.com 以太坊和以太坊贸易的关系

黑客转账时在方法中输入以下参数:

以太坊和以太经典未来哪个好_黑客以太坊私钥_sitehqz.com 以太坊和以太坊贸易的关系

当交易被执行时,

黑客以太坊私钥_sitehqz.com 以太坊和以太坊贸易的关系_以太坊和以太经典未来哪个好

接收者将由_to(ATN合约地址)分配,

ATN 合约将调用 _custom_fallback

即DSAuth中的setOwner(address)方法,

此时msg.sender成为ATN合约地址,

owner_参数为_from(黑客地址)

ds-auth库中的setOwner代码如下:

sitehqz.com 以太坊和以太坊贸易的关系_黑客以太坊私钥_以太坊和以太经典未来哪个好

这个时候setOwner会先验证auth的合法性,msg.sender就是ATN的合约地址。

sitehqz.com 以太坊和以太坊贸易的关系_黑客以太坊私钥_以太坊和以太经典未来哪个好

setOwner的修饰符授权码如下:

黑客以太坊私钥_sitehqz.com 以太坊和以太坊贸易的关系_以太坊和以太经典未来哪个好

黑客利用ERC223方法和DS-AUTH库的混合漏洞,将ATN Token合约的所有者更改为自己控制的地址。 获得所有者权限后,黑客发起另一笔交易攻击ATN合约黑客以太坊私钥,调用mint方法向另一个地址发行1100万个ATN。

最后黑客调用setOwner方法恢复权限。

附言。 截至发稿,ATN官方称,黑客将黑币散布在14个不同的新地址,这些地址中没有ETH,不存在立即转移到交易所出售的风险。

漏洞是如何造成的?

这起事件主要是开发者对以太坊底层函数call、callcode、delegatecall使用不当造成的。

call、callcode、delegatecall是以太坊智能合约编写语言Solidity提供的底层函数,用于与外部合约或库进行交互。 使用不当会造成严重后果。

sitehqz.com 以太坊和以太坊贸易的关系_黑客以太坊私钥_以太坊和以太经典未来哪个好

例如以下几种情况:

以太坊和以太经典未来哪个好_sitehqz.com 以太坊和以太坊贸易的关系_黑客以太坊私钥

在上面的例子中,调用函数的调用地址(如上图中的_spender参数)可以由用户控制,攻击者可以将其设置为合约本身的地址,同时call函数调用的参数(如上图中的_extraData参数)也可以由用户任意输入,攻击者可以调用任意函数。

攻击者利用上述操作伪造合约账户进行恶意操作,可能造成如下影响:

绕过权限检查,调用敏感函数,如setOwer; 窃取合约地址持有的代币; 伪装成合约地址与其他合约进行交互;

因此,在编写合约时,使用此类函数时需要判断调用参数的安全性,建议谨慎使用。

如何避免此类漏洞

为了避免此类漏洞,我们提醒开发者注意以下几点。

谨慎使用诸如 call 和 delegatecall 之类的低级函数。 使用此类功能时,需要对调用参数进行限制,对用户输入的调用发起地址和调用参数进行严格限制。 例如,调用的地址不能是合约本身的账户地址,调用的参数由合约预先定义为方法选择器字符串,避免直接注入字节可能造成的恶意调用。 对于一些敏感功能,不要使用合约本身的账户地址作为可信地址。 准备修复措施,添加Guard合约,禁止回调函数回调到ATN合约本身。 随时添加黑名单合约,冻结黑客地址。 合约无小事 基于以上分析,我们认为call函数的使用一定要慎重,在智能合约的开发中应尽量避免call函数的使用。 如果使用,必须严格限制其相关参数。 另一方面,智能合约在部署前应该经过安全审计,比如形式化代码验证。 仅依靠开发者的经验和能力对合约进行安全审计,往往存在隐患。 过去业内发生的多起合约漏洞事件也说明了这个问题,开发者必须引起重视。

链上哪个好? 华为云区块链服务(Blockchain Service)是面向企业和开发者的高性能、高可用、高安全的区块链技术平台服务。 它可以帮助企业和开发者创建、部署和管理区块链应用。 华为云区块链开放易用:基于Hyperledger 1.0和kubernetes,配置简单,分钟级部署,提供全流程、多维度的自动化运维服务。 安全和隐私有保障! 完善的用户、秘钥、权限管理和隔离处理,多层加密保障,国密、同态加密等隐私处理,可靠的网络基础安全能力,运行无忧。

欢迎体验!