铸币疑云 —— Paid Network 被盗细节分析

未知 2021-10-13 15:53

消息称,以太坊DApp项目Paid Network受到攻击。 攻击者因合同漏洞铸造了约1亿6000万美元的PAID令牌,获利2000 ETH (约300万美元)。 慢雾安全队将在第一时间跟进分析,现在将参考详情。

对攻击的详细分析

以上是攻击过程整体的调用过程的详细情况。

可以看到,整个攻击过程非常简单。 攻击者调用代理协议的函数签名(0x40c10f19 )的函数,结束整个攻击过程。 由于不知道该函数的签名,所以需要调查与该函数的签名相对应的函数是什么。

通过检查此函数的签名,我发现此签名支持mint函数。 也就是说,攻击者直接调用mint函数后,结束攻击过程。 到此为止,由于mint函数未通过认证,因此似乎会出现任意铸造货币的漏洞。 通过对Etherscan令牌移动过程的分析,似乎也可以证实这一猜想。

但事实真的是这样吗?

为了验证未认证的任意铸币的想法,需要分析合同的具体逻辑。 由于paid网络使用的是合同可升级模型,因此我们将分析具体的逻辑合同(0XB8…9C7)。 但是,我在Etherscan上调查后发现,这个逻辑合同没有开源。

此时,毕竟我们只能使用反编译来解码合同的逻辑。 使用Etherscan附带的逆向编译工具,可以直接逆向编译没有开源协议的合同。 反编译后,我们发现了一个惊人的事实:

通过反编译,可以看到合同的mint函数中存在认证,该地址为攻击者地址(0x187…65be )。 那么,为什么有认证的函数会被盗呢? 由于合同没有开源,看不到更具体的逻辑,只能根据现有的情况进行分析。 地址(0x187…65be )的私钥可能被盗,或者由于其他原因,攻击者可能直接调用mint函数进行了任意转换。

总结

这次攻击过程很简单,但经过详细分析后有了惊人的发现。 另外,这次攻击为权限过剩问题敲响了警钟。 如果这次mint函数赋予的认证是多签名地址,或者通过其他方法分散权限,就不会发生这次攻击。

参考链接:

攻击交易:

3359以太网. io/tx/0x4bb 10927 EA 7a FC 2336033574 B 74 EBD6F73 EF 35AC0DB1 BB 96229627 C 9d 77555 A 0

标签