1年前,某黑客盗取了价值5500万美元的以太币,本文尝试将这段历史重现于公众面前。 一、第666行代码 夏天感冒最痛苦不过,艾明·古恩·萨若( Emin Gün Sirer )从他1岁的儿子那里传染上了感冒病毒。于是,2016年6月13日,这位康纳尔大学计算机科学副教授,发现自己不得不在病床上一边流眼泪擦鼻涕,一边抱着笔记本电脑跟代码漏洞死磕——他怀疑某行代码中的缺陷有可能导致2.5亿美元有被盗风险。 这不是什么无足轻重的代码,这是区块链相关软件设计最新突破里的核心代码,而区块链是创新组合了去中心化计算和密码学,在2009年缔造了虚拟货币比特币的核心技术。自那以后,区块链改变众多行业生态系统的前景,吸引了企业董事会和政府之类头头脑脑的关注和想象延伸。然而,这位土耳其出生的教授,在那个周一带病探索的东西,却是比特币的下一个飞跃——以太坊(ethereum)区块链。 以太坊区块链不是将比特币在用户间流转,而是托管被称为“智慧合约”的全功能计算机程序——基本上靠代码而非法庭执行的协议。这意味着可以自动化债券付款生命周期,或者医药公司可以验证药品来源。不过,智慧合约还很新,基本未经检验,且与所有软件一样,可靠性由其编码决定——而古恩非常确定他在代码中发现了大问题。 晚上7:30的时候,在一封发给他门下研究生的邮件中,古恩指出,他正在审查的智慧合约代码第666行可能有问题。细节决定成败古恩怕该漏洞可使黑客无限制提款——即使攻击者账户中仅有10美元(攻击者的身份必需为虚拟货币投资人),也可以无限制提出上千万美元。 数量惊人的钱存在于一个名为“分权自治组织(DAO)”的程序中。该程序在近1年前编写建立,由智慧合约监管,用于民主化以太坊项目资金支持。数千名植根于计算机科学前沿的年轻梦想家、野心家和开发者,都投资了DAO。这都是真金白银,2.5亿美元,他们的钱,用来打造更美好的世界的钱,这每一分钱都笼罩了巨大的风险。 古恩,这位留着黑色短发,看上去比实际年龄年轻10岁的45岁教授,一直在跟踪并公布DAO设计中的缺陷。几周前,5月27号,与两名同事一起,他敦促投资人在安全漏洞未修复前别再往DAO里投钱。然而,已经太迟了,该程序在第二天继续在线。像DAO这样的智慧合约,一旦在以太坊区块链上发布,就完全依赖其代码了。这意味着,DAO代码无法修复。其他区块链专家,包括比特币基金会共同创始人皮特·维赛尼斯,也指出了智慧合约中的安全缺陷,但古恩似乎是首位定位该吞钱漏洞的专家。问题在于,该代码太新了,没人知道会发生什么,或者说,没人知道里面有没有问题。 古恩也有自己的疑虑。这甚至不是他的工作。他只是出于兴趣而已。戴安也不觉得他们发现了什么。邮件中,他说:“我们或许进退两难了。”之后不久,在古恩指出666行的错误时,戴安回复说:“我不这么认为。” 古恩说:“我们并不是每次发现个可疑漏洞就会敲响警钟。”相反,他躺床上去缓解感冒了——这才是他认知中真正需要修复的漏洞。 4天后,克里斯托弗·延奇躺在自家地板上,深呼吸,极力保持平静。 二、价值2.5亿美元的虚拟货币 那是周五早上,西方世界的软件开发者们都被延奇创建的DAO遭到攻击的新闻惊醒了。古恩没说错,真的有漏洞,能把钱吸走的漏洞。 延奇一头黑发满脸胡子,与家人住在距捷克边境不远的德国米特韦达乡下。延奇一家的早晨总是一片忙乱,因为他和他妻子得喂饱从2岁到9岁不等的5个小孩,并送他们上学。然而今天,在接到他哥哥的电话,听说DAO被黑的消息后,延奇不得不放下他的家庭责任。他对妻子说:“你照看孩子,我有急事。” 这是史上最大数字劫案之一的故事。或许你听说过去年黑客入侵Swift银行间消息系统,从孟加拉央行盗取8100万美元的事,但DAO攻击却是完全不同的类型。它就发生在众人眼前,想看就能看见,而且阻止不了。就像5月份WannaCry勒索软件暴露出计算机操作系统漏洞一样,DAO黑客事件也暴露出智慧合约安全中的早期弱点,让社区中的很多人震惊于他们竟然没能及时发现这些漏洞。事件余波最终会导致黑白帽子大战——在奇怪又充满未来感的DAO战争中。 DAO的创意,源于延奇从另一个互联网驱动的现象中借用的概念:众筹。32岁的延奇是个理论物理学家,与几个同事一起,于2015年创立了Slock.it。在他们考虑为公司筹资的时候,延奇采用了很多人都干过的做法——出售数字货币,也就是代币。但是,为什么每家新初创公司都得研发自己的初始货币产品呢?延奇想,为什么不能是由一个大基金来监管所有的数字货币? 2015年11月,在伦敦举行的 DevCon 1 开发者大会上,延奇将自己的想法告诉了全世界。“创建一家公司的区块链方法是什么?”延奇问他的听众,“显然,必须是DAO。”它的运作方式是这样的:以太币,作为比特币一类的虚拟货币,被用于在以太坊区块链上注资并开发应用。这类似于创建像iTunes一样的音乐App,或是按Uber路线创建拼车服务。投资人用以太币购买DAO代币;代币可用于投票支持自己喜欢的项目。只要支持的App赚到钱,代币持有者就能分享利润。 延奇花了6个月时间创建DAO,在此期间,他觉得这东西可以筹集到500万美元。从4月30日到5月28日,DAO众筹拉来了1.5亿美元。这是在以太币交易价值略低于12美元的时候。随着以太币价值在随后几周猛涨——到攻击前日已攀升至20.75美元,DAO的价值也水涨船高,来到了惊人的2.5亿美元。延奇从未想过自己创建的这个东西竟是带着致命原罪来到世间的,如此巨大的价值无疑也是个巨大的标靶。 “我们希望这东西能成为去中心化共享经济的核心。”延奇如今很是后悔当初没给筹资设个上限:“相对这么大个实验来说,一切都还太早了。” 攻击发生后的几周,延奇和以太坊社区的其他人,都将忙于设法应付自身危机——缩小版的2008银行和政府救市。“它太大了,不能倒。” “这是我遭遇过最疯狂的事。这是几乎任何人能遭遇到的最疯狂的事。” 但是,为什么会有人投资DAO呢?这与以太坊社区固有的数字自由主义有关——类似导致了比特币诞生的那套信仰。可以将比特币看做首个不能被政府或公司阻止使用的全球货币;最重要的是,比特币几乎不可能被黑。以太坊,则又是另一个层面的事了。这就是一台不可审查的全球计算机。前所未见和超级神奇之外,以太坊还有点可怕。诞生之后,DAO便点燃了极度渴求它的社区的投资热情。 习惯了工作到深夜以与在北美的同事保持联系,延奇通过慢跑或在附近的乔保河划皮划艇,来释放压力恢复精神。但在那个周五早晨,他有更紧迫的任务,必须把自己从地板上拖起来,去处理攻击。“我进入了紧急状态:别试图救回DAO了。一切都结束了。” 然而,远未结束。 三、史上最大数字货币劫案 数小时后,地球的另一边,位于里约热内卢科帕卡巴纳海滩附近的公寓里,亚历克斯·范·德·桑德依然醒着。这位娃娃脸的以太坊开发者,出生于巴西巴伊亚地区圣克鲁斯-卡布拉利亚的一个小渔村,在3岁的时候随父母搬到了里约。他在Reddit和推特的网名叫“avsa”。在电话联系一通,了解为什么Skype上都炸了之后,他对妻子说:“记得我告诉过你的那一大笔不会被黑的钱吗?”她点了点头。“现在那笔钱被黑了。” 他的第一反应是取出自己的DAO代币。他持有大约10万个,当时价值1.5万美元。他是以太坊钱包App的主要设计者,该钱包App可让用户与区块链互动。范·德·桑德火速登录,然而他的口令不起作用。只是出了点小故障,而当他努力解决时,他的恐慌平息了下来。他意识到,自己不应该放弃DAO,而应该尝试拯救它。而要做到这一点,他需要格里夫。 格里夫·格林,身兼数职的洛杉矶按摩师和西雅图社区组织者,是全球少数几个拥有数字货币硕士学位的人。当然,他的学位是从尼科西亚大学在线获取的。这个自我描述为“梦想家”的32岁男人,是最接近以太坊市市长这类人物的人。格林认识以太坊社区的每个人;事实上,他就是第一个将攻击消息传给西蒙的人。西蒙是延奇的哥哥,同时也是Slock.it的共同创始人。 当时格林已经在Slock.it做了6个月了,那天早上他是在延奇妈妈位于米特韦达的房子里醒来的。延奇有8个兄弟姐妹,所以他妈妈有空余的卧室供格林暂住。利用他广阔的人脉,格林开始尽可能地确认都有谁在操作DAO,甚至要求陌生人发送照片或扫描他们的身份证——试图鉴别出内部隐藏的敌人。 然后,奇怪的事情发生了:攻击停止了。攻击开始后6小时里,盗贼成功窃得 DAO 120万以太币中的30%——当时价值5500万美元。“我们甚至不明白为什么那人停手了。” 如今,格林忙于保护尚未被攻击者偷走的剩下70%。 四、合法的“抢银行”? 在德国,范·德·桑德一与格林取得联系,便连同其他两三个人,构建了后来被称为罗宾汉小组的基础——大胆反抢DAO剩余资金的白帽黑客集合。为拯救DAO,他们不得不盗取剩余的以太币,然后归还给其合法拥有者。 然而,在周五的一片硝烟狼藉中,团队内部冒出了些微疑虑。“黑掉什么东西到底意味着什么?”范·德·桑德问道。没人知道他们将要做的合不合法。而且,他们的黑客行动难道不是跟他们试图阻止的盗窃活动一模一样吗?然后,很现实的问题。“谁拍板动手?”这么做将开启他们的反击,惊动社区。“必须有人开第一枪。” 攻击前夜的以太币价格,升到了历史新高的20美元多一点。被黑的消息一出,周五晚间即暴跌至15美元,蒸发掉近5亿美元市值。在那个价格点上,DAO依然持有1.25亿美元价值,罗宾汉小组担心攻击会卷土重来。如果攻击重现,他们就是第一道防线,因此,范·德·桑德同时使用他的DAO代币发动反击,成为该小组的公众形象。 这时候,不妨将DAO看做《异形》中雷普丽启动自毁程序之后的那艘宇宙飞船。想逃脱,她就得使用逃生舱。DAO投资人必须启动类似的程序,来部署那可将以太币救出DAO的逃生舱。支配逃生舱动作的代码,就是漏洞存在的地方。所以,为盗出剩余DAO资金,罗宾汉小组得进入舱内利用该漏洞——而由于延奇编写DAO的方式,他们只有极短的时间窗口和少量几个可供挑选的逃生舱。 发动攻击前几分钟,范·德·桑德在小组Skype聊天中开玩笑说:“去抢银行咯!”没人笑。“不是每个人都能理解其中的笑点。” 在科帕卡巴纳的公寓里,范·德·桑德已经准备好按下笔记本上发动攻击的按键了。但突然之间,他连不上网了。他的路由器宕机了。“我简直想骂娘!”他说。他只剩30分钟来执行罗宾汉黑客行动。他疯狂拨打自己的巴西互联网服务提供商NET公司,但始终停留在自动语音客服阶段。机器人的声音告诉他:“我们知道您的社区发生了互联网问题。”在他身上充分体现出现实的嘲讽:他正试图从机器人那里盗取千万美元,却被另一个机器人给伏击了。 “然后我们就错过了机会。”窗口关闭了。他从正要拯救DAO的情绪高点,跌落到了他们的国际联系被NET的故障强行切断的崩溃边缘。他去遛了遛狗,然后爬上床睡觉,满身挫败感。 第二天是周六,范·德·桑德试图再次召集罗宾汉小组,潜入另一个逃生舱。但伙计们都很忙,聚集不起来了。 “我们感觉自己好像是史上最糟糕的黑客。我们被糟糕的互联网服务和家庭责任给拖住了。” 五、谁是真凶? 到底,谁是他们对抗的敌人?没人真的知道,但线索还是有的。攻击者使用的其中一个地址是0xF35e2cC8E6523d683eD44870f5B7cC785051a77D。明白了吗?就像区块链中的其他东西一样,用户地址也是一串匿名字符。但每个地址都在区块链中留下了可供检查的历史。99.9%的人都看不懂,但格林能理解。 为实施抢劫,攻击者需要创建一个可与DAO互动的合约。他在6月15日创建了合约,并在2天后的凌晨时分进行了部署。一旦被激活,攻击合约便开始经由攻击者的账户,以每3到4分钟一笔的速度,发送价值4000美元左右的以太币掏干DAO。 但原始启动资金是从哪里来的呢?为与以太坊区块链互动,每个合约都必须由一定量的以太币驱动。该攻击合约受到2个地址的支持,但进一步追踪变得有点棘手。这是因为,第二个地址使用了被称为ShapeShift的交易,在6月14号向其账户发送了52以太币。ShapeShift不收集任何用户信息,并能在10秒钟之内将一种虚拟货币,比如比特币,转换成另一种,比如以太币。尽管有正当理由使用ShapeShift,它依然是清洗数字资产以掩盖痕迹的绝佳方法。 攻击合约停止工作后,窃贼需要重新部署。他尝试过,却失败了,几个交易过后,黑客行动迈向尾声。(攻击停止的一个可能原因是,黑客的代币损坏,没办法再利用漏洞。) 从区块链公共记录得到的信息有限,且是单方面的。数字资产交易所双方都能看到。某个这样的交易所进行的内部调查发现,DAO攻击者有可能是位于瑞士的一个组织,不是独狼。交易所地位特殊,可以分析其客户的交易活动,因为他们清楚客户都是谁——即便在区块链中是匿名的。透露信息的交易所高管称,分析结果已共享给了FBI波士顿分部——尽管自去年10月其便没有了进一步联系。 古恩称,他还与FBI波士顿办事处、纽约办事处,以及纽约州总检察长办公室联系过。“想不留痕迹地协调发起此类攻击是非常难的。”他鼓励FBI查看以太坊测试网,那里是程序员们在安全环境下执行代码挑出毛病的地方。古恩告诉联邦官员,攻击者不会不经测试就直接发起这么一个复杂的黑客行动,政府可以从中获得攻击者身份的线索。古恩还向他们指出了与攻击者有关的几个地址,比如上面提到过的,由他的研究生戴安在博客里列出的那个。(FBI拒绝发表评论。) Slock.it的第三位共同创始人史蒂芬·图尔诘问道:“我真的被震惊了。为什么没人追回并找出真凶?这事儿至今困扰着我,因为那个人所做的非常之不道德。” 六、无休止的战斗 周四,初始攻击发生4天后,黑客杀了个回马枪。 罗宾汉小组早就担心这一刻的到来,并做好了准备。周日早晨,他们终于在线集结,成功渗透了一个逃生舱,但却叫停了反击。如今,他们已别无选择。 该小组面临打击之一,是他们相互之间的距离——一个人在里约,其他人分布欧洲各地。协同行动非常重要,正如《霹雳娇娃》中展现的那样,他们各自具备不同的专长:格林是社区组织者,范·德·桑德是公众形象,其他人编写罗宾汉小组攻击合约。因此,范·德·桑德需要一步步审查他们打算发动的整个黑客行动过程,因为这不是他的专业领域。 格林说:“老实讲,我挺兴奋。这是我遭遇过最疯狂的事。这是几乎任何人遭遇过的最疯狂的事。” 行动是否合法,仍旧是悬而未决的问题。 编程专家维赛尼斯说:“区块链上确实有黑客在战斗。他们做的是基本上都是非法的,但他们宣称是为了大多数人的利益。” 如今,轮到范·德·桑德来让社区知道,罗宾汉小组的反击开始了。他选择了推特,在上面以大写英文字母写道“DAO正被安全地清空。别恐慌。”
向希区柯克经典电影《银河系漫游指南》致敬,他“别恐慌”的请求,遭遇了推特所能处理的所有怪诞和显示的关注。一名用户回复:“没什么比全用大写更令人恐慌的了。”另一名用户发推:“现实生活比《机器人先生》更刺激!!”而随着罗宾汉小组攻击的加快,他们注意到有奇怪而令人担忧的事情发生——每个逃生舱里都有攻击者的身影。 “我们逃离了母舰,但现在我们跟异形一起飘荡在太空中。”范·德·桑德说。这是个大问题。由于延奇写代码的方式,罗宾汉小组不得不等待数周才可以保护他们找回的以太币。而一旦攻击者就跟该小组一起待在逃生舱里,他可以跟着他们——所谓尾随攻击。如果黑客尾随罗宾汉小组,以太币也就不安全了。 范·德·桑德说:“只有其中一方退出争斗,游戏才会终止。”这基本上就是DAO战争的核心,这场永不停歇的战斗将不得不进行,以保证恢复出的以太币安全。要是有一种方法能彻底扭转这种盗窃行为就好了。 接下来发生的事,是区块链早期历史中最奇怪、最具争议的一段。 七、重塑历史 康奈尔大学本部所在地,纽约伊萨卡,迎来了7月20号清凉晴朗的早晨。一周的以太坊校园训练营将全球各地的开发者和程序员吸引到了这座小城。气氛高涨,但不是因为研讨会即将开始,而是因为这一天是以太坊社区决定重塑历史的日子。 DAO黑客事件后的几周里,开发者、投资人、程序员和其他社区成员,在如何巡回被盗以太币问题上争论不休。因为罗宾汉小组基本是私下里对战攻击者,公开争论正愈演愈烈。白帽子黑客不是唯一试图拯救DAO的群体。延奇几乎是彻夜不眠地工作,处理成百上千的DAO投资人质询。维塔利克·巴特林,未满20岁之时就创建了以太坊区块链的23岁男生,因引导社区做出抉择,而成为了核心任务。 简言之,他们能做的,就是修改以太坊区块链以修复DAO,但只有称作以太坊区块链网络的绝大多数计算机同意软件更新才行。实现了这个,攻击就像从未发生过一样了。 这就是所谓的“硬分叉”。该决定引发了强烈的反向,以致1年后仍存争议,以太坊社区和坚持比特币历史永远不应该被篡改的比特币用户,都反对该决定。10月的一次采访中,巴特林毫不后悔推动了该改变。 “某些比特币用户将硬分叉视为某种程度上违反了他们最基本的价值观。我个人认为,这些被推向极端的基础价值观,很傻。” 至少,在以太坊社区内部,巴特林的观点在那一天胜出,全世界的计算机节点都接受了分叉。在接受DAO修复的1,920,000区块中,它只干了一件事——如果你曾投资其中,现在你可以拿回了。 但是,为什么攻击者没有拿走他偷到的钱呢?都已经过了1个多月了。将DAO暴露在窃贼眼前的同一段代码,最终帮助人们找回了被盗的以太币。对DAO所做的一切,仅仅是设置参数而已:规则、条件语句,以及在程序释放前全部实现的更多规则。其中一个参数声明:任何想要从DAO取出以太币的用户,都必须等待一定的时间——初始请求后先等27天,然后再等7天。 “我们尽了一切努力避免发生这种事,但现在,我们被拖回了这场战争。” 延奇编写的这个故障保护措施,也被应用到了攻击者身上。所以,即便某人真抢了以太币银行,他也得等足34天才能卷款潜逃。在窃贼等待的期间里,那些钱是可以再被偷回来的。1个月过去之后,这名以太币大盗连个钢镚儿都没剩下。 回到康奈尔大学校园,以太坊训练营参加者们开始庆祝。第二天的课上,古恩拿来了香槟。他在酒瓶标签外面贴了张刀叉的图片,说:“致我们成功的分叉!”
八、区块链的野生世界 然后,不曾预料到的事情发生了。原始以太坊区块链,也就是DAO攻击合约存在其中的那个,仍在继续增长。可以将硬分叉想象成从大树主干末端生出的一个分支,伸向另一个方向。原本的主干应该在硬分叉后凋零的,但因为有一小部分用户继续用该版本的区块链处理交易,这主枝竟然还在继续生长。这就演变成了第二种形式的以太坊,很快被命名为经典以太坊,搭配上如今具备价值的数字货币。即便是在科幻小说似的区块链世界,这也是前所未有的大反转。 这意味着,那名DAO攻击者被称为DarkDAO的账户上,突然之间拥有了大约360万以太坊经典以太币,而且还在慢慢增加价值。罗宾汉小组持有大约840万经典以太币,因为在这个平行世界里,他们依然控制着70%的DAO资金。 罗宾汉小组简直不敢相信。“我们尽了一切努力避免发生这种事,但现在,我们被拖回了这场战争。” 现在,认为硬分叉破坏了区块链核心价值的比特币支持者,可以通过买入经典以太坊来支持自己的信仰了。这也正是比特币圈子里的重量级人物,企业家巴里·希尔伯特所做的。“要知道,最初的链就是经典以太坊。而分叉是以太坊。”言行合一,希尔伯特的公司 Grayscale Investments,最近发布了一篇投资论文,指出经典以太坊对比以太坊的优势所在。某章标题总结了其理论基础:“DAO与原则的死亡。” 亚力克西斯·罗素,瑞士数字货币代理商Bity.com共同创始人,仍对硬分叉的后遗症和区块链野生世界惊叹不已。“这是传统金融界绝不会发生的事。即使苹果公司出了什么事,你也不会马上就弄个克隆版苹果出来。” 九、漏洞代码的细节 八、区块链的野生世界 然后,不曾预料到的事情发生了。原始以太坊区块链,也就是DAO攻击合约存在其中的那个,仍在继续增长。可以将硬分叉想象成从大树主干末端生出的一个分支,伸向另一个方向。原本的主干应该在硬分叉后凋零的,但因为有一小部分用户继续用该版本的区块链处理交易,这主枝竟然还在继续生长。这就演变成了第二种形式的以太坊,很快被命名为经典以太坊,搭配上如今具备价值的数字货币。即便是在科幻小说似的区块链世界,这也是前所未有的大反转。 这意味着,那名DAO攻击者被称为DarkDAO的账户上,突然之间拥有了大约360万以太坊经典以太币,而且还在慢慢增加价值。罗宾汉小组持有大约840万经典以太币,因为在这个平行世界里,他们依然控制着70%的DAO资金。 罗宾汉小组简直不敢相信。“我们尽了一切努力避免发生这种事,但现在,我们被拖回了这场战争。” |