互联网技术 · 2024年3月9日 0

数字彗星探索神秘的GodGame盗币

God Game盗币案技术分析

1、案件描述:

2018年8月22日,GOD.GAME官方发布消息,合约遭受攻击,所有的投注ETH被盜走。盗走ETH的黑客地址为0xC30E89DB73798E4CB3b204Be0a4C735c453E5C74。

数字彗星探索神秘的GodGame盗币

2、合约概况

2.1 合约名称

God

2.2 合约地址

0xc30e89db73798e4cb3b204be0a4c735c453e5c74

2.3etherscan链接

https://etherscan.io/address/0xCA6378fcdf24Ef34B4062Dda9F1862Ea59BaFD4d

3、细节分析

数字彗星安全团队成员对合约的交易记录进行查询,发现黑客通过函数withdraw()于Aug-20-2018 04:57:26 PM +UTC 转走了243.88Eth。

数字彗星探索神秘的GodGame盗币

经过数字彗星安全团队对函数withdraw()进行分析,发现函数内对红利进行计算、累加后,交易给合约调用者。

数字彗星探索神秘的GodGame盗币

如何提高_dividends的值,从代码看,可以通过以下2个方式:

方式1:在226行通过函数myDividends()

追踪函数myDividends(),对函数的实现进行分析

数字彗星探索神秘的GodGame盗币

追踪函数dividendsOf(),对函数进行分析

数字彗星探索神秘的GodGame盗币

提升profitPerShare_的值可以通过函数sell()的276行

数字彗星探索神秘的GodGame盗币

通过对整个合约代码的检查,我们发现profitPerShare_的值没有任何一个地方进行降低的,就此,我们可以断定,黑客使用同一个地址频繁的买入和卖出(通过调用函数sell())Token,就可以将profitPerShare_的值调到很大。攻击者再使用同一个地址调用方法withdraw(),因为myDividends值直接由profitPerShare_的值决定,这样,交易数额就提升了。

方式2:在233行累加合约调用者的红利

方式1已经可以达到提升交易额的目的,此方式不做分析。

4、总结

针对上述问题,数字彗星安全团队建议:对于合约的转账数量,需要进行严密逻辑验证。

另外,数字彗星安全团体通过使用自研分析引擎进行分析,发现合约中还存在其他问题,如:溢出漏洞。

数字彗星分析引擎结果:

数字彗星探索神秘的GodGame盗币

经过团队成员对引擎结果进行初步审计,认为该合约存在一定数量的潜在安全问题。详细如下:

Error:共18个,其中17个确实存在安全风险。

问题1:溢出漏洞

1)行157:

数字彗星探索神秘的GodGame盗币

其150、153、154、155行均采用了SafeMath提供的API进行数学运算,但157行未使用。其中magnitude 的值声明为第77行

数字彗星探索神秘的GodGame盗币

该值固定已经很大,再与_dividends进行相乘,极可能溢出。

2)行:167

数字彗星探索神秘的GodGame盗币

3)行:189

数字彗星探索神秘的GodGame盗币

4)行:192

数字彗星探索神秘的GodGame盗币

5)行:230

数字彗星探索神秘的GodGame盗币

6)行:233

数字彗星探索神秘的GodGame盗币

7)行:271

数字彗星探索神秘的GodGame盗币

8)行:315

数字彗星探索神秘的GodGame盗币

9)行:317

数字彗星探索神秘的GodGame盗币

10)行:322

数字彗星探索神秘的GodGame盗币

11)行:324

数字彗星探索神秘的GodGame盗币

12)行:332

数字彗星探索神秘的GodGame盗币

13)行:333

数字彗星探索神秘的GodGame盗币

14)行:708

数字彗星探索神秘的GodGame盗币

15)行:718

数字彗星探索神秘的GodGame盗币

16)行:721

数字彗星探索神秘的GodGame盗币

17)行:734

数字彗星探索神秘的GodGame盗币

Warnning:共3个,其中问题1个可能引起安全风险,其他2个是对代码编写风格的建议。

问题1:使用^可能会导致有未知的bug被最新的编译器触发。

行1:

数字彗星探索神秘的GodGame盗币

问题2:事件和函数名归一化后(lowercase)相同

行288:

函数名transfer和行58的事件名Transfer归一化后名称相同。

数字彗星探索神秘的GodGame盗币
数字彗星探索神秘的GodGame盗币

问题3:使用了内联汇编

数字彗星探索神秘的GodGame盗币

数字彗星安全团队建议使用SafeMath安全运算库替换当前的算数运算。数字彗星安全团队提供严格的智能合约审计服务,尽力保护区块链投资者和交易平台资产,维护区块链行业积极健康发展。