Pandemica庞氏游戏存在Gas超出漏洞,80余万资金遭冻结

在18天前,以太坊网络中有人部署了一个名为Pandemica的新款的庞氏游戏,在以太坊中类似的游戏都是非常受欢迎的,譬如PoWH 3D、FOMO 3D等,因为基于区块链不可篡改、公开透明等特性,人们就算知道是“庞氏骗局”也会蜂拥而上,这也是我们不把这类游戏叫做“庞氏骗局”而叫做“庞氏游戏”的原因。

这是合约地址:https://etherscan.io/addres/0xD8a1Db7AA1E0ec45E77B0108006dc311cD9D00e7#code

在图中可以看到,合约里还有458个以太币,价值12万美元.....不过,在这个合约中又发生了和以前parity多签名钱包合约一样的惨案,里面的资金全部被冻结

分析

首先从游戏机制说起,这个合约的机制非常简单:向合约充以太币,然后合约会不定时(受owner控制)向充值的用户赠送充值金额的3%作为奖励,回馈给用户。

合约代码解释可以看如上图,整个合约不超过60行,非常简单,但是这里的Count函数,也就是发放3%奖励的函数有一个致命的缺陷。

可以看到,函数内是使用while循环来给每笔充值发放奖励的,循环次数是有充值数决定的,尴尬的事情来了:在以太坊网络中进行每一次计算都是需要消耗Gas的,而以太坊每一个区块所能消耗的Gas是有上限的,在以太坊主网中,这个上限是8000000 Gas。

从合约中可以看出来,counter变量在总体上是增量的,因为调用Count函数将counter变量归零后,下一次用户充值还会将充值数赋值给counter,所以 当counter的值达到某个阈值的时候,调用Count函数所需要的Gas会超过主网一个区块所能消耗的Gas的上限,这笔资金将冻结以太坊主网未来提升区块Gas上限的那一天才有可能解冻。

然而,这样的悲剧在昨天就已经发生了。

图中为该合约的owner,可以看到3笔失败的交易,owner都在逐步提升手续费,从0.05至0.19,可是依然失败。

owner在第三次用了7900000 Gas(已经接近区块Gas上限)尝试失败之后,选择了放弃。

目前官网也已经发布了公告,在等待主网区块Gas上限提升。

然而现在依然还有用户在不断充值。

每一笔充值都会不断增加Count函数所需要的Gas,如果有攻击者使用极低的充值金额来进行恶意充值,那么这笔以太币将永远冻结。

最后,BCSEC团队监测到两天前有一个合约抄袭了该合约的代码,在做同样的事情。

合约地址为:https://etherscan.io/address/0x4208a616fb79828ebff99f17fc472a2ad6374c72

在这里BCSEC团队提醒投资者,千万不要去充值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值