互联网|高智商犯罪:价值4000万人民币的3行代码


几行平淡无奇的代码 , 悄无声息地薅走价值约 4000 万元人民币 , 黑客的手段是越来越高明了 。
神奇的是 , 这次安全事故发生后 , 代币的价格没崩 , 没有单独的受害者 , 也没有维权 , 就因为黑客没偷项目方的秘钥 , 也没盗走用户的资产 , 而是采用了一种更隐蔽的方式:在矿工兢兢业业挖矿的时候 , 悄悄「增发」了 RVN(Ravencoin) , 让人以为(至少看起来)像是系统正常产生的代币 。
事情的经过是这样的 。
6 月 29 日早上 , 海外的 CryptoScope 团队成员最先发现区块链项目 Ravencoin 并没有按照预期运行 , 在每个区块正常产生 RVN 之外 , 还额外创建了多余的 RVN 。 他们很快对异常进行标记 。 在确认漏洞后 , 他们联系了 Ravencoin 开发团队 。
经开发团队确认 , Ravencoin 确实存在漏洞 , 随后团发布紧急修复公告 。 截至这时 , 漏洞已经让系统多产生了约 1.4%(约 3 亿枚)的 RVN 代币 , 这部分凭空产生的代币 , 数量大概是所有 RVN 矿工埋头苦干 44 天的开采量 。
由于这部分 RVN 没有任何限制 , 等到被发现时 , 大部分代币已经流入了加密市场 , 冻结、回滚等常规操作已经无法奏效 。

根据 CryptoScope 的披露 , 这些被增发的代币 , 大部分流入了币安 , 少部分流入了 OKEx 。 或许 , 这个「聪明」的黑客并没有急躁地卖出砸盘 , 而是有耐心地出货 , 一直到被发现 。 根据加密货币行情网站 Coinmarketcap 的数据 , 今年 6、7 月份 , RVN 代币的二级市场价格并没有产生明显下跌 , 甚至在 7 月 6 日后迎来了上涨 。
互联网|高智商犯罪:价值4000万人民币的3行代码
本文插图

不幸的是 , 在开发团队发布补丁和新协议执行之前的几个小时 , 又有人利用这个漏洞「增发」了约 480 万枚 RVN 。 根据团队的披露和确认 , 至少有三个加密地址牵涉其中 。
核心开发者 Tron Black 透露 , 其中有一个「攻击者」留下了蛛丝马迹 , 开发人员掌握了信息后 , 希望对方将增发的 RVN 转至 RXBurnXXXXXXXXXXXXXXXXWUo9FV 地址进行销毁 。 据披露 , 被掌握信息的「盗贼」后续将增发的部分代币打回了销毁地址 。 最终 , 大约 390 万枚 RVN 代币通过这种方式被销毁掉了 。
互联网|高智商犯罪:价值4000万人民币的3行代码
本文插图

Ravencoin 为什么会被盯上?
黑客之所以盯上 Ravencoin 的挖矿代码 , 而不是盗走团队的私钥 , 或者用户的币 , 其实也有原因 。

Ravencoin 简称 RVN , 中文名是「乌鸦币」或「渡鸦币」 , 于 2018 年 1 月诞生 , 无 IC0 , 无预挖矿 , 是个纯粹的「社区币」 。 乌鸦币在比特币源码基础上进行算法改良 , 优化转账环节 , 并增加类似以太坊的资产通证发行功能 , 意在打造一个完全去中心化、社区自治的区块链服务平台 。
其实 , 区块链领域中完全社区化的项目并不算多 , 因为没有预挖和预留 , 估计除了老老实实挖矿的收入 , 开发团队手上也没多少币 。 之前加密货币交易平台币安的创始人赵长鹏 , 就曾公开赞扬乌鸦币团队:「没有 IC0 , 社区化项目 , 低调谦逊的团队 , 不需要上币费 。 」
去年 10 月 , 乌鸦币升级算法 , 更改为 X16R 的升级版 X16Rv2 , 目的就是为了阻止乌鸦币网络上 ASIC 矿机继续挖矿 。 在此之前 , 大约有 83% 的算力是 ASIC 矿机 , 升级后 , RVN 的算力很快从原来的 30T 下降到 5T 左右 。
有意思的是 ,这个并没有公布全部成员 , 基本只有 Bruce Fenton 和 Tron Black 两位开发者露脸的团队, 不过 , 这没有影响外界对项目的估值 。

此前 , 在接受媒体采访时 , 美国电商巨头 Overstock 的前 CEO Partrick Byrne 表示已将数百万美元投入了乌鸦币 , 并声称提供的服务比人们意识到的还要多 。 去年 10 月 , 他在推特回答网友询问曾买入什么加密货币时坦言 , 是比特币和乌鸦币 。 而包括 Medici Ventures 和 tZERO 也曾表示 , 要在基础设施方面支持乌鸦币的开发 。
没想到 , 平日低调的乌鸦币竟然被黑客盯上了 。
黑客的方法
一位微信名为「奋斗的 M4ster」的社区成员提供了他的分析思路 , 发现这名黑客只用了 3 行代码就成功「生成」了价值 4000 万人民币的财富 。
互联网|高智商犯罪:价值4000万人民币的3行代码
本文插图

问题出在上面这段代码 , 从代码表达上看 , 这部分与铸币有关 , 但这段代码只有一个 else if 。
在代码语言中 , else if 是「否则如果」的意思 , 是一种判定条件 , 很显然 , 这段代码里只判定了一个条件 , 没有继续判定其他条件 。
于是 , 黑客只要发送一笔交易 , 就可以凭空铸出一笔新币 , 即便这笔新币不在正常的 RVN 总量范围内 , 而是超出总量之外的数量 , 一笔交易就可以凭空造成 50 万枚 RVN 。
RVN 总量有 210 亿枚 , 几十万的新增几乎就是九牛一毛 , 谁都发现不了 。 黑客笑了 。

从 5 月 9 日 , 黑客发起第一笔攻击开始 , 他用了近两个月时间 , 总共发送了 5000 笔交易 , 慢慢造出了约 3 亿枚 RVN , 占总量的 1.4% , 总价值 4000 万人民币 。
黑客的最后一次攻击发生在 6 月 29 日 。 当时 CryptoScope 团队正在解 bug , 顺便看了一眼浏览器 , 突然就觉得 RVN 的总量有点问题 。 在黑客持续攻击了 2 个月后 , 这一行为最终被发现了 。
一般来说 , 代码上的漏洞都是黑客仔细研究代码发现的 , 需要付出极大成本才能发现一个有价值的漏洞 , 而 RVN 的这段代码 , 是黑客自己写的 。
Ravencoin 作为一个开源项目 , 所有人都可以在 Github 上为该项目提供代码 。 因为开源项目的初衷就是让所有开发者齐心协力 , 为项目优化做贡献 , 每个人都可以把自己的想法写成代码 , 放在 Github 上 。 代码会由项目方审核 , 决定用不用这段代码 。
黑客在 1 月提交了这段代码 , 项目方没有发现问题 , 直接整合进了项目里面 , 这才给了黑客机会 。 而黑客整整潜伏了 4 个月 , 才开始攻击 。
谁受到了损失
这并不是一次普通概念的黑客攻击 。 一般的黑客攻击 , 是需要黑客攻击账户 , 从账户中盗走用户资产 。 所以黑客攻击中大部分损失的是用户 , 但这次的另类黑客攻击 , 损失的是谁?

用户并没有受到损失 , 因为资产价格没有波动 , 项目方也几乎没有损失 , 他们自己也无需补偿任何人 。
真正损失的是矿工 。
看了项目方提供的增发解决方案 , 基本上都是从挖矿角度解决 , 比如提前产量减半、强制总量达到上限后停止挖矿等 。 按照这样的逻辑 , 这场黑客攻击的损失方只能是矿工 。 矿工靠挖矿生存 , 这 3 亿枚 RVN 本应是矿工的奖励 , 现在他们拿不到了 。
如果这一切都是黑客从头计划好的 , 那么这就是一场完美的攻击 , 1 月布局 , 5 月攻击 , 7 月收尾 , 如果不是意外被发现 , 整个过程可能还会持续更长时间 。 用户不会报警 , 因为没有损失 , 项目方不会报警 , 因为是自己审核问题 , 矿工也无法报警 , 他们损失的是若干年以后的奖励 , 而且 , 谁会去受理这样的报案呢?
【互联网|高智商犯罪:价值4000万人民币的3行代码】


    推荐阅读