Author Topic: 【公告】DACPLAY615攻击事件报告  (Read 3440 times)

0 Members and 1 Guest are viewing this topic.

Offline kinglaw0577

  • Full Member
  • ***
  • Posts: 95
    • View Profile
    • BitShares Richlist
建议推出悬赏机制,给发现漏洞的人一定的奖励,把黑客的力量引导到发挥正面作用。我想只要奖金设置得当
黑客会选择领赏而不是攻击,达到互利共赢。以利导之,让做贡献的人得利,做恶的人受损,慢慢培养起网络道。
☆bitshares Richlist富豪榜 http://richlist.btsabc.org
☆BTSABC wallet online比特帝国在线钱包 https://bit.btsabc.org

Offline pvkpgp

  • Newbie
  • *
  • Posts: 4
    • View Profile
  • BitShares: pvkpgp
      我参加了 dacplay的早期众筹,对dacplay的开发进展,深表遗憾! 
没有实质性的应用。这么多年像小孩过家家。小大小闹,圈钱坑害投资人!!!

Offline Musewhale

  • Hero Member
  • *****
  • Posts: 2881
  • 丑,实在是太丑了 !
    • View Profile
请各位参与者在充分理解风险的前提下谨慎参与
MUSE witness:mygoodfriend     vote for me

Offline ebit

  • Committee member
  • Hero Member
  • *
  • Posts: 1905
    • View Profile
  • BitShares: ebit
telegram:ebit521
https://weibo.com/ebiter

Offline logxing

首发链接:https://talk.dacplay.org/index.php?topic=12906.0

【攻击概况】
2016年6月15日,攻击者发动了首次攻击(https://blocks.dacplay.org/blocks/block?id=3630918),该攻击无中生有了2000万PLS。随后攻击者又发出了2次攻击,累计无中生有了共计1亿PLS,其中4000万PLS转账到云币卖掉并换成BTC成功提现。我们于2016年6月16日早上发现区块链上的异常交易数据,立刻确认问题并于1小时内紧急发布了受托人专用客户端,避免了损失进一步扩大。

【攻击原理】
本次攻击是利用了整数溢出原理。当发生一笔转账交易时,提取与存入要求相同。同时BTS1允许一笔交易中有多笔存入。攻击者构造了一个转账交易,提取为0.5PLS,存入为3笔,分别是92,233,720,368,547.7800 PLS,92,233,700,368,547.7800 PLS和20,000,000.0000 PLS。在纯粹的数学比较中,0.5肯定不等于92,233,720,368,547.7800 + 92,233,700,368,547.7800 + 20,000,000.0000。但是在程序运行中,由于一个整数在内存中的存储字节是有限的,当相加和超出整数的最大范围时会发生溢出,也就是程序判定两者相等。其中前两笔超大数存入实际导致该地址余额为负数,是无法进一步转账的,但第三笔2000万的存入是可以进一步转账的。这就是导致本次攻击的基本原理。

目前我们已经针对该问题发布了新版PLAY客户端,目前最新版为0.4.5版。在新版本中已经修正了该问题。请所有用户及时更新。

【问题的由来】
我们已经确认该问题来自BTS1的代码,不是PLAY的新增代码。

可以确定,至少在BTS1的早期版本中存在该问题。在BTS1的最终版本0.9.3c中,转账代码仍然没有修复该问题,但我们并不确定BTS1开发者是否通过其他方式已经修正了该问题(要修正该问题,不一定非要通过修改转账代码来进行)。PLAY作为BTS1代码的fork,我们始终关注着BTS1的进展,但我们并未见过该问题相关的issue。我们也不确定,BTS1上是否曾经发生过类似攻击。

此外,据我们的初步研究,由于BTS2采用了不同的实现方式,从原理上BTS2很可能不存在该问题。

注意,以上关于BTS的分析是我们的初步研究结论,仅作为开源社区之间的友情提示,并不能保证绝对正确性。关于BTS客户端以及区块链的情况,一切以BTS开发者的公告为准。

PLAY开发组对广大PLS持有人表示诚挚的道歉。我们将来会加强代码的审核和测试,尽最大可能避免类似问题发生。

【补救措施】
本次攻击,攻击者共成功售出4000万PLS,即市场PLS流通总量增加了4000万,该笔资金已经分布在并无过错的购买者手中,已经无法追回。因此我们将销毁储备中的4000万PLS来确保PLS的流通总量不变。攻击者剩余的攻击所得6000万PLS在新版本中已经失效,不会对流通总量有影响。

【风险提示】
值得一提的是,就在PLAY被攻击的第二天,运行于以太之上的著名合约DAO也发生了被攻击事件。DAO攻击属于智能合约攻击,与PLAY此次发生的攻击都属于直接针对区块链数据的攻击,而不同于以往常见的盗取私钥的传统黑客行为。我们深深感受到区块链产品仍处于相当早期的研发阶段,请各位参与者在充分理解风险的前提下谨慎参与。
BTS Account:logxing