漏洞

漏洞

2600万TRX被盗背后的罗生门 - 第二集

特写dappreview 发表了文章 • 2019-05-06 13:58 • 来自相关话题

导读:随着新一天的调查,更多证据被各方挖掘出来,本次事件的真相正在逐渐浮出水面,戏剧化程度堪比一场年度大戏。文末还附上了wojak的财富密码。没有读过上一篇文章的读者,请先移步阅读本次事件第一集 《2600万TRX被盗背后的罗生门》

注:以下调查的信息收集全部来自于Discord频道Scam Watch、Telegram群“TronBank抱团维权”,以及DappReview与关联人的聊天记录。


 
wojak反悔退款
 

自从5月3日晚上9点wojak出现并贴出一份退款对比名单之后,再次从Discord消失,在此期间很多人开始给wojak打上Scammer(骗子)的标签,并认为“他不会退款,可能已经开上兰博基尼去度假了”,诸如此类言论不绝于耳。






5月5日中午12点

wojak再次现身,声称“我投入了8个小时写工具来给所有人退款,等我写完代码回来发现大家都在把我想象成是一个骗子,而没有意识到Tronbank才是放置后门坑了你们的人。你们原本会因此损失所有的投资。但在看到你们把我当成骗子而不是开发者后,我认为我没有任何理由把TRX退还给你们”

此番言论遭到众人反驳,wojak坚持认为自己所做的事情并不违法(illegal),自己也不是小偷,只是发起了一笔交易调用了智能合约,并且遵守了智能合约的规则。此后,wojak再也没有表示过退款的可能性,而是让所有人去找Tronbank进行索赔。


证据开始指向TSC开发者Khanh
 

5月5日中午12点

在真相依旧处于众说纷纭的迷雾之中时,telegram中某开发者(要求匿名)发现了一条关键证据,进而扭转了整个调查的方向,把更多的信息带出水面。






TTX5N2wxLeyWBSNE6UeaBjCFZbpa2FH6jr 该地址于4月28日部署了一个与事发TRX Pro合约有同样后门的“测试合约”(合约地址为 TYZ4oPdPmwZS9xTUXhnFtQkPFFTi2iAydz),并在4月30日对后门进行了测试。






如上图所示,TTX5N**该地址用同样的方式发送了0.011911 TRX调用withdraw函数,触发后门,提走自己事先存入的约100 TRX。

也就是说,在被盗时间(5月3日凌晨4点)约4天之前,竟然已经有人熟知此后门以及其调用方式。当我们去反编译该测试合约并与TRX Pro被盗合约对比时,不难发现:






反编译工具:

https://www.trustlook.com/products/smartcontractguardian

这两段代码的后门部分完全一致!

而且更为神奇的是,“测试合约”的部署时间比项目方部署的正式合约竟然早了5小时23分钟。

毫无疑问,TTX5N** 地址与本次后门事件必定脱不了关系。

而该地址的所有者是谁呢?

打开TSC的网站https://tronsmartcontract.space,点击About Us






这正是TSC的开发者Khanh所拥有的地址

至此,Discord和tg群各路开发者开始梳理Khanh地址以及Tronbank开发者地址的合约部署、调用信息,梳理出以下时间线。


惊人的时间线







以上为Discord频道中梳理的时间线(均为UTC时间),下面我们按照北京时间进行更细节的梳理。

4/28/2019 4:07 PM

TronBank开发者部署了TRX Pro的测试合约,该合约中通过反编译并没有发现后门,合约地址为:

https://tronscan.org/#/contract/TAWLPqFn33U7iaAfP6cXRdJXcBUc1ewCRJ

4/28/2019 5:35 PM

仅在一个半小时后,由TSC开发者Khanh所拥有的地址TTX5N**部署了上文提到的“测试合约”,该合约中存在后门代码,合约地址为:

https://tronscan.org/#/contract/TYZ4oPdPmwZS9xTUXhnFtQkPFFTi2iAydz

4/28/2019 10:48 AM

Tronbank开发者了部署TRX Pro的正式版合约,该合约即被盗合约,其中有后门代码,合约地址为:

https://tronscan.org/#/contract/TW9AE7u5QADp2uej9xdaNVTYtqsRuJZNxJ

4/28/2019 11:00 PM

在12分钟之后,TSC开发者Khanh调用TRX Pro的正式版合约,并发送0.011011来测试后门。该笔交易记录为:

https://tronscan.org/#/transaction/d6d89713ebdb98402ddfd1d454be394a5521c83b7d385ce2c394924a2b923c89

4/30/2019 10:12 AM

TSC开发者Khanh调用自己在4/28/2019 5:35 PM 部署的存在后门的“测试合约”,触发后门,并取走自己充进去的100 TRX,该笔交易记录为:

https://tronscan.org/#/transaction/87bf173c126c4873ad333c02d4e352bacda9bfaae4d91d0bce156eb64bd5219f

5/3/2019 4:11 AM

wojak 调用TRX Pro的正式版合约withdraw函数,第一笔转入了0.000123,并没有任何效果,交易记录为:

https://tronscan.org/#/transaction/aabfc7b6cedb2e8ce055c7fdc7a62df558213c63a33092293886b0e4b58277e5

5/3/2019 4:12 AM

1分钟后,wojak 再次调用TRX Pro的正式版合约withdraw函数,转入0.011911,成功触发后门,提走合约余额2673万TRX,交易记录为:

https://tronscan.org/#/transaction/e26666a806e24697fd049e60cf83cf412f58d85cdb0493c014cef0d29d8bdc2e

根据以上信息,可以归纳出两个事实:

1. Tronbank上线之前的测试版本合约,没有后门,但最终线上正式版存在后门;

2. TSC开发者Khanh在Tronbank测试版合约发布当天部署过一个有相同后门的合约,并且知道后门的调用方式,且在4月30日自己进行过测试。也就是说,该后门与TSC脱不了关系。

在与Tronbank团队的沟通中,开发者提到,他们是使用TSC进行编译的。(针对该言论的真实性,DappReview无法做出验证)






注:以下内容是基于现有事实依据的可能性探讨,不代表最终结论和真相,请再次传播时不要断章取义。

在第一篇文章《2600万TRX被盗背后的罗生门》中,我们曾提到过三种可能性,

可能性一:Tronbank开发者在实际部署的合约中夹杂私货放置了后门,并成功欺骗了TSC完成了另一份没有后门的代码验证。

可能性二:Tronbank团队和TSC团队合谋,部署了有后门的合约,同时TSC协助用另一个没有后门的合约完成验证。

可能性三:Tronbank团队没有在合约中放置后门,而是后门在合约部署过程中以某种方式产生。

根据以上掌握到的更新信息,第一种可能性被否决,因为整个事件中,TSC开发者是最早调用后门的人,并不存在不知情被欺骗的情况,而第三种可能性的概率极大地增加。

TSC集合了编译、部署、验证的一条龙服务,从理论上来说,如果开发者使用TSC进行编译并部署,期间确实有可能增加后门代码。

在事发当天5月3日,Discord上询问为什么TRX Pro的实际运行代码与验证代码不一致时,Khank的回应如下:











上午7点22分回应:我刚起床听到消息,让我来扫描一下所有(代码)

晚上9点18分回应:各位抱歉,我也不知道为什么他们通过了我的代码(验证)

而5月5日当Khank的地址部署过后门合约并且调用的证据出现后,在Discord网友的质疑下,Khanh的回应如下:






Mr Fahrenheit:你怎么解释你的地址对另一个合约调用过可以触发后门的交易?

Khanh:我的私钥泄露了,github的密码也泄露了

这个回应显然过于苍白,一方面人们质疑如果私钥泄露为什么官网还挂着这个地址,另一方面该地址中还有28,052 TRX (价值约4400RMB)没有被转走。






此时此刻根据已有的信息进行客观的分析,存在的可能性(注意,此处仅讨论可能性,即便该可能性极低,真相目前没有任何实锤证据)依旧有以下几种:

可能性一:Tronbank团队和TSC团队合谋,部署了有后门的合约,同时TSC协助用另一个没有后门的合约完成验证。

可能性二:Tronbank团队没有在合约中放置后门,而是后门在合约部署过程中以某种方式产生。

以上的两种可能性中,目前的证据对于而言偏向于第二种可能性,Tronbank团队目前正在多次与Khanh沟通,并将部分对话截图贴出,Tronbank团队坚持没有放置任何的后门,而是指向TSC是真正放置后门的元凶。目前虽没有决定性的证据显示后门是由Khanh放置,但是TSC和Khanh自身与后门已经脱不了干系。

可能性三:Khanh的github账号被盗,地址私钥泄露,幕后黑手另有其人。

关于这一点依照现有的证据,可能性较低,Khanh的回应含糊其辞,也并没有提供账户被盗的证据(比如github关联邮箱提示不安全登录、密码被修改等辅助信息)

至此 最终的谜题仍未解开

这一场年度大戏尚未落下帷幕

更多的证据仍待挖掘


wojak的财富密码


整个事件中,wojak的那一笔神奇的交易依旧是关注本次事件的群众口中一直谈论的话题。究竟是什么样的奇技淫巧能让自动执行的代码找到后门,并且触发后门?

在DappReview与wojak的对话中,给出了答案:






wojak的灵感来自于2018年8月的一篇论文《TEETHER: Gnawing at Ethereum to Automatically Exploit Smart Contracts》

该论文主要讲了什么呢?

    基于底层的EVM指令,提出了存在漏洞的智能合约的一种广义定义;
    提出了TEETHER工具,该工具能够对于智能合约的字节码进行自动化的漏洞识别并生成相应的漏洞利用代码;
    对于以太坊区块链中部署的38,757个智能合约进行了大规模的漏洞分析,其中TEETHER工具发现了815个合约中的漏洞,整个过程完全自动化。


用一个不恰当但是通俗的比喻来说:TEETHER工具就是一台能自动从智能合约找漏洞并且提款的ATM机。

wojak基于这篇文章做了什么事情?






1. 把TEETHER工具针对波场虚拟机做了适配

2. 收集波场上所有智能合约

3. 对所有的合约执行TEETHER工具来分析

4. 找到可能的套利机会 比如从合约A中以X的价格购买某Token,然后在合约B中以Y价格卖出(Y大于X),整个流程都是自动化执行而且合法

5. 工具会产生一系列可能产生收益的交易列表

6. 脚本自动执行并出发这些交易

本质上,那一笔神奇的交易就是这样自动触发的,连他自己都不知道发生了什么。至于wojak本身的行为是否可以定义为“黑客”,或者“违法”,此处暂且不展开深究。


有兴趣研究这篇“财富密码”的请看:

https://publications.cispa.saarland/2612/1/main.pdf

截至发稿,Tronbank已经宣布完成了链上投资数据的收集,统计完成后将按照原计划发放赔付TRX。此外,TSC开发者Khanh已经关闭了个人Twitter和Facebook。 查看全部
tronbank.jpg


导读:随着新一天的调查,更多证据被各方挖掘出来,本次事件的真相正在逐渐浮出水面,戏剧化程度堪比一场年度大戏。文末还附上了wojak的财富密码。没有读过上一篇文章的读者,请先移步阅读本次事件第一集 《2600万TRX被盗背后的罗生门

注:以下调查的信息收集全部来自于Discord频道Scam Watch、Telegram群“TronBank抱团维权”,以及DappReview与关联人的聊天记录。



 
wojak反悔退款
 

自从5月3日晚上9点wojak出现并贴出一份退款对比名单之后,再次从Discord消失,在此期间很多人开始给wojak打上Scammer(骗子)的标签,并认为“他不会退款,可能已经开上兰博基尼去度假了”,诸如此类言论不绝于耳。

201905061152261.jpg


5月5日中午12点

wojak再次现身,声称“我投入了8个小时写工具来给所有人退款,等我写完代码回来发现大家都在把我想象成是一个骗子,而没有意识到Tronbank才是放置后门坑了你们的人。你们原本会因此损失所有的投资。但在看到你们把我当成骗子而不是开发者后,我认为我没有任何理由把TRX退还给你们”

此番言论遭到众人反驳,wojak坚持认为自己所做的事情并不违法(illegal),自己也不是小偷,只是发起了一笔交易调用了智能合约,并且遵守了智能合约的规则。此后,wojak再也没有表示过退款的可能性,而是让所有人去找Tronbank进行索赔。


证据开始指向TSC开发者Khanh
 

5月5日中午12点

在真相依旧处于众说纷纭的迷雾之中时,telegram中某开发者(要求匿名)发现了一条关键证据,进而扭转了整个调查的方向,把更多的信息带出水面。

201905061152272.jpg


TTX5N2wxLeyWBSNE6UeaBjCFZbpa2FH6jr 该地址于4月28日部署了一个与事发TRX Pro合约有同样后门的“测试合约”(合约地址为 TYZ4oPdPmwZS9xTUXhnFtQkPFFTi2iAydz),并在4月30日对后门进行了测试。

201905061152273.jpg


如上图所示,TTX5N**该地址用同样的方式发送了0.011911 TRX调用withdraw函数,触发后门,提走自己事先存入的约100 TRX。

也就是说,在被盗时间(5月3日凌晨4点)约4天之前,竟然已经有人熟知此后门以及其调用方式。当我们去反编译该测试合约并与TRX Pro被盗合约对比时,不难发现:

201905061152274.jpg


反编译工具:

https://www.trustlook.com/products/smartcontractguardian

这两段代码的后门部分完全一致!

而且更为神奇的是,“测试合约”的部署时间比项目方部署的正式合约竟然早了5小时23分钟。

毫无疑问,TTX5N** 地址与本次后门事件必定脱不了关系。

而该地址的所有者是谁呢?

打开TSC的网站https://tronsmartcontract.space,点击About Us

201905061152275.jpg


这正是TSC的开发者Khanh所拥有的地址

至此,Discord和tg群各路开发者开始梳理Khanh地址以及Tronbank开发者地址的合约部署、调用信息,梳理出以下时间线。


惊人的时间线


201905061152286.jpg


以上为Discord频道中梳理的时间线(均为UTC时间),下面我们按照北京时间进行更细节的梳理。

4/28/2019 4:07 PM

TronBank开发者部署了TRX Pro的测试合约,该合约中通过反编译并没有发现后门,合约地址为:

https://tronscan.org/#/contract/TAWLPqFn33U7iaAfP6cXRdJXcBUc1ewCRJ

4/28/2019 5:35 PM

仅在一个半小时后,由TSC开发者Khanh所拥有的地址TTX5N**部署了上文提到的“测试合约”,该合约中存在后门代码,合约地址为:

https://tronscan.org/#/contract/TYZ4oPdPmwZS9xTUXhnFtQkPFFTi2iAydz

4/28/2019 10:48 AM

Tronbank开发者了部署TRX Pro的正式版合约,该合约即被盗合约,其中有后门代码,合约地址为:

https://tronscan.org/#/contract/TW9AE7u5QADp2uej9xdaNVTYtqsRuJZNxJ

4/28/2019 11:00 PM

在12分钟之后,TSC开发者Khanh调用TRX Pro的正式版合约,并发送0.011011来测试后门。该笔交易记录为:

https://tronscan.org/#/transaction/d6d89713ebdb98402ddfd1d454be394a5521c83b7d385ce2c394924a2b923c89

4/30/2019 10:12 AM

TSC开发者Khanh调用自己在4/28/2019 5:35 PM 部署的存在后门的“测试合约”,触发后门,并取走自己充进去的100 TRX,该笔交易记录为:

https://tronscan.org/#/transaction/87bf173c126c4873ad333c02d4e352bacda9bfaae4d91d0bce156eb64bd5219f

5/3/2019 4:11 AM

wojak 调用TRX Pro的正式版合约withdraw函数,第一笔转入了0.000123,并没有任何效果,交易记录为:

https://tronscan.org/#/transaction/aabfc7b6cedb2e8ce055c7fdc7a62df558213c63a33092293886b0e4b58277e5

5/3/2019 4:12 AM

1分钟后,wojak 再次调用TRX Pro的正式版合约withdraw函数,转入0.011911,成功触发后门,提走合约余额2673万TRX,交易记录为:

https://tronscan.org/#/transaction/e26666a806e24697fd049e60cf83cf412f58d85cdb0493c014cef0d29d8bdc2e

根据以上信息,可以归纳出两个事实:

1. Tronbank上线之前的测试版本合约,没有后门,但最终线上正式版存在后门;

2. TSC开发者Khanh在Tronbank测试版合约发布当天部署过一个有相同后门的合约,并且知道后门的调用方式,且在4月30日自己进行过测试。也就是说,该后门与TSC脱不了关系。

在与Tronbank团队的沟通中,开发者提到,他们是使用TSC进行编译的。(针对该言论的真实性,DappReview无法做出验证)

201905061152287.jpg


注:以下内容是基于现有事实依据的可能性探讨,不代表最终结论和真相,请再次传播时不要断章取义。

在第一篇文章《2600万TRX被盗背后的罗生门》中,我们曾提到过三种可能性,

可能性一:Tronbank开发者在实际部署的合约中夹杂私货放置了后门,并成功欺骗了TSC完成了另一份没有后门的代码验证。

可能性二:Tronbank团队和TSC团队合谋,部署了有后门的合约,同时TSC协助用另一个没有后门的合约完成验证。

可能性三:Tronbank团队没有在合约中放置后门,而是后门在合约部署过程中以某种方式产生。

根据以上掌握到的更新信息,第一种可能性被否决,因为整个事件中,TSC开发者是最早调用后门的人,并不存在不知情被欺骗的情况,而第三种可能性的概率极大地增加。

TSC集合了编译、部署、验证的一条龙服务,从理论上来说,如果开发者使用TSC进行编译并部署,期间确实有可能增加后门代码。

在事发当天5月3日,Discord上询问为什么TRX Pro的实际运行代码与验证代码不一致时,Khank的回应如下:

201905061152288.jpg


201905061152289.jpg


上午7点22分回应:我刚起床听到消息,让我来扫描一下所有(代码)

晚上9点18分回应:各位抱歉,我也不知道为什么他们通过了我的代码(验证)

而5月5日当Khank的地址部署过后门合约并且调用的证据出现后,在Discord网友的质疑下,Khanh的回应如下:

2019050611522810.jpg


Mr Fahrenheit:你怎么解释你的地址对另一个合约调用过可以触发后门的交易?

Khanh:我的私钥泄露了,github的密码也泄露了

这个回应显然过于苍白,一方面人们质疑如果私钥泄露为什么官网还挂着这个地址,另一方面该地址中还有28,052 TRX (价值约4400RMB)没有被转走。

2019050611522911.jpg


此时此刻根据已有的信息进行客观的分析,存在的可能性(注意,此处仅讨论可能性,即便该可能性极低,真相目前没有任何实锤证据)依旧有以下几种:

可能性一:Tronbank团队和TSC团队合谋,部署了有后门的合约,同时TSC协助用另一个没有后门的合约完成验证。

可能性二:Tronbank团队没有在合约中放置后门,而是后门在合约部署过程中以某种方式产生。

以上的两种可能性中,目前的证据对于而言偏向于第二种可能性,Tronbank团队目前正在多次与Khanh沟通,并将部分对话截图贴出,Tronbank团队坚持没有放置任何的后门,而是指向TSC是真正放置后门的元凶。目前虽没有决定性的证据显示后门是由Khanh放置,但是TSC和Khanh自身与后门已经脱不了干系。

可能性三:Khanh的github账号被盗,地址私钥泄露,幕后黑手另有其人。

关于这一点依照现有的证据,可能性较低,Khanh的回应含糊其辞,也并没有提供账户被盗的证据(比如github关联邮箱提示不安全登录、密码被修改等辅助信息)

至此 最终的谜题仍未解开

这一场年度大戏尚未落下帷幕

更多的证据仍待挖掘


wojak的财富密码


整个事件中,wojak的那一笔神奇的交易依旧是关注本次事件的群众口中一直谈论的话题。究竟是什么样的奇技淫巧能让自动执行的代码找到后门,并且触发后门?

在DappReview与wojak的对话中,给出了答案:

2019050611522912.jpg


wojak的灵感来自于2018年8月的一篇论文《TEETHER: Gnawing at Ethereum to Automatically Exploit Smart Contracts》

该论文主要讲了什么呢?


    基于底层的EVM指令,提出了存在漏洞的智能合约的一种广义定义;
    提出了TEETHER工具,该工具能够对于智能合约的字节码进行自动化的漏洞识别并生成相应的漏洞利用代码;
    对于以太坊区块链中部署的38,757个智能合约进行了大规模的漏洞分析,其中TEETHER工具发现了815个合约中的漏洞,整个过程完全自动化。



用一个不恰当但是通俗的比喻来说:TEETHER工具就是一台能自动从智能合约找漏洞并且提款的ATM机。

wojak基于这篇文章做了什么事情?

2019050611522913.jpg


1. 把TEETHER工具针对波场虚拟机做了适配

2. 收集波场上所有智能合约

3. 对所有的合约执行TEETHER工具来分析

4. 找到可能的套利机会 比如从合约A中以X的价格购买某Token,然后在合约B中以Y价格卖出(Y大于X),整个流程都是自动化执行而且合法

5. 工具会产生一系列可能产生收益的交易列表

6. 脚本自动执行并出发这些交易

本质上,那一笔神奇的交易就是这样自动触发的,连他自己都不知道发生了什么。至于wojak本身的行为是否可以定义为“黑客”,或者“违法”,此处暂且不展开深究。


有兴趣研究这篇“财富密码”的请看:

https://publications.cispa.saarland/2612/1/main.pdf

截至发稿,Tronbank已经宣布完成了链上投资数据的收集,统计完成后将按照原计划发放赔付TRX。此外,TSC开发者Khanh已经关闭了个人Twitter和Facebook。

2600万TRX被盗背后的罗生门

特写dappreview 发表了文章 • 2019-05-06 13:47 • 来自相关话题

导读:此次TronBank合约被盗事件再次印证了一个简单到令人发指的常识——所谓智能合约的开源并不能等同于“无条件的安全”,而且粗糙的去中心化机制可能存在被利用的中心化黑幕可能。在目前这个混沌无序的市场环境中,作为一个成熟的“韭菜”,请不要再轻易相信任何口头上的去中心化承诺。



北京时间5月3日凌晨4点12分,一笔神奇的合约调用转走了TronBank合约中的2673万TRX(价值427万RMB),合约余额归零。






仅仅在20多天前,Tronbank团队的第二个游戏BTTBank在发布3小时内即被黑客用假币攻击并盗走数千万BTT(并非1.8亿BTT),事隔不到一个月,第三款游戏TRX Pro于4月29日20点正式上线,几天时间之内,合约余额已经突破2500万TRX。

这是否是TRON生态上的Dapp又一次被黑客盯上并成功洗劫一空?






而接下来发生的这一切

更让所有人始料未及

 
偶然触发的Bug?
 

合约余额归零后,项目方telegram群里面骗局和黑客的质疑声不绝于耳,DappReview和小伙伴们开始着手研究到底发生了什么。"黑客"的地址为THeRTTCvN4SHEVYNqcLVLNGGVsWLR4smyH,利用DappReview的玩家数据查看工具,可以看到该地址的所有者像是一个正常的Dapp玩家,从今年1月到5月该玩家涉猎过数十个Dapp,其中TronGoo是他玩过最多的游戏,从TronGoo官方排行榜可以看到他就是排名第二的大户玩家。





数据来源 https://player.dapp.review/

发生被盗事件约2个小时之后,在一个名为Scam Watch(骗局观察)的Discord频道中,调走这一笔2673万TRX的地址THeRTT**拥有者wojak现身了。






根据wojak的说法,他写了个脚本在分析波场虚拟机字节码,批量扫描合约并发起交易看看有没有什么能赚到钱的方法,结果偶然之中命中了Tronbank合约的bug。一开始连他自己都不知道这笔钱是从Tronbank打过来的。

社区里部分人建议wojak把钱还给Tronbank开发者,而wojak认为这不是他的问题,开发者应该自己写测试例子,做审计以及至少跑一些形式化验证(很显然他们啥都没干),他愿意把这笔钱原封不动还给Tronbank的每一个投资者,而不是项目方的开发者。

wojak要求参与了Tronbank的投资者发给他投资的交易hash值以及自己的地址,他将写一个脚本进行验证,并承诺退款给有损失的Tronbank投资人。

 
刻意埋藏的后门?
 

随着调查的深入,那一笔触发Bug的交易被放回桌面上被仔细的剖析。我们再来看一下:






注意到,该笔交易调用的是合约里withdraw函数,发送的金额为0.011911 TRX,要注意在Tronbank正常的业务逻辑下,调用withdraw函数是不应该发送任何TRX的,金额应该为0. 这一点在源代码中就可以验证。

像Tronbank这样资金盘属性的Dapp,往往都会把代码开源让合约和逻辑变得透明可信来吸引投资人,在网站最明显的位置,也标明了通过第三方验证工具tronsmartcontract.space(以下简称TSC)进行合约代码验证后的代码信息。











           
从TSC点开源代码之后,找到withdraw函数,函数第一行会先调用_withdraw()来取得可以提取的TRX金额,在_withdraw()函数的第一行我们可以看到:

require(msg.value == 0, "wrong trx amount"); 

这一行代码的意思是要求该笔交易发送的TRX金额必须为零,否则无法继续执行,交易会被REVERT。

也就是说,按照开源代码的逻辑,那一笔触发Bug的交易根本不可能发生。

现实变成了,TRX Pro的合约实际执行逻辑和所谓“开源”的代码逻辑并不一致。

这里补充说明一下,所谓的代码认证过程是这样:

1. 开发者在主网发布合约

2. 开发者在TSC上传代码,选择编译版本,编译为bytecodes,

3. TSC把步骤2中的bytecodes和步骤1中发布合约的bytecodes做匹配,匹配成功,则认证通过,理论上多或者少一个空格都不行

进一步深扒,从tronscan上找到TRX Pro合约的bytecodes,用反编译工具进行处理得到:






反编译工具:

https://www.trustlook.com/products/smartcontractguardian

在withdraw函数中,多了一个判断 else if ((0x2E87 == msg.value)),如果满足条件,那么就会把合约的余额全部转给交易发起者!我们把16进制的数字0x2E87转换成10进制,也就是11911,要知道TRX的精度为6位,11911所对应的TRX金额就是0.011911 TRX... 而这一部分判断在TSC的开源代码中是不存在的,看起来就像是是一个被藏起来没有公布的后门。

用更简单的语言梳理一遍:

1. 在主网上部署的合约,通过反编译发现,调用withdraw函数时,如果发送金额等于0.011911 TRX,则会转移全部合约余额;

2. 在TSC上认证过的开源代码中,如果发送金额不为零调用withdraw函数,交易会被撤回。

那么一切就很清晰了,实际发生的与第一点完全吻合,主网的代码运行没有问题,即TronBank在主网部署的合约中存在一个可以直接提走合约余额的后门代码,而有意思的在于第二点,明明不一样的代码逻辑是如何上传后通过了TSC的认证过程?

根据已有的信息,断定“是开发者在合约之中放置后门”这个结论仍然为时过早,目前我们可以得出的客观结论只有两点:

1. TRX Pro在主网的合约中存在后门

2. TSC上认证过的代码与实际合约运行逻辑不符

注:以下内容是基于现有事实依据的可能性探讨,不代表最终结论和真相,请在传播时不要断章取义。

至于后门是谁放置的,如何放置的?目前没有任何实锤证据,有的人认为是Tronbank开发者,有的人认为开发者的实力还不足以通过欺骗TSC验证与实际部署所不同的代码。

客观来分析存在的可能性(注意,此处仅讨论可能性,即便该可能性极低,真相目前没有任何实锤证据),有以下几种:

可能性一:Tronbank开发者在实际部署的合约中夹杂私货放置了后门,并成功欺骗了TSC完成了另一份没有后门的代码验证。

在探讨这种可能性时,如何欺骗TSC成为了焦点,如果真的TSC的验证存在Bug,那么这意味着之前所有通过TSC认证并标榜开源的Dapp都不再可信和透明,事实上,在Discord群里,TSC的开发者Khanh承认代码已经很久没有维护并存在bug的可能性,也有其他开发者证实自己实际部署的代码和通过认证的代码可以不完全相同。

另一方面,Tronbank开发者在Telegram群中多次声称团队没有在合约中放置任何的后门,有一种自证清白的方式是:官方给出部署时的源代码以及编译方式(包括编译工具以及版本),理论上任何人按照同样方式编译出来的bytecode和线上部署的TRX Pro合约应该一致。但当我们提出该质疑时,官方回复如下:






这个回复的内容如果当真,则该事件将更加戏剧化和复杂化,参考可能性三

可能性二:Tronbank团队和TSC团队合谋,部署了有后门的合约,同时TSC协助用另一个没有后门的合约完成验证。

这是在“欺骗TSC”很难成立的前提下提出的可能性,TSC最终打上验证的标签其实是中心化的行为,完全可以人为操作,但对于TSC作为一个第三方合约验证工具来说,目前尚无竞品,做这样的事情无疑严重损伤自己的品牌,串通合谋是在性价比太低。

可能性三:Tronbank团队没有在合约中放置后门,而是后门在合约部署过程中以某种方式产生。

这种可能性是基于“可能一”中的官方回复的一种暗示,即项目方在合约部署时确实使用的是没有后门的合约,编译工具在部署合约到主网的过程中出现了猫腻,加入了有问题的后门。但项目方目前没有提供任何的可验证信息,使用的编译工具,以及同样代码两次编译不同结果的信息。

不论如何,TronBank开发者实际部署的代码原样我们不得而知,也无法验证真伪,该事件的真相需要等待各方提供更有说服力的证据才能被逐渐还原出来。

至少在此刻,我们还不能下定论,究竟是谁埋下了这个后门。

 
投资者的钱怎么办?
 

在以上错综复杂的信息之下,大部分玩家已经放弃了追查真相,而更关注的则是找回损失。

在承诺退款并要求蒙受损失的投资人发送交易信息之后,wojak整整失联了超过12小时,这期间wojak账户里的钱大部分被转移到了币安交易所。有人开始怀疑wojak并没有打算退钱准备捐款跑路,还有人认为这是TronBank项目方监守自盗,wojak就是项目方之一。

5月3日下午2点44分

另一边,在Tronbank的官方群里,管理员贴出的置顶消息是“TRX Pro被黑客THeRTTCvN4SHEVYNqcLVLNGGVsWLR4smyH攻击,目前开发团队正在紧急处理,将会及时在群里更新消息”






5月3日晚上9点13分






wojak再次现身,说自己花4个多小时写了脚本从链上获取到tronbank的投资数据来跟收集到的损失信息对比,其中有不少人虚报损失,甚至有完全没有参与过投资的用户也来谎报损失,仅有少数人诚实地汇报了数字。wojak也把比对信息贴了出来https://pastebin.com/raw/gMtxCw97。

5月4日下午1点24分

整整一天之后,Tronbank项目方再次发出通知,他们正在联系wojak进行退款,如果wojak在5月4日晚7点时没有任何回复,官方将提供给投资人的补偿方案。






5月4日下午3点 - 4点

针对之前所承诺的24小时内给出事件分析报告,官方将再次延期,声称将联系安全公司,TSC以及波场官方做更多的调查。同时评论到,有很多细节仍需确认,之前从未遇到类似情况,这有可能是一个精彩的故事。











5月4日晚上7点

Tronbank项目方如约公布了赔偿方案,令大部分人吃惊的是项目方没有跑路,而是承诺在24小时内收集信息,并在72小时内进行全额赔付。如果赔付照常发放,这可能是Dapp历史上最大的一次项目方赔付。






而此次赔付通知,可以说是给投资者吃了一颗定心丸,使得大部分用户打消了“后门是由开发者留下”的疑虑。但在真相露出水面之前,DappReview依旧保留质疑的态度,等待项目方公开更多的调查报告。

 
结语
 

原本看起来是一起常见的黑客攻击事件,却喜剧般演化成一场罗生门。究竟是开发者留后门,巧被程序员打开,还是如项目方所说有更底层的问题存在?除了当局者本身,无人知晓。

投资者们对于去中心化的信任(TSC提供的代码认证)崩塌,寄托于中心化的信任(起初是wojak的承诺,后来是Tronbank的赔付公告)。虽然严格意义上来讲最终的真相可能并不是“去中心化的锅”,但对于普通用户而言,很难区分其中差异,大部分用户的认知只能停留在“智能合约为什么开源了明明没有问题还被黑了?”

在本次事件中,虽然Tronbank承诺赔付投资人受损的利益,但受伤的无疑是波场的整个Dapp生态,基于TSC认证的开源代码所产生的信任和背书已经毫无价值,在波场官方出来验证工具之前,DappReview建议各位Dapp玩家不要轻信项目方所谓代码开源言论。

此外,截至到发稿,wojak尚未再次露面,也未将资金退还给任何投资人。
 
 
续集:2600万TRX被盗背后的罗生门 - 第二集 查看全部
tronbank.jpg


导读:此次TronBank合约被盗事件再次印证了一个简单到令人发指的常识——所谓智能合约的开源并不能等同于“无条件的安全”,而且粗糙的去中心化机制可能存在被利用的中心化黑幕可能。在目前这个混沌无序的市场环境中,作为一个成熟的“韭菜”,请不要再轻易相信任何口头上的去中心化承诺。




北京时间5月3日凌晨4点12分,一笔神奇的合约调用转走了TronBank合约中的2673万TRX(价值427万RMB),合约余额归零。

201905050745301.jpg


仅仅在20多天前,Tronbank团队的第二个游戏BTTBank在发布3小时内即被黑客用假币攻击并盗走数千万BTT(并非1.8亿BTT),事隔不到一个月,第三款游戏TRX Pro于4月29日20点正式上线,几天时间之内,合约余额已经突破2500万TRX。

这是否是TRON生态上的Dapp又一次被黑客盯上并成功洗劫一空?

201905050745302.jpg


而接下来发生的这一切

更让所有人始料未及

 
偶然触发的Bug?
 

合约余额归零后,项目方telegram群里面骗局和黑客的质疑声不绝于耳,DappReview和小伙伴们开始着手研究到底发生了什么。"黑客"的地址为THeRTTCvN4SHEVYNqcLVLNGGVsWLR4smyH,利用DappReview的玩家数据查看工具,可以看到该地址的所有者像是一个正常的Dapp玩家,从今年1月到5月该玩家涉猎过数十个Dapp,其中TronGoo是他玩过最多的游戏,从TronGoo官方排行榜可以看到他就是排名第二的大户玩家。

201905050745303.jpg

数据来源 https://player.dapp.review/

发生被盗事件约2个小时之后,在一个名为Scam Watch(骗局观察)的Discord频道中,调走这一笔2673万TRX的地址THeRTT**拥有者wojak现身了。

201905050745304.jpg


根据wojak的说法,他写了个脚本在分析波场虚拟机字节码,批量扫描合约并发起交易看看有没有什么能赚到钱的方法,结果偶然之中命中了Tronbank合约的bug。一开始连他自己都不知道这笔钱是从Tronbank打过来的。

社区里部分人建议wojak把钱还给Tronbank开发者,而wojak认为这不是他的问题,开发者应该自己写测试例子,做审计以及至少跑一些形式化验证(很显然他们啥都没干),他愿意把这笔钱原封不动还给Tronbank的每一个投资者,而不是项目方的开发者。

wojak要求参与了Tronbank的投资者发给他投资的交易hash值以及自己的地址,他将写一个脚本进行验证,并承诺退款给有损失的Tronbank投资人。

 
刻意埋藏的后门?
 

随着调查的深入,那一笔触发Bug的交易被放回桌面上被仔细的剖析。我们再来看一下:

201905050745301.jpg


注意到,该笔交易调用的是合约里withdraw函数,发送的金额为0.011911 TRX,要注意在Tronbank正常的业务逻辑下,调用withdraw函数是不应该发送任何TRX的,金额应该为0. 这一点在源代码中就可以验证。

像Tronbank这样资金盘属性的Dapp,往往都会把代码开源让合约和逻辑变得透明可信来吸引投资人,在网站最明显的位置,也标明了通过第三方验证工具tronsmartcontract.space(以下简称TSC)进行合约代码验证后的代码信息。

201905050745316.jpg


201905050745317.jpg


           
从TSC点开源代码之后,找到withdraw函数,函数第一行会先调用_withdraw()来取得可以提取的TRX金额,在_withdraw()函数的第一行我们可以看到:

require(msg.value == 0, "wrong trx amount"); 

这一行代码的意思是要求该笔交易发送的TRX金额必须为零,否则无法继续执行,交易会被REVERT。

也就是说,按照开源代码的逻辑,那一笔触发Bug的交易根本不可能发生。

现实变成了,TRX Pro的合约实际执行逻辑和所谓“开源”的代码逻辑并不一致。

这里补充说明一下,所谓的代码认证过程是这样:

1. 开发者在主网发布合约

2. 开发者在TSC上传代码,选择编译版本,编译为bytecodes,

3. TSC把步骤2中的bytecodes和步骤1中发布合约的bytecodes做匹配,匹配成功,则认证通过,理论上多或者少一个空格都不行

进一步深扒,从tronscan上找到TRX Pro合约的bytecodes,用反编译工具进行处理得到:

201905050745318.jpg


反编译工具:

https://www.trustlook.com/products/smartcontractguardian

在withdraw函数中,多了一个判断 else if ((0x2E87 == msg.value)),如果满足条件,那么就会把合约的余额全部转给交易发起者!我们把16进制的数字0x2E87转换成10进制,也就是11911,要知道TRX的精度为6位,11911所对应的TRX金额就是0.011911 TRX... 而这一部分判断在TSC的开源代码中是不存在的,看起来就像是是一个被藏起来没有公布的后门。

用更简单的语言梳理一遍:

1. 在主网上部署的合约,通过反编译发现,调用withdraw函数时,如果发送金额等于0.011911 TRX,则会转移全部合约余额;

2. 在TSC上认证过的开源代码中,如果发送金额不为零调用withdraw函数,交易会被撤回。

那么一切就很清晰了,实际发生的与第一点完全吻合,主网的代码运行没有问题,即TronBank在主网部署的合约中存在一个可以直接提走合约余额的后门代码,而有意思的在于第二点,明明不一样的代码逻辑是如何上传后通过了TSC的认证过程?

根据已有的信息,断定“是开发者在合约之中放置后门”这个结论仍然为时过早,目前我们可以得出的客观结论只有两点:

1. TRX Pro在主网的合约中存在后门

2. TSC上认证过的代码与实际合约运行逻辑不符

注:以下内容是基于现有事实依据的可能性探讨,不代表最终结论和真相,请在传播时不要断章取义。

至于后门是谁放置的,如何放置的?目前没有任何实锤证据,有的人认为是Tronbank开发者,有的人认为开发者的实力还不足以通过欺骗TSC验证与实际部署所不同的代码。

客观来分析存在的可能性(注意,此处仅讨论可能性,即便该可能性极低,真相目前没有任何实锤证据),有以下几种:

可能性一:Tronbank开发者在实际部署的合约中夹杂私货放置了后门,并成功欺骗了TSC完成了另一份没有后门的代码验证。

在探讨这种可能性时,如何欺骗TSC成为了焦点,如果真的TSC的验证存在Bug,那么这意味着之前所有通过TSC认证并标榜开源的Dapp都不再可信和透明,事实上,在Discord群里,TSC的开发者Khanh承认代码已经很久没有维护并存在bug的可能性,也有其他开发者证实自己实际部署的代码和通过认证的代码可以不完全相同。

另一方面,Tronbank开发者在Telegram群中多次声称团队没有在合约中放置任何的后门,有一种自证清白的方式是:官方给出部署时的源代码以及编译方式(包括编译工具以及版本),理论上任何人按照同样方式编译出来的bytecode和线上部署的TRX Pro合约应该一致。但当我们提出该质疑时,官方回复如下:

201905050745329.jpg


这个回复的内容如果当真,则该事件将更加戏剧化和复杂化,参考可能性三

可能性二:Tronbank团队和TSC团队合谋,部署了有后门的合约,同时TSC协助用另一个没有后门的合约完成验证。

这是在“欺骗TSC”很难成立的前提下提出的可能性,TSC最终打上验证的标签其实是中心化的行为,完全可以人为操作,但对于TSC作为一个第三方合约验证工具来说,目前尚无竞品,做这样的事情无疑严重损伤自己的品牌,串通合谋是在性价比太低。

可能性三:Tronbank团队没有在合约中放置后门,而是后门在合约部署过程中以某种方式产生。

这种可能性是基于“可能一”中的官方回复的一种暗示,即项目方在合约部署时确实使用的是没有后门的合约,编译工具在部署合约到主网的过程中出现了猫腻,加入了有问题的后门。但项目方目前没有提供任何的可验证信息,使用的编译工具,以及同样代码两次编译不同结果的信息。

不论如何,TronBank开发者实际部署的代码原样我们不得而知,也无法验证真伪,该事件的真相需要等待各方提供更有说服力的证据才能被逐渐还原出来。

至少在此刻,我们还不能下定论,究竟是谁埋下了这个后门。

 
投资者的钱怎么办?
 

在以上错综复杂的信息之下,大部分玩家已经放弃了追查真相,而更关注的则是找回损失。

在承诺退款并要求蒙受损失的投资人发送交易信息之后,wojak整整失联了超过12小时,这期间wojak账户里的钱大部分被转移到了币安交易所。有人开始怀疑wojak并没有打算退钱准备捐款跑路,还有人认为这是TronBank项目方监守自盗,wojak就是项目方之一。

5月3日下午2点44分

另一边,在Tronbank的官方群里,管理员贴出的置顶消息是“TRX Pro被黑客THeRTTCvN4SHEVYNqcLVLNGGVsWLR4smyH攻击,目前开发团队正在紧急处理,将会及时在群里更新消息”

2019050507453210.jpg


5月3日晚上9点13分

2019050507453211.jpg


wojak再次现身,说自己花4个多小时写了脚本从链上获取到tronbank的投资数据来跟收集到的损失信息对比,其中有不少人虚报损失,甚至有完全没有参与过投资的用户也来谎报损失,仅有少数人诚实地汇报了数字。wojak也把比对信息贴了出来https://pastebin.com/raw/gMtxCw97。

5月4日下午1点24分

整整一天之后,Tronbank项目方再次发出通知,他们正在联系wojak进行退款,如果wojak在5月4日晚7点时没有任何回复,官方将提供给投资人的补偿方案。

2019050507453212.jpg


5月4日下午3点 - 4点

针对之前所承诺的24小时内给出事件分析报告,官方将再次延期,声称将联系安全公司,TSC以及波场官方做更多的调查。同时评论到,有很多细节仍需确认,之前从未遇到类似情况,这有可能是一个精彩的故事。

2019050507453213.jpg


2019050507453314.jpg


5月4日晚上7点

Tronbank项目方如约公布了赔偿方案,令大部分人吃惊的是项目方没有跑路,而是承诺在24小时内收集信息,并在72小时内进行全额赔付。如果赔付照常发放,这可能是Dapp历史上最大的一次项目方赔付。

2019050507453315.jpg


而此次赔付通知,可以说是给投资者吃了一颗定心丸,使得大部分用户打消了“后门是由开发者留下”的疑虑。但在真相露出水面之前,DappReview依旧保留质疑的态度,等待项目方公开更多的调查报告。

 
结语
 

原本看起来是一起常见的黑客攻击事件,却喜剧般演化成一场罗生门。究竟是开发者留后门,巧被程序员打开,还是如项目方所说有更底层的问题存在?除了当局者本身,无人知晓。

投资者们对于去中心化的信任(TSC提供的代码认证)崩塌,寄托于中心化的信任(起初是wojak的承诺,后来是Tronbank的赔付公告)。虽然严格意义上来讲最终的真相可能并不是“去中心化的锅”,但对于普通用户而言,很难区分其中差异,大部分用户的认知只能停留在“智能合约为什么开源了明明没有问题还被黑了?”

在本次事件中,虽然Tronbank承诺赔付投资人受损的利益,但受伤的无疑是波场的整个Dapp生态,基于TSC认证的开源代码所产生的信任和背书已经毫无价值,在波场官方出来验证工具之前,DappReview建议各位Dapp玩家不要轻信项目方所谓代码开源言论。

此外,截至到发稿,wojak尚未再次露面,也未将资金退还给任何投资人。
 
 
续集:2600万TRX被盗背后的罗生门 - 第二集

闪电网络存在固有费用漏洞?用户在无误操作下仍会丢失资金

资讯ccvalue 发表了文章 • 2019-04-10 18:47 • 来自相关话题

Peter R Rizun 是比特币无限(Bitcoin Unlimited)首席科学家,他最近对于解决比特币可扩展问题而提出的第二层协议闪电网络发表了令人震惊的看法。Peter R Rizun声称,闪电网络用户存在固有费用漏洞,会在没有做任何错事的情况下丢失所有资金。

闪电网络是比特币的第二层解决方案,允许用户进行链下支付,从而确保比特币交易速度更快,成本也更低。闪电网络依赖于底层技术(即比特币区块链),但主要支持的是金额较小的交易需要。用户无需在区块链上记录付款即可进行支付,直到最终被结算。此外,闪电网络未来可能还会扮演多币种路由网络的角色。

然而,Peter R Rizun认为在比特币第一层收费高昂且不稳定的环境中,闪电网络用户会在自己没有任何过错的情形丢失所有的钱,因为当对区块链空间需求激增的时候,比特币的区块大小限制了高额且不稳定的费用。

对此,康奈尔大学教授Emin Gur Sirer表示:

    “中本聪设计的比特币区块并没有考虑大部分被填满的情况,而且之后的开发人员也没有设计出费用稳定且可预测的收费机制。”


此外,一名来自Reddit论坛的用户“Jungans”认为闪电网络这种“丢失资金”的情况与分散在一些未支付交易输出(UTXO)上的链上资金并不一样。对此,Peter R Rizun澄清说,闪电网络的问题与未支付交易输出是两个完全不同的情况,并做了一个详细的解释:

    想象一下,当你打开一个闪电网络通道,里面你有50美元的余额。也许你会向通道合作伙伴支付一些费用,假设这笔费用是25美元,此时你有25美元,他有25美元。但随后通道费用从0增加到了10美元,所以你不得不从自己仅有的25美元里再转出10美元到“费用桶(fee bucket)里”,这样你现在只有15美元。接下来,如果费用上涨到20美元,你需要从自己的余额里再拿出另外10美元并将其转入到费用桶里,所以现在你的余额只剩5美元了。

    但是费用在不断上涨,而且你的通道合作伙伴会非常担心,很快你就无法拥有足够的账户余额来支付费用了,而且通道合作伙伴也无法声明获得自己应得的25美元。所以,如果你通道余额没钱的时候,他就会强行关闭通道。这样会导致一个结果,即你的所有余额都会进入到费用桶里,然后通道被关闭,再把25美元退还给你的通道合作伙伴,但此时你却一无所获,你的通道合作伙伴现在要做的就是等待费用下降。

    也许一周之后,费用会降低到0美元,但此时你已经支出了25美元,而你的通道合作伙伴支出的金额为0美元。换句话说,这期间你并没有做过任何错事,但却“莫名其妙”地赔钱了。


最近,闪电网络由于即将“熄灭”的闪电火炬活动引起了社区极大地关注,通道容量也创下了500万美元的历史新高,此外现在闪电网络已经覆盖到了全球131个国家/地区。


原文: 
https://ambcrypto.com/bitcoins-lightning-network-users-can-lose-all-their-money-through-no-fault-of-their-own-says-peter-r-rizun/ https://www.reddit.com/r/btc/comments/balwtc/peter_r_rizun_a_lightning_user_can_lose_all_of/

碳链价值编译组出品

编译:氪12 查看全部
bitcoin-lightning-800x450.jpg

Peter R Rizun 是比特币无限(Bitcoin Unlimited)首席科学家,他最近对于解决比特币可扩展问题而提出的第二层协议闪电网络发表了令人震惊的看法。Peter R Rizun声称,闪电网络用户存在固有费用漏洞,会在没有做任何错事的情况下丢失所有资金。

闪电网络是比特币的第二层解决方案,允许用户进行链下支付,从而确保比特币交易速度更快,成本也更低。闪电网络依赖于底层技术(即比特币区块链),但主要支持的是金额较小的交易需要。用户无需在区块链上记录付款即可进行支付,直到最终被结算。此外,闪电网络未来可能还会扮演多币种路由网络的角色。

然而,Peter R Rizun认为在比特币第一层收费高昂且不稳定的环境中,闪电网络用户会在自己没有任何过错的情形丢失所有的钱,因为当对区块链空间需求激增的时候,比特币的区块大小限制了高额且不稳定的费用。

对此,康奈尔大学教授Emin Gur Sirer表示:


    “中本聪设计的比特币区块并没有考虑大部分被填满的情况,而且之后的开发人员也没有设计出费用稳定且可预测的收费机制。”



此外,一名来自Reddit论坛的用户“Jungans”认为闪电网络这种“丢失资金”的情况与分散在一些未支付交易输出(UTXO)上的链上资金并不一样。对此,Peter R Rizun澄清说,闪电网络的问题与未支付交易输出是两个完全不同的情况,并做了一个详细的解释:


    想象一下,当你打开一个闪电网络通道,里面你有50美元的余额。也许你会向通道合作伙伴支付一些费用,假设这笔费用是25美元,此时你有25美元,他有25美元。但随后通道费用从0增加到了10美元,所以你不得不从自己仅有的25美元里再转出10美元到“费用桶(fee bucket)里”,这样你现在只有15美元。接下来,如果费用上涨到20美元,你需要从自己的余额里再拿出另外10美元并将其转入到费用桶里,所以现在你的余额只剩5美元了。

    但是费用在不断上涨,而且你的通道合作伙伴会非常担心,很快你就无法拥有足够的账户余额来支付费用了,而且通道合作伙伴也无法声明获得自己应得的25美元。所以,如果你通道余额没钱的时候,他就会强行关闭通道。这样会导致一个结果,即你的所有余额都会进入到费用桶里,然后通道被关闭,再把25美元退还给你的通道合作伙伴,但此时你却一无所获,你的通道合作伙伴现在要做的就是等待费用下降。

    也许一周之后,费用会降低到0美元,但此时你已经支出了25美元,而你的通道合作伙伴支出的金额为0美元。换句话说,这期间你并没有做过任何错事,但却“莫名其妙”地赔钱了。



最近,闪电网络由于即将“熄灭”的闪电火炬活动引起了社区极大地关注,通道容量也创下了500万美元的历史新高,此外现在闪电网络已经覆盖到了全球131个国家/地区。


原文: 
https://ambcrypto.com/bitcoins-lightning-network-users-can-lose-all-their-money-through-no-fault-of-their-own-says-peter-r-rizun/ https://www.reddit.com/r/btc/comments/balwtc/peter_r_rizun_a_lightning_user_can_lose_all_of/

碳链价值编译组出品


编译:氪12

创始人奖励让Zcash所向披靡?这个漏洞花了近1年才解决

项目8btc 发表了文章 • 2019-02-06 12:16 • 来自相关话题

和很多加密货币爱好者不同,爱德华·斯诺登(Edward Snowden)完全不介意Zcash有创始人奖励这件事。这位前CIA(美国中情局)雇员近日再次在推特上表示了自己对这一匿名数字资产的支持。

在斯诺登看来,创始人奖励是一种经济激励,能够资助Zcash团队解决这一项目遇到的问题,例如发现并修复漏洞。然而,加密货币社区其他成员指出,就算没有创始人奖励,很多项目团队同样愿意修复代码库中存在的问题。

数字货币社区的大多数人都认为创始人奖励违背了加密货币和去中心化的精神。但斯诺登说,这样的奖励可以吸引更多人才为Zcash项目做贡献,这是非常重要的。他认为只有源源不断的资金才能让开发者在恶意第三方出现之前发现并解决问题。

就在11个月以前,Zcash开发者就发现了这样一个漏洞。今日,Zcash官方团队公布其发现了代码漏洞,并附上了解决方法。

该团队将其发现的问题称为“伪造漏洞”(counterfeiting vulnerability)。这个漏洞最开始是在去年3月份发现的,而Zcash开发者当时决定不对外公开,因为担心攻击者可能会利用这个漏洞发起攻击。而如今这一漏洞已经修复完成,Zcash用户无需进行任何操作。

Zcash团队表示:

    该漏洞允许攻击者在使用本文所描述的参数的任意系统中创建伪造的屏蔽值(shielded value)。


Zcash开发者指出,目前其网络中并未因这一漏洞而出现任何攻击,因为发现这个漏洞本身就需要非常丰富的经验和知识。

斯诺登说,Zcash的创始人奖励(矿工每挖出一个区块所获奖励的20%)帮助解决了这一漏洞:

    很多人都问我为什么会喜欢设置了创始人奖励的Zcash。原因如下:这些资金能够资助一支高质量的团队,他们可能发现并且消灭重大内部漏洞,让攻击者无机可乘。有些项目只能在造成资金损失之后才能发现漏洞。







然而,有网友反驳了他的观点,强调其他项目即使没有创始人奖励也能够解决代码漏洞。比特币和门罗币等加密货币都不需要依靠向一个中心化的开发者团队支付固定的资金,他们的开发者依然能够快速修复漏洞。事实上,近期比特币的某个漏洞在被发现之后只花了几天的时间就修复完成了。






有意思的是,Zcash的官方声明中强调,这一代码漏洞已经存在数年时间。如果按照斯诺登的逻辑,或许创始人奖励再高20%,他们解决漏洞的速度也会快一点。


原文:https://www.newsbtc.com/2019/02/05/snowden-zcash-founders-reward/
作者:RICK D.
编译:Wendy 查看全部
201902060330524209.jpg

和很多加密货币爱好者不同,爱德华·斯诺登(Edward Snowden)完全不介意Zcash有创始人奖励这件事。这位前CIA(美国中情局)雇员近日再次在推特上表示了自己对这一匿名数字资产的支持。

在斯诺登看来,创始人奖励是一种经济激励,能够资助Zcash团队解决这一项目遇到的问题,例如发现并修复漏洞。然而,加密货币社区其他成员指出,就算没有创始人奖励,很多项目团队同样愿意修复代码库中存在的问题。

数字货币社区的大多数人都认为创始人奖励违背了加密货币和去中心化的精神。但斯诺登说,这样的奖励可以吸引更多人才为Zcash项目做贡献,这是非常重要的。他认为只有源源不断的资金才能让开发者在恶意第三方出现之前发现并解决问题。

就在11个月以前,Zcash开发者就发现了这样一个漏洞。今日,Zcash官方团队公布其发现了代码漏洞,并附上了解决方法。

该团队将其发现的问题称为“伪造漏洞”(counterfeiting vulnerability)。这个漏洞最开始是在去年3月份发现的,而Zcash开发者当时决定不对外公开,因为担心攻击者可能会利用这个漏洞发起攻击。而如今这一漏洞已经修复完成,Zcash用户无需进行任何操作。

Zcash团队表示:


    该漏洞允许攻击者在使用本文所描述的参数的任意系统中创建伪造的屏蔽值(shielded value)。



Zcash开发者指出,目前其网络中并未因这一漏洞而出现任何攻击,因为发现这个漏洞本身就需要非常丰富的经验和知识。

斯诺登说,Zcash的创始人奖励(矿工每挖出一个区块所获奖励的20%)帮助解决了这一漏洞:


    很多人都问我为什么会喜欢设置了创始人奖励的Zcash。原因如下:这些资金能够资助一支高质量的团队,他们可能发现并且消灭重大内部漏洞,让攻击者无机可乘。有些项目只能在造成资金损失之后才能发现漏洞。



201902060331251450.png


然而,有网友反驳了他的观点,强调其他项目即使没有创始人奖励也能够解决代码漏洞。比特币和门罗币等加密货币都不需要依靠向一个中心化的开发者团队支付固定的资金,他们的开发者依然能够快速修复漏洞。事实上,近期比特币的某个漏洞在被发现之后只花了几天的时间就修复完成了。

201902060331475592.png


有意思的是,Zcash的官方声明中强调,这一代码漏洞已经存在数年时间。如果按照斯诺登的逻辑,或许创始人奖励再高20%,他们解决漏洞的速度也会快一点。


原文:https://www.newsbtc.com/2019/02/05/snowden-zcash-founders-reward/
作者:RICK D.
编译:Wendy

安全漏洞重现,分叉前夕的以太坊只想"静一静”...

项目45qu 发表了文章 • 2019-01-18 11:15 • 来自相关话题

让我们陷入困境的不是无知, 而是看似正确的谬误论断。 ——马克·吐温

君士坦丁堡升级是什么? 以太坊经历了哪些升级? 此次升级有何意义?


最近即将实施硬分叉的以太坊再次成为币圈为数不多的热点,相较于去年惨烈的BCH分叉大战,此次分叉则更为和谐。

这次分叉为何以曾经辉煌的千年古都君士坦丁堡命名成为一个谜。

作为中古世纪东罗马帝国的国都君士坦丁堡,曾经是公认的西方政治、经济、文化、交通,以及宗教中心。

事实上,俄罗斯在历史上继承了拜占庭帝国的衣钵,加之以太坊创始人Vitalik Buterin俄罗斯的国籍。

因此,以拜占庭和君士坦丁堡为两次硬分叉命名也在情理之中。

在去年12月初举行的核心开发者会议上,以太坊开发团队成员就多次延迟的君士坦丁堡分叉升级时间达成协议,确定将7080000区块作为硬分叉激活点。

随后在上周,以太坊官方正式发文提醒硬分叉注意事项,并确定硬分叉时间预计在北京时间1月17日。

据了解,这一次的升级也被称为社区最期待的升级,以太坊的性能也将在此次升级中大幅提升。

但是,就在君士坦丁堡升级一触即发的时刻,智能合约审计平台ChainSecurity在昨天发现,如果实施以太坊改进提案(EIP)1283,可能为攻击者提供盗取用户资金的代码漏洞。

以太坊开发者们在进行电话会议后决定再度推迟硬分叉时间,具体日期将在本周五的核心开发者电话会议上重新讨论决定。

以太坊核心开发者Afri Schoedon则在Twitter上称硬分叉现预计于下周一进行。


01
 

受到硬分叉再次延期的影响,ETH价格也应声下跌。

此前受硬分叉利好刺激的涨幅几乎被全盘收回,盘中最低一度触及116美元。

针对最新发现的漏洞,区块链分析公司Amberdata首席技术官Joanes Espanol在接受采访时表示,此次的新漏洞可能导致硬分叉后出现“重入攻击”的风险。

事实上,有分析指出新漏洞与The DAO事件的漏洞具有相似之处。

攻击过程大致都是攻击者先假装提现让合约觉得余额减少,随后将提现的ETH重新存入并转移到第二个地址中。

由于当前合约中的余额已经超出合约认为自己持有的数额,因此所有超额部分都能直接被攻击者提取。

作为大都会版本的第二个升级,君士坦丁堡硬分叉也是在“拜占庭”的基础上进一步进行升级。

升级目的在于降低工作成本并简化创建DApps的流程。

此次升级从底层虚拟机到智能合约,整体上提高了整个以太坊网络的性能。

除了“难度炸弹”再度推迟12个月外,引发热议的话题便是区块奖励再次从3ETH减少到2ETH。

这将使挖矿成本相对增加,并直接决定矿工的挖矿收益减少。

受此影响,PeckShield平台数据显示目前以太坊全网只有23.6%的全节点完成了软件升级,而且这一比例在过去几天内增长较缓。

此外,其他在技术方面的升级的目的是让开发者能够高效便捷地运行智能合约,进一步降低成本,并为即将到来的Layer 2扩容方案铺路。

尽管以太坊在第四阶段的核心共识将完成从PoW到PoS的转换,君士坦丁堡又是第三阶段的最后一次升级。

不少人都期待这一次升级中PoW/PoS混合的模式。

但是,在目前看到的Go-Ethereum发布的共识模块中并不支持PoW/PoS混合共识。

由此可见,对于以太坊开发团队来说,引入PoS共识还为时尚早。


02
 

包括此次硬分叉在内,以太坊已经至少经历了五次硬分叉。

不同于BCH由于共识破裂导致的硬分叉,以太坊硬分叉则是社区内部统一认可的技术升级。

早在以太坊发布之初,团队就已把以太坊的发展规划为包括Frontier(前沿)、Homestead(家园)、Metropolis(大都会)以及Serenity(宁静)在内的四个阶段。

此前的两次分叉主要是从Frontier(前沿)到Homestead(家园)的过渡。

目的在于稳定版本的发布以及未来挖矿难度的调整。

相较于Frontier版本,虽然Hometead没有明显的技术性改革,但易用性得到了改善,用户体验也进行了相对优化。

随后的一次分叉起源便是著名的“The DAO”事件。

2016年6月,由于其编写的智能合约存在着重大缺陷,曾经是区块链业界最大的众筹项目TheDAO遭黑客攻击,导致市值近5000万美元的以太币被转移。

为了挽回投资者的损失,以太坊社区投票打算更改代码回滚数据。

随后在7月,以太坊完成硬分叉,最终形成了两条链。

目前,以太坊的“官方”版本ETH由其原始开发者进行维护,以太经典ETC则是由新团队进行维护。

目前,以太坊正处于第三阶段Metropolis。

由于Metropolis为以太坊带来大量重要特性,这些特性无法一次性引入,因此又被分为“拜占庭”和“君士坦丁堡”两个小阶段。

2017年10月,第一阶段“拜占庭”分叉完成升级,在这一次升级后以太坊性能也有了一定的提升。

除了以太坊发行量会进一步减少40%左右,矿工的区块奖励将从5ETH减少至3ETH外,还包括更高的匿名性和网络安全性。

而此前为了确保以太坊矿工们全部加入新链而引入的“难度炸弹”机制被推迟一年。

难度炸弹是指计算难度时除了根据出块时间和上一个区块难度进行调整外,还包括一个呈指数型增长的难度因子。

由于PoW比拼的是算力,为了实现共识算法从PoW向PoS的转变,最简单的办法就是让挖矿难度陡增,这也是以太坊设置“难度炸弹”的根本原因。

随着区块生成时间的增加,最后将面临几乎挖不出区块的状况,矿工除了转向PoS协议之外别无他法。

这也成为以太坊迈入最终阶段Serenity(宁静)的重要一步。


03
 

不少分析师都对即将执行的君士坦丁堡分叉表现出乐观的态度。

其中,创世纪环球贸易首席执行官Michael Moro在谈到此次硬分叉时特别提到了供应减少将减少市场的抛售压力。

他在接受采访时表示:“由于减产33%,这可能会降低来自矿商回报的抛售压力。”

作为曾经的“公链之王”,以太坊旨在通过为其他项目提供区块链应用开发平台来打造更广泛的生态系统。

以太坊曾掀起ICO的热潮,也引领了一波资本的狂欢。时过境迁,ICO已经渐渐淡出了人们的视线。

以太坊的价格也一落千丈。从最高的1237美元跌去了近90%。

就连曾经的DApp 主场,也逐渐被包括EOS在内的公链瓜分市场。

虽然在众多开发者和用户眼中,以太坊依然是公链中的“老大”。

但是,以太坊中存在的诸多性能问题始终无法解决,以太坊将失去这些信仰者。

根据DAppReview数据显示,目前在以太坊运行的DApp总数为1515个,但是日活用户均在1000以下。

已经远远低于在EOS运行的DApp上万的日活用户数。

事实上,以太坊被诟病最多的便是扩容问题。

目前以太坊每秒只能处理14笔交易,而Visa能够每秒处理24000笔交易。

交易拥堵直接导致了交易手续费的升高,这是由于以太坊智能合约计算手续费的算法缺陷。

为了让自己的交易尽快得到确认,发起交易的用户将提高Gas价格,手续费一度飙升至5862个ETH。

尽管V神提出了Casper和分片技术以解决以太坊的拥堵问题,但是目前尚未进入应用阶段。

通证道捷首席架构师孟岩也在接受采访时表示,以太坊君士坦丁堡升级对于性能的提升没有太根本的改进。

除非落实Casper重大性能的提升,否则将不会改变公链点竞争态势。

此次的君士坦丁堡分叉与其说是一次技术升级,倒更像是一场突围之战。 查看全部
201901180236165647.jpg


让我们陷入困境的不是无知, 而是看似正确的谬误论断。 ——马克·吐温

君士坦丁堡升级是什么? 以太坊经历了哪些升级? 此次升级有何意义?



最近即将实施硬分叉的以太坊再次成为币圈为数不多的热点,相较于去年惨烈的BCH分叉大战,此次分叉则更为和谐。

这次分叉为何以曾经辉煌的千年古都君士坦丁堡命名成为一个谜。

作为中古世纪东罗马帝国的国都君士坦丁堡,曾经是公认的西方政治、经济、文化、交通,以及宗教中心。

事实上,俄罗斯在历史上继承了拜占庭帝国的衣钵,加之以太坊创始人Vitalik Buterin俄罗斯的国籍。

因此,以拜占庭和君士坦丁堡为两次硬分叉命名也在情理之中。

在去年12月初举行的核心开发者会议上,以太坊开发团队成员就多次延迟的君士坦丁堡分叉升级时间达成协议,确定将7080000区块作为硬分叉激活点。

随后在上周,以太坊官方正式发文提醒硬分叉注意事项,并确定硬分叉时间预计在北京时间1月17日。

据了解,这一次的升级也被称为社区最期待的升级,以太坊的性能也将在此次升级中大幅提升。

但是,就在君士坦丁堡升级一触即发的时刻,智能合约审计平台ChainSecurity在昨天发现,如果实施以太坊改进提案(EIP)1283,可能为攻击者提供盗取用户资金的代码漏洞。

以太坊开发者们在进行电话会议后决定再度推迟硬分叉时间,具体日期将在本周五的核心开发者电话会议上重新讨论决定。

以太坊核心开发者Afri Schoedon则在Twitter上称硬分叉现预计于下周一进行。


01
 

受到硬分叉再次延期的影响,ETH价格也应声下跌。

此前受硬分叉利好刺激的涨幅几乎被全盘收回,盘中最低一度触及116美元。

针对最新发现的漏洞,区块链分析公司Amberdata首席技术官Joanes Espanol在接受采访时表示,此次的新漏洞可能导致硬分叉后出现“重入攻击”的风险。

事实上,有分析指出新漏洞与The DAO事件的漏洞具有相似之处。

攻击过程大致都是攻击者先假装提现让合约觉得余额减少,随后将提现的ETH重新存入并转移到第二个地址中。

由于当前合约中的余额已经超出合约认为自己持有的数额,因此所有超额部分都能直接被攻击者提取。

作为大都会版本的第二个升级,君士坦丁堡硬分叉也是在“拜占庭”的基础上进一步进行升级。

升级目的在于降低工作成本并简化创建DApps的流程。

此次升级从底层虚拟机到智能合约,整体上提高了整个以太坊网络的性能。

除了“难度炸弹”再度推迟12个月外,引发热议的话题便是区块奖励再次从3ETH减少到2ETH。

这将使挖矿成本相对增加,并直接决定矿工的挖矿收益减少。

受此影响,PeckShield平台数据显示目前以太坊全网只有23.6%的全节点完成了软件升级,而且这一比例在过去几天内增长较缓。

此外,其他在技术方面的升级的目的是让开发者能够高效便捷地运行智能合约,进一步降低成本,并为即将到来的Layer 2扩容方案铺路。

尽管以太坊在第四阶段的核心共识将完成从PoW到PoS的转换,君士坦丁堡又是第三阶段的最后一次升级。

不少人都期待这一次升级中PoW/PoS混合的模式。

但是,在目前看到的Go-Ethereum发布的共识模块中并不支持PoW/PoS混合共识。

由此可见,对于以太坊开发团队来说,引入PoS共识还为时尚早。


02
 

包括此次硬分叉在内,以太坊已经至少经历了五次硬分叉。

不同于BCH由于共识破裂导致的硬分叉,以太坊硬分叉则是社区内部统一认可的技术升级。

早在以太坊发布之初,团队就已把以太坊的发展规划为包括Frontier(前沿)、Homestead(家园)、Metropolis(大都会)以及Serenity(宁静)在内的四个阶段。

此前的两次分叉主要是从Frontier(前沿)到Homestead(家园)的过渡。

目的在于稳定版本的发布以及未来挖矿难度的调整。

相较于Frontier版本,虽然Hometead没有明显的技术性改革,但易用性得到了改善,用户体验也进行了相对优化。

随后的一次分叉起源便是著名的“The DAO”事件。

2016年6月,由于其编写的智能合约存在着重大缺陷,曾经是区块链业界最大的众筹项目TheDAO遭黑客攻击,导致市值近5000万美元的以太币被转移。

为了挽回投资者的损失,以太坊社区投票打算更改代码回滚数据。

随后在7月,以太坊完成硬分叉,最终形成了两条链。

目前,以太坊的“官方”版本ETH由其原始开发者进行维护,以太经典ETC则是由新团队进行维护。

目前,以太坊正处于第三阶段Metropolis。

由于Metropolis为以太坊带来大量重要特性,这些特性无法一次性引入,因此又被分为“拜占庭”和“君士坦丁堡”两个小阶段。

2017年10月,第一阶段“拜占庭”分叉完成升级,在这一次升级后以太坊性能也有了一定的提升。

除了以太坊发行量会进一步减少40%左右,矿工的区块奖励将从5ETH减少至3ETH外,还包括更高的匿名性和网络安全性。

而此前为了确保以太坊矿工们全部加入新链而引入的“难度炸弹”机制被推迟一年。

难度炸弹是指计算难度时除了根据出块时间和上一个区块难度进行调整外,还包括一个呈指数型增长的难度因子。

由于PoW比拼的是算力,为了实现共识算法从PoW向PoS的转变,最简单的办法就是让挖矿难度陡增,这也是以太坊设置“难度炸弹”的根本原因。

随着区块生成时间的增加,最后将面临几乎挖不出区块的状况,矿工除了转向PoS协议之外别无他法。

这也成为以太坊迈入最终阶段Serenity(宁静)的重要一步。


03
 

不少分析师都对即将执行的君士坦丁堡分叉表现出乐观的态度。

其中,创世纪环球贸易首席执行官Michael Moro在谈到此次硬分叉时特别提到了供应减少将减少市场的抛售压力。

他在接受采访时表示:“由于减产33%,这可能会降低来自矿商回报的抛售压力。”

作为曾经的“公链之王”,以太坊旨在通过为其他项目提供区块链应用开发平台来打造更广泛的生态系统。

以太坊曾掀起ICO的热潮,也引领了一波资本的狂欢。时过境迁,ICO已经渐渐淡出了人们的视线。

以太坊的价格也一落千丈。从最高的1237美元跌去了近90%。

就连曾经的DApp 主场,也逐渐被包括EOS在内的公链瓜分市场。

虽然在众多开发者和用户眼中,以太坊依然是公链中的“老大”。

但是,以太坊中存在的诸多性能问题始终无法解决,以太坊将失去这些信仰者。

根据DAppReview数据显示,目前在以太坊运行的DApp总数为1515个,但是日活用户均在1000以下。

已经远远低于在EOS运行的DApp上万的日活用户数。

事实上,以太坊被诟病最多的便是扩容问题。

目前以太坊每秒只能处理14笔交易,而Visa能够每秒处理24000笔交易。

交易拥堵直接导致了交易手续费的升高,这是由于以太坊智能合约计算手续费的算法缺陷。

为了让自己的交易尽快得到确认,发起交易的用户将提高Gas价格,手续费一度飙升至5862个ETH。

尽管V神提出了Casper和分片技术以解决以太坊的拥堵问题,但是目前尚未进入应用阶段。

通证道捷首席架构师孟岩也在接受采访时表示,以太坊君士坦丁堡升级对于性能的提升没有太根本的改进。

除非落实Casper重大性能的提升,否则将不会改变公链点竞争态势。

此次的君士坦丁堡分叉与其说是一次技术升级,倒更像是一场突围之战。

以太坊“君士坦丁堡”升级将延迟

资讯chainb 发表了文章 • 2019-01-16 18:46 • 来自相关话题

以太坊的“君士坦丁堡”(Constantinople)升级面临延迟,因在其中一项变更中发现了一个严重的漏洞。

智能合约审计公司ChainSecurity周二表示,如果实施以太坊改进提案(EIP)1283,可能会为攻击者提供窃取用户资金的代码漏洞。在电话会议上,以太坊开发商以及客户开发商,和其他运营网络项目的开发商同意在评估问题时暂时推迟硬分叉。

参与者包括以太坊创造者Vitalik Buterin,开发人员Hudson Jameson,Nick Johnson和Evan Van Ness,以及Parity发布经理Afri Schoedon等。周五,将在以太坊电话会议期间将决定新的分叉日期。

在讨论漏洞的问题时,项目的核心开发人员得出的结论是,在硬分叉之前修复漏洞需要很长时间,预计将在1月17日04:00左右执行。

这个漏洞被称为可重入攻击,实质上可以允许攻击者多次“重新进入”同一个函数,而无需更新用户的事务状态。在这种情况下,攻击者基本上可以“永远撤回资金”,区块链分析公司Amberdata的首席技术官Joanes Espanol在之前的CoinDesk采访中表示。

他解释说:

    “想象一下,合约中有一个函数可以调用另一个合同......如果我是一个黑客,我能够在前一个功能仍在执行的情况下触发功能,提取资金。”


这就类似于臭名昭著的2016年DAO攻击中发现的漏洞之一。

ChainSecurity的帖子解释说,在Constantinople之前,网络上的存储操作将耗费5,000 gas,超过通常的“转移”或“发送”功能调用合同时发送的2,300 gas。

但是,如果实施升级,“不干净的”存储操作将耗费200 gas。“攻击合同可以使用2300 gas津贴成功操纵弱势合约的变量。”

之前预计Constantinople将在2018年启动,但在Ropsten测试网上启动升级后发现问题后推迟。 


原文:https://www.coindesk.com/ethereums-constantinople-upgrade-faces-delay-due-to-security-vulnerability
来源:coindesk
作者:Christine Kim , Nikhilesh De
编译:Miranda 查看全部
20190116134893239323.jpg

以太坊的“君士坦丁堡”(Constantinople)升级面临延迟,因在其中一项变更中发现了一个严重的漏洞。

智能合约审计公司ChainSecurity周二表示,如果实施以太坊改进提案(EIP)1283,可能会为攻击者提供窃取用户资金的代码漏洞。在电话会议上,以太坊开发商以及客户开发商,和其他运营网络项目的开发商同意在评估问题时暂时推迟硬分叉。

参与者包括以太坊创造者Vitalik Buterin,开发人员Hudson Jameson,Nick Johnson和Evan Van Ness,以及Parity发布经理Afri Schoedon等。周五,将在以太坊电话会议期间将决定新的分叉日期。

在讨论漏洞的问题时,项目的核心开发人员得出的结论是,在硬分叉之前修复漏洞需要很长时间,预计将在1月17日04:00左右执行。

这个漏洞被称为可重入攻击,实质上可以允许攻击者多次“重新进入”同一个函数,而无需更新用户的事务状态。在这种情况下,攻击者基本上可以“永远撤回资金”,区块链分析公司Amberdata的首席技术官Joanes Espanol在之前的CoinDesk采访中表示。

他解释说:


    “想象一下,合约中有一个函数可以调用另一个合同......如果我是一个黑客,我能够在前一个功能仍在执行的情况下触发功能,提取资金。”



这就类似于臭名昭著的2016年DAO攻击中发现的漏洞之一。

ChainSecurity的帖子解释说,在Constantinople之前,网络上的存储操作将耗费5,000 gas,超过通常的“转移”或“发送”功能调用合同时发送的2,300 gas。

但是,如果实施升级,“不干净的”存储操作将耗费200 gas。“攻击合同可以使用2300 gas津贴成功操纵弱势合约的变量。”

之前预计Constantinople将在2018年启动,但在Ropsten测试网上启动升级后发现问题后推迟。 


原文:https://www.coindesk.com/ethereums-constantinople-upgrade-faces-delay-due-to-security-vulnerability
来源:coindesk
作者:Christine Kim , Nikhilesh De
编译:Miranda

比特币10年:920亿枚被“伪造”,比特币曾命悬一线

特写31qu 发表了文章 • 2018-10-28 11:06 • 来自相关话题

比特币诞生于2009年,曾一度被当做极客手中的玩具,并不被重视,于是发生了程序员用1万个比特币换两个披萨的故事。

如今10年过去了,比特币的身份标签已从暗网、犯罪、泡沫,逐渐变成了财富的代名词。价格则从最初的几分钱,暴涨到13万,但是这个过程却并不“顺利”。

10年间,比特币经历200多次被死亡,摆脱竞争币的“围追堵截”,最终稳坐加密货币的“头把交椅”,难以被撼动。

这10年间,比特币就像热血漫画中的主人公一样,与各种“敌人”搏斗。

 
1 比特币的“自杀”


“比特币、以太坊等其他加密货币制造了‘历史上最大的泡沫’。”

最近,拥有“末日博士”之称的美国著名经济学家 Nouriel Roubini 这样评价比特币。而类似唱衰比特币的声音,在这10年里,层出不穷。

事实上,比特币也的确有几次“惊魂时刻”。

2010年,前比特币核心开发者 Jeff Garzik 在 Bitcointalk 上发帖称,他在比特币第24638个区块上,发现了一个溢出漏洞。该漏洞是核心代码的溢出错误所引起,这导致920亿个比特币被“伪造”。

按照中本聪的设计,比特币总量是2100万个,溢出漏洞对比特币来说,着实是致命的。





吓坏了社群的920亿比特币


溢出漏洞吓坏了当年的社群维护们,“如果这个漏洞被成功利用,就不可能见到现在的比特币了,把这称为比特币的自杀,毫不为过”。

幸运的是,在 Garzik 发现该问题之后的5个小时,核心代码被及时修复,同时,伪造的比特币也被“销毁”。

更幸运的是,由于该漏洞事件发生在2010年,当时比特币还只是极客手中的“玩具”,因此“溢出漏洞”事件对比特币几乎没有影响。假设该事件发生在2018年,毫无疑问将会对比特币、乃至加密货币整个行业造成致命打击。

虽然在社群努力下,比特币成功度过此次危机,但并不意味着比特币核心代码绝对安全,不会再发生“自杀”事件。

就在今年10月份,莱特币创始人李启威在《神器密友》的节目现场谈到,比特币的“通胀漏洞”非常糟糕,几乎是比特币面临的最严重的挑战之一。按照李启威的解释,通胀漏洞是指有人利用比特币核心代码漏洞,生产出更多的比特币,进而导致比特币发行处于严重通胀状态。

有人可能会心一笑:“李所说的不就是双花嘛”。

关于该漏洞,李启威还提到了更多细节:“该漏洞产生是由于一名矿工试图通过攻击,制造出更多比特币导致的。”

如果有人能创造出无限多的比特币,这将会完全扼杀比特币的价值,同时也一定会导致整个加密货行业的“雪崩”,尤其是在加密货币行业资金规模达到2000亿美金的今天。

与“溢出漏洞”不同的是,该“通胀漏洞”与比特币网络未验证双花有关,如果攻击者找了将交易打包进入区块的方式,那么这些凭空产生的比特币将会被人接受。进而导致比特币生态不断处于通胀状态,因此被称为“通胀漏洞”。

社群处理通胀漏洞的方式,也相当有趣。

通胀漏洞一经发现,比特币开发者就紧急发布了修复补丁。但是李启威谈到:“开发者并未对外公布威胁漏洞”,他提到,开发人员只表示该错误会导致节点被Dos攻击,进而导致比特币网络崩溃。

在李启威看来,开发人员有意弱化了问题严重性。

比特币网络在运行过程中,经历了多次迭代升级,才成为我们今天看到的版本。任何软件、程序在发展过程中,遇到漏洞,打补丁是再常见不过的了,这就像是施工队在施工过程中“逢山挖洞,遇水架桥”的道理是一样的。

但不可否认的是,比特币自身平稳运行了近10年,已经算得上“奇迹”。

除了源代码漏洞对比特币产生的负面影响,大量竞争币的涌现,也对比特币发展产生了一定的“威胁”。

 
2 竞争者们
 

在比特币生态逐渐发展成熟的过程中,一大批比特币的模仿者与竞争者相继出现。

上千种“竞争者”中,莱特币、以太坊、瑞波币、EOS、恒星币、零币、DCR等加密货币也逐渐进入大众视野,并不断分割比特币的市值份额。作为金融属性较重的加密货币领域,谁的市值最大,“谁才是老大”已成为共识。

从2013年到2018年,比特币市值占比从95%下降到最低点33%,最近再次回升到52%左右。相比比特币核心代码的“致命一击”,竞争币与比特币的市值之争,更像是“拉锯战”。在这场旷日持久的战争中,各种共识、标签被创造。





《忍者神龟》中的斯普林特老师与他的小龟们


莱特币(Litcoin)

“比特金,莱特银”是加密货币领域的共识。

2011年11月,莱特币诞生。在谷歌工作期间,莱特币创始人李启威受比特币启发,基于同样的去中心化数字货币原理开发了莱特币。由于莱特币更易于挖矿,以及更高的社群共识,使得莱特币从众多所谓的“山寨币”中脱颖而出,2013年成为当时仅次于比特币的第二大加密货币。

2018年莱特币涨到历史最高价2480元人民币,流通市值一度达到1350亿人民币。历史上莱特币市值曾达到比特币总市值的6.8%。

由于比特币、莱特币主链难以开发,2013年底,以太坊发明人Vitalik Buterin 离开比特币核心开发团队,并召集了一批认可以太坊理念的开发者,启动以太坊项目。


以太坊(Ethereum)

从2017年1月开始,以太坊市值从7亿美元迅速爬升至162亿美元,在区块链资产中排名第二,仅次于比特币。2017年6月中旬,以太坊市值更是达到比特币总市值的80%。作为比特币的竞争币,以太坊绝对是最得力的干将。

当然,这是有原因的。Vitalik在设计以太坊公链时,加入了智能合约与虚拟机功能,让基于以太坊的开发,就像在Windows系统上开发应用一样方便。而且,最关键的是以太坊解决了发币、募资难题,将链上发币,变成“一键式”。

有了这些优势,以太坊吸成功引了大量资金关注,直接促成了币圈大繁荣。但是以太坊本身却存在诸多问题。





比特币与众多竞争币


柚子(EOS)

以太坊的收费机制将很多用户挡在门外,同时每秒几十笔的交易频次,更不能满足大量Dapp并发,因此EOS应运而生。

EOS是一个全新的Dapp开发平台——EOS。

EOS采用了一套全新的共识算法,即DPOS,这个共识机制在之前的Bitshare、Bteemit有了成功实践,所以被无限看好。

有了这样的共识,EOS生态发展十分迅速。目前有839个Dapp,是以太坊的8倍。市值337亿人民币,总市值最高达到比特币的10%。

EOS的成功,得益于其在应用方面的突破。而瑞波的异军突起,则得益于其在支付领域的突破。


瑞波(Ripple)

由于受到出块速度与区块链容量限制,比特币转账既慢又贵,小额转账很难得到保证,于是瑞波出现了。

Ripple成立时吸引了大量风险投资。 Google支持的高科技创业公司设法从银行机构中提取了超过5000万美元,在众筹时总资金获得了惊人的9亿美元。同时,Ripple提供全球金融解决方案,使世界能够交换价值。Ripple 的解决方案,使银行能够立即直接和确定地进行结算来降低结算成本。

作为比特币的竞争者,Ripple市值增加迅速,目前总市值1259亿人民币,今年5月19年总市值达到比特币的45%。


门罗币(Monero)

比特币最大的特点之一是匿名性,但是由于地址之间的可溯源性,一旦某一笔转账被确认身份,其他所有的交易都会被追踪到,这让那些渴望更加匿名的用户感到“不安”。

门罗币的出现,彻底解决了地址之间可追踪的“弊端”。门罗币允许资产所偶有者“发送和接收资金,而不会在Blockchain上公开显示记录。”但不幸的是,由于门罗币的高度隐私性,导致它已被黑社会和其他犯罪组织所采纳。

虽然门罗彻底匿名了,但是市值目前市值只有121亿美金,今年4月份占到比特币总市值的2.3%。

在比特币发展过程中,核心开发组起到了功不可没的作用,但是开发组内部也会产生很大的分歧,Decred 就是从核心开发组“出逃”的程序员创建。


Decred(DCR)

2015年,几位比特币核心开发人员对比特币现状不满,无法忍受比特币核心开发组垄断比特币的软件开发,认为其已经被“中央化”并且缺乏良好的管理和升级机制。在这样的背景下,他们离开了比特币团队,并开始正式创立Decred。

Decred于2015年9月首次推出,是基于社区管理系统集成到区域块链中的一种开放的和渐进的加密数字货币。

但与比特币最大的区别是,Decred采用PoW和PoS混合方式挖矿,即所有PoW产生的矿都必须先经过PoS验证才能成为合法的块。所以在 DCR 的网络中,几乎杜绝了算力垄断的现象,在一定程度上解决了去中心化项目的治理机制问题。

看来,竞争币不仅在与比特币争市值,还在与比特币争“人才”。

除了这些较为成功的加密货币项目,2017年还涌现了大量公链开发、Dapp应用为主的公链项目。这得益于行业的快速发展,这些新兴项目的体量也在逐渐增大。随着加密货币牛熊更迭,这些项目也偃旗息鼓。在此期间,比特币市值占比也从33%增加到52%,其江湖地位也逐渐稳固。

 
3 比特币的江湖地位


由于比特币的“天然缺陷”,比如交易时间缓慢,不可延展性等,导致1500种加密货币诞生,每一种都在试图克服比特币的一个或者多个缺陷。

但是比特币却始终坐“老大”位置,一统江湖。





比特币与竞争币的市值变化趋势


不可否认,竞争币在2016年以来也取得了长足发展。以以太坊为例,2017年比特币的价格从1700美元左右升至9000美元左右,增幅达到了450%,在同一段时间内,以太坊实现了1000%的收益,达到了当前的700美元左右。

从收益比上来看,以太坊确实潜力无限。但是从流通量上来分析,比特币的流通量是以太坊的五倍还多。这意味着以太坊的市值还不到比特币的一半。比特币的地位已经确立的非常稳固,短时间内并不会失去世界上最有价值的加密货币这一地位。

同时有人认为,像EOS这样的有应用的公链项目,会吸引越来越多的用户。超越比特币指日可待。

但是,从用户增加速度与应用来看,EOS与以太坊生态建设正逐渐繁荣。目前EOS公链与以太坊应用总数为950多个,EOS和ETH上的Dapp总量分别是111个和839个,EOS日活达到32130,ETH为1768。

与纯应用类公链相比,比特币与这类应用型公链不同,比特币本身就是应用——钱。而比特币的地址数,目前已接近3000万,可以说秒杀这类应用型公链。

所以,从应用角度来说,比特币依然是江湖老大。

当然,这比不意味着,比特币永远会一家独大。也许随着市场发展,生态应用的繁荣,应用类公链最终崛起,独占鳌头,也不是不可能。


-------------------------
 

孕育了整个区块链行业的比特币,是否会继续领跑加密货币行业?

没人能给出确切的答案。

区块链行业的快速发展,得益于加密货币价格的不断上涨。财富效应让这个行业快速聚集了大量人才。

因此,站在行业发展角度,留给不同数字货币发展的空间还很大,这些加密货币之间也并不是竞争关系。正如李启威的观点,加密货币之间的竞争并不是胜者为王,败者为寇的游戏。

(文/零界) 查看全部
bitcoin-thumb.jpg

比特币诞生于2009年,曾一度被当做极客手中的玩具,并不被重视,于是发生了程序员用1万个比特币换两个披萨的故事。

如今10年过去了,比特币的身份标签已从暗网、犯罪、泡沫,逐渐变成了财富的代名词。价格则从最初的几分钱,暴涨到13万,但是这个过程却并不“顺利”。

10年间,比特币经历200多次被死亡,摆脱竞争币的“围追堵截”,最终稳坐加密货币的“头把交椅”,难以被撼动。

这10年间,比特币就像热血漫画中的主人公一样,与各种“敌人”搏斗。

 
1 比特币的“自杀”


“比特币、以太坊等其他加密货币制造了‘历史上最大的泡沫’。”

最近,拥有“末日博士”之称的美国著名经济学家 Nouriel Roubini 这样评价比特币。而类似唱衰比特币的声音,在这10年里,层出不穷。

事实上,比特币也的确有几次“惊魂时刻”。

2010年,前比特币核心开发者 Jeff Garzik 在 Bitcointalk 上发帖称,他在比特币第24638个区块上,发现了一个溢出漏洞。该漏洞是核心代码的溢出错误所引起,这导致920亿个比特币被“伪造”。

按照中本聪的设计,比特币总量是2100万个,溢出漏洞对比特币来说,着实是致命的。

1a64aee83a10400c94ad27e4f636fbc7.jpg

吓坏了社群的920亿比特币


溢出漏洞吓坏了当年的社群维护们,“如果这个漏洞被成功利用,就不可能见到现在的比特币了,把这称为比特币的自杀,毫不为过”。

幸运的是,在 Garzik 发现该问题之后的5个小时,核心代码被及时修复,同时,伪造的比特币也被“销毁”。

更幸运的是,由于该漏洞事件发生在2010年,当时比特币还只是极客手中的“玩具”,因此“溢出漏洞”事件对比特币几乎没有影响。假设该事件发生在2018年,毫无疑问将会对比特币、乃至加密货币整个行业造成致命打击。

虽然在社群努力下,比特币成功度过此次危机,但并不意味着比特币核心代码绝对安全,不会再发生“自杀”事件。

就在今年10月份,莱特币创始人李启威在《神器密友》的节目现场谈到,比特币的“通胀漏洞”非常糟糕,几乎是比特币面临的最严重的挑战之一。按照李启威的解释,通胀漏洞是指有人利用比特币核心代码漏洞,生产出更多的比特币,进而导致比特币发行处于严重通胀状态。

有人可能会心一笑:“李所说的不就是双花嘛”。

关于该漏洞,李启威还提到了更多细节:“该漏洞产生是由于一名矿工试图通过攻击,制造出更多比特币导致的。”

如果有人能创造出无限多的比特币,这将会完全扼杀比特币的价值,同时也一定会导致整个加密货行业的“雪崩”,尤其是在加密货币行业资金规模达到2000亿美金的今天。

与“溢出漏洞”不同的是,该“通胀漏洞”与比特币网络未验证双花有关,如果攻击者找了将交易打包进入区块的方式,那么这些凭空产生的比特币将会被人接受。进而导致比特币生态不断处于通胀状态,因此被称为“通胀漏洞”。

社群处理通胀漏洞的方式,也相当有趣。

通胀漏洞一经发现,比特币开发者就紧急发布了修复补丁。但是李启威谈到:“开发者并未对外公布威胁漏洞”,他提到,开发人员只表示该错误会导致节点被Dos攻击,进而导致比特币网络崩溃。

在李启威看来,开发人员有意弱化了问题严重性。

比特币网络在运行过程中,经历了多次迭代升级,才成为我们今天看到的版本。任何软件、程序在发展过程中,遇到漏洞,打补丁是再常见不过的了,这就像是施工队在施工过程中“逢山挖洞,遇水架桥”的道理是一样的。

但不可否认的是,比特币自身平稳运行了近10年,已经算得上“奇迹”。

除了源代码漏洞对比特币产生的负面影响,大量竞争币的涌现,也对比特币发展产生了一定的“威胁”。

 
2 竞争者们
 

在比特币生态逐渐发展成熟的过程中,一大批比特币的模仿者与竞争者相继出现。

上千种“竞争者”中,莱特币、以太坊、瑞波币、EOS、恒星币、零币、DCR等加密货币也逐渐进入大众视野,并不断分割比特币的市值份额。作为金融属性较重的加密货币领域,谁的市值最大,“谁才是老大”已成为共识。

从2013年到2018年,比特币市值占比从95%下降到最低点33%,最近再次回升到52%左右。相比比特币核心代码的“致命一击”,竞争币与比特币的市值之争,更像是“拉锯战”。在这场旷日持久的战争中,各种共识、标签被创造。

dbbd245627c348b8a4896187146d69c9.jpg

《忍者神龟》中的斯普林特老师与他的小龟们


莱特币(Litcoin)

“比特金,莱特银”是加密货币领域的共识。

2011年11月,莱特币诞生。在谷歌工作期间,莱特币创始人李启威受比特币启发,基于同样的去中心化数字货币原理开发了莱特币。由于莱特币更易于挖矿,以及更高的社群共识,使得莱特币从众多所谓的“山寨币”中脱颖而出,2013年成为当时仅次于比特币的第二大加密货币。

2018年莱特币涨到历史最高价2480元人民币,流通市值一度达到1350亿人民币。历史上莱特币市值曾达到比特币总市值的6.8%。

由于比特币、莱特币主链难以开发,2013年底,以太坊发明人Vitalik Buterin 离开比特币核心开发团队,并召集了一批认可以太坊理念的开发者,启动以太坊项目。


以太坊(Ethereum)

从2017年1月开始,以太坊市值从7亿美元迅速爬升至162亿美元,在区块链资产中排名第二,仅次于比特币。2017年6月中旬,以太坊市值更是达到比特币总市值的80%。作为比特币的竞争币,以太坊绝对是最得力的干将。

当然,这是有原因的。Vitalik在设计以太坊公链时,加入了智能合约与虚拟机功能,让基于以太坊的开发,就像在Windows系统上开发应用一样方便。而且,最关键的是以太坊解决了发币、募资难题,将链上发币,变成“一键式”。

有了这些优势,以太坊吸成功引了大量资金关注,直接促成了币圈大繁荣。但是以太坊本身却存在诸多问题。

d8335c6ab46a4eafad9ccdefef9c4099.jpg

比特币与众多竞争币


柚子(EOS)

以太坊的收费机制将很多用户挡在门外,同时每秒几十笔的交易频次,更不能满足大量Dapp并发,因此EOS应运而生。

EOS是一个全新的Dapp开发平台——EOS。

EOS采用了一套全新的共识算法,即DPOS,这个共识机制在之前的Bitshare、Bteemit有了成功实践,所以被无限看好。

有了这样的共识,EOS生态发展十分迅速。目前有839个Dapp,是以太坊的8倍。市值337亿人民币,总市值最高达到比特币的10%。

EOS的成功,得益于其在应用方面的突破。而瑞波的异军突起,则得益于其在支付领域的突破。


瑞波(Ripple)

由于受到出块速度与区块链容量限制,比特币转账既慢又贵,小额转账很难得到保证,于是瑞波出现了。

Ripple成立时吸引了大量风险投资。 Google支持的高科技创业公司设法从银行机构中提取了超过5000万美元,在众筹时总资金获得了惊人的9亿美元。同时,Ripple提供全球金融解决方案,使世界能够交换价值。Ripple 的解决方案,使银行能够立即直接和确定地进行结算来降低结算成本。

作为比特币的竞争者,Ripple市值增加迅速,目前总市值1259亿人民币,今年5月19年总市值达到比特币的45%。


门罗币(Monero)

比特币最大的特点之一是匿名性,但是由于地址之间的可溯源性,一旦某一笔转账被确认身份,其他所有的交易都会被追踪到,这让那些渴望更加匿名的用户感到“不安”。

门罗币的出现,彻底解决了地址之间可追踪的“弊端”。门罗币允许资产所偶有者“发送和接收资金,而不会在Blockchain上公开显示记录。”但不幸的是,由于门罗币的高度隐私性,导致它已被黑社会和其他犯罪组织所采纳。

虽然门罗彻底匿名了,但是市值目前市值只有121亿美金,今年4月份占到比特币总市值的2.3%。

在比特币发展过程中,核心开发组起到了功不可没的作用,但是开发组内部也会产生很大的分歧,Decred 就是从核心开发组“出逃”的程序员创建。


Decred(DCR)

2015年,几位比特币核心开发人员对比特币现状不满,无法忍受比特币核心开发组垄断比特币的软件开发,认为其已经被“中央化”并且缺乏良好的管理和升级机制。在这样的背景下,他们离开了比特币团队,并开始正式创立Decred。

Decred于2015年9月首次推出,是基于社区管理系统集成到区域块链中的一种开放的和渐进的加密数字货币。

但与比特币最大的区别是,Decred采用PoW和PoS混合方式挖矿,即所有PoW产生的矿都必须先经过PoS验证才能成为合法的块。所以在 DCR 的网络中,几乎杜绝了算力垄断的现象,在一定程度上解决了去中心化项目的治理机制问题。

看来,竞争币不仅在与比特币争市值,还在与比特币争“人才”。

除了这些较为成功的加密货币项目,2017年还涌现了大量公链开发、Dapp应用为主的公链项目。这得益于行业的快速发展,这些新兴项目的体量也在逐渐增大。随着加密货币牛熊更迭,这些项目也偃旗息鼓。在此期间,比特币市值占比也从33%增加到52%,其江湖地位也逐渐稳固。

 
3 比特币的江湖地位


由于比特币的“天然缺陷”,比如交易时间缓慢,不可延展性等,导致1500种加密货币诞生,每一种都在试图克服比特币的一个或者多个缺陷。

但是比特币却始终坐“老大”位置,一统江湖。

a016e0313a734643b329c50452d9cc73.jpg

比特币与竞争币的市值变化趋势


不可否认,竞争币在2016年以来也取得了长足发展。以以太坊为例,2017年比特币的价格从1700美元左右升至9000美元左右,增幅达到了450%,在同一段时间内,以太坊实现了1000%的收益,达到了当前的700美元左右。

从收益比上来看,以太坊确实潜力无限。但是从流通量上来分析,比特币的流通量是以太坊的五倍还多。这意味着以太坊的市值还不到比特币的一半。比特币的地位已经确立的非常稳固,短时间内并不会失去世界上最有价值的加密货币这一地位。

同时有人认为,像EOS这样的有应用的公链项目,会吸引越来越多的用户。超越比特币指日可待。

但是,从用户增加速度与应用来看,EOS与以太坊生态建设正逐渐繁荣。目前EOS公链与以太坊应用总数为950多个,EOS和ETH上的Dapp总量分别是111个和839个,EOS日活达到32130,ETH为1768。

与纯应用类公链相比,比特币与这类应用型公链不同,比特币本身就是应用——钱。而比特币的地址数,目前已接近3000万,可以说秒杀这类应用型公链。

所以,从应用角度来说,比特币依然是江湖老大。

当然,这比不意味着,比特币永远会一家独大。也许随着市场发展,生态应用的繁荣,应用类公链最终崛起,独占鳌头,也不是不可能。


-------------------------
 

孕育了整个区块链行业的比特币,是否会继续领跑加密货币行业?

没人能给出确切的答案。

区块链行业的快速发展,得益于加密货币价格的不断上涨。财富效应让这个行业快速聚集了大量人才。

因此,站在行业发展角度,留给不同数字货币发展的空间还很大,这些加密货币之间也并不是竞争关系。正如李启威的观点,加密货币之间的竞争并不是胜者为王,败者为寇的游戏。

(文/零界)

半年黑客盗走20亿美元!你的数字货币,还安全吗?

攻略guigumitan 发表了文章 • 2018-10-24 10:53 • 来自相关话题

今年年初,一家日本数字货币交易所 CoinCheck 宣布遭遇黑客攻击,约 4 亿美元的新经币(NEM)被窃;

今年6月,韩国最大比特币交易平台、世界五大比特币交易所之一 Bithumb 被盗市值 3000 万美元的 token;

……

根据腾讯安全发布的《2018上半年区块链安全报告》显示,从 2013 年到 2018 年上半年,加密数字货币市场共发生过 54 起安全事件,其中 10 件重大安全事故由黑客攻击引起。仅今年上半年,黑客攻击导致 20 亿美元损失,区块链领域因安全问题损失超 27 亿美元。

为什么交易所被黑客频频得手?你的数字货币,是否安全?区块链生态系统中哪一环节更容易出问题?硅谷洞察研究院今日就试图分析、还原出一份属于区块链生态的安全图谱。


方式:传统攻击远多于新型攻击


在讨论生态安全之前,不妨先对区块链现有技术架构进行切割。硅谷洞察研究院参考业内现有的安全报告,对标准区块链架构进行简化、调整,大致可分为:底层硬件、基础层、中间层、应用层四个层次。





(区块链技术架构图,版权属于:硅谷洞察)


可以说,这众多环节里,只要稍有不慎,区块链就会受到安全的威胁、攻击。硅谷洞察研究院发现,尽管区块链属于新兴技术行业,但在遭到各类安全攻击当中,传统攻击仍居多。

荷兰应用科学研究组织与新加坡科技设计大学的研究人员曾建立了一个区块链安全事件数据库(Blckchain Insident Database),把导致资产损失的攻击事件定义为“安全事件”。那么,安全事件一共有多少起呢?从 2011 年到 2018 年,共有 86 起。造成的损失有多少呢?至少高达 35.5 亿美元。

硅谷洞察研究这 86 起攻击发现,主要是传统攻击、智能合约攻击和共识协议的攻击,三种攻击所占的比例大约为:66%、22%、12%。  

这些传统攻击包括什么呢?最典型的就是黑客攻击,常见还有用户电脑感染木马。

专注区块链生态安全的慢雾安全团队告诉密探,这是因为区块链技术并不是基于完全新的、以往没有出现过的技术打造的,而是组合了各种现有的基础设施,加入新的经济、治理模型,所以传统安全攻击会存在。比如像中心化的交易所、钱包,但背后承载形式其实是 Web 系统、移动 App。所以遭到传统攻击,是不可避免的。


攻击对象:交易所与智能合约是重点


从当前多起区块链安全事件的结果导向来看,这恰好符合业界人士对区块链世界安全问题的共识:“区块链 1.0 时代,重心是在密钥和交易所上,而区块链 2.0 时代的重心则是智能合约。”

先来说说交易所。

卡内基梅隆大学研究人员发现,从 2010 年至 2015 年间建立的 80 家交易所当中,有近一半(38家)已经关闭。其中 25 家交易所遭遇安全漏洞,其中 15 个随后关闭。对于交易所而言,在遭遇安全漏洞后同一季度关闭的可能性比没有遭遇安全漏洞的交易所,概率高出 13 倍。

如今对交易所的攻击方式有哪些呢?根据《区块链安全生存指南》中统计,主要有下面四种方式:服务器被攻击、主机安全问题、恶意程序感染、DDoS 攻击。

比如韩国交易所Youbit(原Yapizon)被盗事件,就是在交易所服务器上发现了恶意软件,这被认为是朝鲜黑客组织 Lazarus 发起的。

密探此前介绍过“比特币第一疑案”——门头沟交易所被盗事件。门头沟共发生了两次被盗,第一次在 2011 年,由于门头沟审计人员所使用的一台电脑权限被攻击导致;第二次是遭到恶意程序感染,共损失 75 万个比特币和门头沟自己的 10 万个比特币,当时这批比特币总价值约 4.5 亿美元,按今天币价来看,将近 50 亿美元!第二次攻击事件也直接导致了门头沟交易所的破产。

说完钱包和交易所,我们来看看智能合约。

新加坡国立大学研究人员 Loi Luu和研究团队曾对以太坊智能合约的潜在安全进行长期检测,他们用开源安全分析程序 Oyente 检测后发现,19366 个以太坊智能合约中,有 8833 个是有缺陷的。这意味着接近一半的智能合约是有潜在安全隐患的。

香港理工大学博士生李晓琦和研究团队曾就区块链安全发表了多篇论文,李晓琦告诉硅谷洞察研究院,“很多代币被黑客进行攻击,就是利用了合约漏洞,大都是代码层面的逻辑漏洞”,而智能合约在代码层面遭到攻击,人为因素在其中起到了重要作用。比如在写代码的过程中,一些智能合约的开发没有得到充分优化,从而导致浪费以太币、消耗过多的 Gas,甚至引起对用户节点造成 DDoS 攻击等风险。

也就是说,即使是针对智能合约或交易所发动的攻击,哪怕在中间层——智能合约代码层面的问题,也可能影响到底层节点。对再去中心化的区块链而言,安全也是“牵一发而动全身”。

慢雾安全团队认为,确实会频繁听到关于智能合约的攻击事件,但并不是说只有这些层才有漏洞,而是因为某些层的研究门槛较低,所以才会频繁听到关于这方面的攻击事件。区块链技术的每一层都有独特的攻击面,由于设计逻辑和承载形式不同,针对每一层的攻击都需要深入分析其底层或者说内部原理,挖掘设计或实现上的缺陷。





(图片来自网络,版权属于原作者)


硅谷洞察研究院根据区块链现有常见的安全漏洞,总结出了下表:





(区块链不同技术层常见攻击,版权属于:硅谷洞察)


现有解决方案:学界业界有共性


针对现有的安全问题,学界和业界提出了什么解决方案呢?

据香港理工大学博士生李晓琦介绍,计算机学术界对区块链行业的敏感度很高,因为数据存储、点对点传输、区块链共识机制、加密算法,乃至安全问题,都是计算机技术的集成应用。如今,不少高校研究团队,已针对现有安全问题,提出了相应解决方案:

比如新加坡国立大学研究人员 Loi Luu,在博士生期间提出两个开源项目。一个是针对区块链共识机制的 51% 算力威胁,提出去中心化挖矿协议——SmartPool ,另一个是前面提到的 Oyente——帮助开发者在主网部署合约之前检查智能合约漏洞的软件。Oyente 创始团队告诉密探,目前 Oyente 仍在多家区块链创业公司中使用。

荷兰与新加坡的研究人员则认为,要想减少智能合约的安全隐患,对智能合约的验证和测试则很重要,而且必须纳入智能合约的设计环节当中。因为,智能合约并不像传统的代码可以修补、迭代,相反,一旦部署到链上,是不可逆转的。当检测到漏洞时,必须部署新的智能合约来修复它。

该研究人员提出以下四种方式,作为验证和测试的工具:第一,完善测试文档,让安全测试流程标准化;第二,模糊(Fuzzing)智能合约的输入;第三,为智能合约开发变异工具;第四,搜索区块链已经部署智能合约的痕迹。

如今,市场上的创业公司针对智能合约安全问题,主要有三种方式检验,第一是测试,第二是审计,第三是形式化验证。简单说,测试依靠程序自动跑,审计靠专家的专业知识去审核,形式化验证靠的是数学方法。  

在慢雾安全团队看来,学界和业界具有众多共性,比如针对智能合约,形式化验证和自动化模糊测试,是目前业界不少团队在做的,而前面学界提出的解决方式之一,就有模糊测试。

无论是交易所,还是钱包,或者是Dapp,背后都站着广大的用户。去中心化通证交易平台 Kyber Network 则建议,从用户角度来看,特别是刚刚进入行业的非技术型用户,并不都具有阅读智能合约并判断 Dapp 真正目的的能力,所以应先从保管好自己的密钥/资产安全做起。

进行过数字货币交易的用户应该知道,数字钱包的密钥多半是一串没有任何规律的字母和数字组成,用户为了方便,通常把它保存在一个剪贴簿,当需要使用时再复制粘贴。但是,一旦自己电脑感染木马,则有可能被黑客追踪剪贴簿的地址,数字钱包就有可能被盗了。





(图片来自网络,版权属于原作者)


慢雾安全团队还建议,用户只参与通过专业安全审计机构把关的 DApp 或游戏,并且要求项目方将代码开源,杜绝后门或漏洞。


趋势:市场大,机会多,门槛高


按照腾讯安全发布的《2018上半年区块链安全报告》来看,区块链领域因安全问题损失超27亿美元,也就意味着,安全市场存在着巨大需求,因为它贯穿于区块链技术的每一个环节。

但硅谷洞察研究院发现,无论是 PitchBook 还是 CB Insight 的数据库,对区块链创业公司的类别划分中,安全并未单独成为一类,而把其跟身份认证、监管、数据储存等归位一类。慢雾安全团队认为,在任何行业发展过程中,安全一般是滞后的。在区块链行业不断发展的过程中,会伴随着安全事件的发生,给行业从业者带来警醒作用。





(截图自PitchBook 2018第三季度融资报告)


研究 PitchBook 2018年第三季度融资区块链公司发现,属于安全类别中的初创公司主要专注于交易安全,比如做比特币安全钱包的公司 Xapo 和硬件钱包公司 Ledger。Filament 和 Post-Quantum 则分别关注物联网与区块链的结合,以及区块链网络通讯安全。可见,对于区块链安全领域的创业,参与者并不多,市场很大,机会也很多。

分析 PitchBook 这几家公司可以发现,像 Xapo,成立于2012年,为用户提供在线比特币钱包、离线冷储存和基于比特币的借记卡三种服务。至今总融资额已高达4000万美元。投资人当中,就有领英创始人 Reid Hoffman、Max Levchin 等硅谷大佬。





(Greylock Partners 宣布投资Xapo)


同样做钱包的 Ledger,成立于2014年,如今总融资额高达 8500 万美元,最新一轮融资额高达7500万美元。

除了钱包公司屡获高额融资之外,交易所也瞄准了钱包。

就在 8 月,按交易量计算,全球最大加密货币交易所Binance(币安),对外第一笔收购就是移动钱包公司Trust Wallet。Trust Wallet 作为一款去中心化的加密钱包,目前主要专注于为基于以太坊区块链的数字代币提供安全存储服务,用户的私钥或其他隐私信息并不会保存在该公司的服务器上。

慢雾安全团队认为,这恰好意味着安全逐渐成为区块链的刚需,行业渴望数字资产的安全感。

但是,参与者少,融资额高,并不意味着参与者可以随时进入。总的来说,针对区块链安全生态的创业公司并不多,这是由区块链安全创业的高门槛决定的。慢雾安全团队认为,第一,是安全攻防实战经验的门槛,第二是要有区块链技术门槛。更重要的是,要守正出奇,需要创业者站在攻击者的视角去思考问题。

“你的对手是地下黑客,是亡灵军团,他们往往在暗处,他们毫不留情地收割。你得快,才能保护好用户。安全需要:唯快不破”。慢雾安全团队负责人告诉硅谷洞察研究院。

在安全事件频发的区块链领域,你持有的数字货币被盗过吗?大家又遭遇过什么安全事件?欢迎留言讨论。 查看全部
coincheck-bi-hack.jpg

今年年初,一家日本数字货币交易所 CoinCheck 宣布遭遇黑客攻击,约 4 亿美元的新经币(NEM)被窃;

今年6月,韩国最大比特币交易平台、世界五大比特币交易所之一 Bithumb 被盗市值 3000 万美元的 token;

……

根据腾讯安全发布的《2018上半年区块链安全报告》显示,从 2013 年到 2018 年上半年,加密数字货币市场共发生过 54 起安全事件,其中 10 件重大安全事故由黑客攻击引起。仅今年上半年,黑客攻击导致 20 亿美元损失,区块链领域因安全问题损失超 27 亿美元。

为什么交易所被黑客频频得手?你的数字货币,是否安全?区块链生态系统中哪一环节更容易出问题?硅谷洞察研究院今日就试图分析、还原出一份属于区块链生态的安全图谱。


方式:传统攻击远多于新型攻击


在讨论生态安全之前,不妨先对区块链现有技术架构进行切割。硅谷洞察研究院参考业内现有的安全报告,对标准区块链架构进行简化、调整,大致可分为:底层硬件、基础层、中间层、应用层四个层次。

aq1.png

(区块链技术架构图,版权属于:硅谷洞察)


可以说,这众多环节里,只要稍有不慎,区块链就会受到安全的威胁、攻击。硅谷洞察研究院发现,尽管区块链属于新兴技术行业,但在遭到各类安全攻击当中,传统攻击仍居多。

荷兰应用科学研究组织与新加坡科技设计大学的研究人员曾建立了一个区块链安全事件数据库(Blckchain Insident Database),把导致资产损失的攻击事件定义为“安全事件”。那么,安全事件一共有多少起呢?从 2011 年到 2018 年,共有 86 起。造成的损失有多少呢?至少高达 35.5 亿美元。

硅谷洞察研究这 86 起攻击发现,主要是传统攻击、智能合约攻击和共识协议的攻击,三种攻击所占的比例大约为:66%、22%、12%。  

这些传统攻击包括什么呢?最典型的就是黑客攻击,常见还有用户电脑感染木马。

专注区块链生态安全的慢雾安全团队告诉密探,这是因为区块链技术并不是基于完全新的、以往没有出现过的技术打造的,而是组合了各种现有的基础设施,加入新的经济、治理模型,所以传统安全攻击会存在。比如像中心化的交易所、钱包,但背后承载形式其实是 Web 系统、移动 App。所以遭到传统攻击,是不可避免的。


攻击对象:交易所与智能合约是重点


从当前多起区块链安全事件的结果导向来看,这恰好符合业界人士对区块链世界安全问题的共识:“区块链 1.0 时代,重心是在密钥和交易所上,而区块链 2.0 时代的重心则是智能合约。”

先来说说交易所。

卡内基梅隆大学研究人员发现,从 2010 年至 2015 年间建立的 80 家交易所当中,有近一半(38家)已经关闭。其中 25 家交易所遭遇安全漏洞,其中 15 个随后关闭。对于交易所而言,在遭遇安全漏洞后同一季度关闭的可能性比没有遭遇安全漏洞的交易所,概率高出 13 倍。

如今对交易所的攻击方式有哪些呢?根据《区块链安全生存指南》中统计,主要有下面四种方式:服务器被攻击、主机安全问题、恶意程序感染、DDoS 攻击。

比如韩国交易所Youbit(原Yapizon)被盗事件,就是在交易所服务器上发现了恶意软件,这被认为是朝鲜黑客组织 Lazarus 发起的。

密探此前介绍过“比特币第一疑案”——门头沟交易所被盗事件。门头沟共发生了两次被盗,第一次在 2011 年,由于门头沟审计人员所使用的一台电脑权限被攻击导致;第二次是遭到恶意程序感染,共损失 75 万个比特币和门头沟自己的 10 万个比特币,当时这批比特币总价值约 4.5 亿美元,按今天币价来看,将近 50 亿美元!第二次攻击事件也直接导致了门头沟交易所的破产。

说完钱包和交易所,我们来看看智能合约。

新加坡国立大学研究人员 Loi Luu和研究团队曾对以太坊智能合约的潜在安全进行长期检测,他们用开源安全分析程序 Oyente 检测后发现,19366 个以太坊智能合约中,有 8833 个是有缺陷的。这意味着接近一半的智能合约是有潜在安全隐患的。

香港理工大学博士生李晓琦和研究团队曾就区块链安全发表了多篇论文,李晓琦告诉硅谷洞察研究院,“很多代币被黑客进行攻击,就是利用了合约漏洞,大都是代码层面的逻辑漏洞”,而智能合约在代码层面遭到攻击,人为因素在其中起到了重要作用。比如在写代码的过程中,一些智能合约的开发没有得到充分优化,从而导致浪费以太币、消耗过多的 Gas,甚至引起对用户节点造成 DDoS 攻击等风险。

也就是说,即使是针对智能合约或交易所发动的攻击,哪怕在中间层——智能合约代码层面的问题,也可能影响到底层节点。对再去中心化的区块链而言,安全也是“牵一发而动全身”。

慢雾安全团队认为,确实会频繁听到关于智能合约的攻击事件,但并不是说只有这些层才有漏洞,而是因为某些层的研究门槛较低,所以才会频繁听到关于这方面的攻击事件。区块链技术的每一层都有独特的攻击面,由于设计逻辑和承载形式不同,针对每一层的攻击都需要深入分析其底层或者说内部原理,挖掘设计或实现上的缺陷。

aq2.jpg

(图片来自网络,版权属于原作者)


硅谷洞察研究院根据区块链现有常见的安全漏洞,总结出了下表:

aq3.jpg

(区块链不同技术层常见攻击,版权属于:硅谷洞察)


现有解决方案:学界业界有共性


针对现有的安全问题,学界和业界提出了什么解决方案呢?

据香港理工大学博士生李晓琦介绍,计算机学术界对区块链行业的敏感度很高,因为数据存储、点对点传输、区块链共识机制、加密算法,乃至安全问题,都是计算机技术的集成应用。如今,不少高校研究团队,已针对现有安全问题,提出了相应解决方案:

比如新加坡国立大学研究人员 Loi Luu,在博士生期间提出两个开源项目。一个是针对区块链共识机制的 51% 算力威胁,提出去中心化挖矿协议——SmartPool ,另一个是前面提到的 Oyente——帮助开发者在主网部署合约之前检查智能合约漏洞的软件。Oyente 创始团队告诉密探,目前 Oyente 仍在多家区块链创业公司中使用。

荷兰与新加坡的研究人员则认为,要想减少智能合约的安全隐患,对智能合约的验证和测试则很重要,而且必须纳入智能合约的设计环节当中。因为,智能合约并不像传统的代码可以修补、迭代,相反,一旦部署到链上,是不可逆转的。当检测到漏洞时,必须部署新的智能合约来修复它。

该研究人员提出以下四种方式,作为验证和测试的工具:第一,完善测试文档,让安全测试流程标准化;第二,模糊(Fuzzing)智能合约的输入;第三,为智能合约开发变异工具;第四,搜索区块链已经部署智能合约的痕迹。

如今,市场上的创业公司针对智能合约安全问题,主要有三种方式检验,第一是测试,第二是审计,第三是形式化验证。简单说,测试依靠程序自动跑,审计靠专家的专业知识去审核,形式化验证靠的是数学方法。  

在慢雾安全团队看来,学界和业界具有众多共性,比如针对智能合约,形式化验证和自动化模糊测试,是目前业界不少团队在做的,而前面学界提出的解决方式之一,就有模糊测试。

无论是交易所,还是钱包,或者是Dapp,背后都站着广大的用户。去中心化通证交易平台 Kyber Network 则建议,从用户角度来看,特别是刚刚进入行业的非技术型用户,并不都具有阅读智能合约并判断 Dapp 真正目的的能力,所以应先从保管好自己的密钥/资产安全做起。

进行过数字货币交易的用户应该知道,数字钱包的密钥多半是一串没有任何规律的字母和数字组成,用户为了方便,通常把它保存在一个剪贴簿,当需要使用时再复制粘贴。但是,一旦自己电脑感染木马,则有可能被黑客追踪剪贴簿的地址,数字钱包就有可能被盗了。

aq4.jpg

(图片来自网络,版权属于原作者)


慢雾安全团队还建议,用户只参与通过专业安全审计机构把关的 DApp 或游戏,并且要求项目方将代码开源,杜绝后门或漏洞。


趋势:市场大,机会多,门槛高


按照腾讯安全发布的《2018上半年区块链安全报告》来看,区块链领域因安全问题损失超27亿美元,也就意味着,安全市场存在着巨大需求,因为它贯穿于区块链技术的每一个环节。

但硅谷洞察研究院发现,无论是 PitchBook 还是 CB Insight 的数据库,对区块链创业公司的类别划分中,安全并未单独成为一类,而把其跟身份认证、监管、数据储存等归位一类。慢雾安全团队认为,在任何行业发展过程中,安全一般是滞后的。在区块链行业不断发展的过程中,会伴随着安全事件的发生,给行业从业者带来警醒作用。

aq5.jpg

(截图自PitchBook 2018第三季度融资报告)


研究 PitchBook 2018年第三季度融资区块链公司发现,属于安全类别中的初创公司主要专注于交易安全,比如做比特币安全钱包的公司 Xapo 和硬件钱包公司 Ledger。Filament 和 Post-Quantum 则分别关注物联网与区块链的结合,以及区块链网络通讯安全。可见,对于区块链安全领域的创业,参与者并不多,市场很大,机会也很多。

分析 PitchBook 这几家公司可以发现,像 Xapo,成立于2012年,为用户提供在线比特币钱包、离线冷储存和基于比特币的借记卡三种服务。至今总融资额已高达4000万美元。投资人当中,就有领英创始人 Reid Hoffman、Max Levchin 等硅谷大佬。

aq6.jpg

(Greylock Partners 宣布投资Xapo)


同样做钱包的 Ledger,成立于2014年,如今总融资额高达 8500 万美元,最新一轮融资额高达7500万美元。

除了钱包公司屡获高额融资之外,交易所也瞄准了钱包。

就在 8 月,按交易量计算,全球最大加密货币交易所Binance(币安),对外第一笔收购就是移动钱包公司Trust Wallet。Trust Wallet 作为一款去中心化的加密钱包,目前主要专注于为基于以太坊区块链的数字代币提供安全存储服务,用户的私钥或其他隐私信息并不会保存在该公司的服务器上。

慢雾安全团队认为,这恰好意味着安全逐渐成为区块链的刚需,行业渴望数字资产的安全感。

但是,参与者少,融资额高,并不意味着参与者可以随时进入。总的来说,针对区块链安全生态的创业公司并不多,这是由区块链安全创业的高门槛决定的。慢雾安全团队认为,第一,是安全攻防实战经验的门槛,第二是要有区块链技术门槛。更重要的是,要守正出奇,需要创业者站在攻击者的视角去思考问题。

“你的对手是地下黑客,是亡灵军团,他们往往在暗处,他们毫不留情地收割。你得快,才能保护好用户。安全需要:唯快不破”。慢雾安全团队负责人告诉硅谷洞察研究院。

在安全事件频发的区块链领域,你持有的数字货币被盗过吗?大家又遭遇过什么安全事件?欢迎留言讨论。

比特币DoS漏洞和超发漏洞技术分析,攻击者或无法获利

攻略8btc 发表了文章 • 2018-09-29 17:12 • 来自相关话题

图片来自:Mowie Jak Jest


上周,bitcoin core 0.16.3 版本客户端的突然发布,以及开发者敦促大家尽快升级一事,令比特币世界的人们感到了惊讶。表面上的原因,在于0.14-0.16.2版本客户端中存在一个拒绝服务 (DoS) 向量需要被修补。到后来,我们才发现,在0.15-0.16.2版本core客户端中的另一个漏洞,可能会引起比特币的超发问题。

在这篇文章中,作者试图说明:到底发生了什么?潜在的危险是什么?以及如果有人利用这个漏洞,还将会发生什么?

 
双重支付的两种方式
 

在我们接触实际的漏洞之前,我们需要解释一些东西。我们首先需要定义一下双重支付,因为这个漏洞就可以用于双重支付。

所谓双重支付的情况,就比如说爱丽丝(Alice)向鲍勃(Bob)支付了一笔币,然后她又把相同的币再一次支付给了查利(Charlie),爱丽丝基本上试图进行两次支付,其中的一笔她知道会被拒回。当然,当我们考虑支付时,爱丽丝的某些账户通过写这两次支付被透支了。这很接近比特币的工作原理,但并不是十分准确。

比特币并不是基于帐户模型的,而是基于未花费交易输出(UTXO)。一笔交易的输出基本包含了一个地址以及数量。一旦输出被使用了,它就无法再次被花费。试想一下一个UTXO(作为一笔发送给你的币),它可以是任意数量的,比如说0.413 BTC。

比特币的双重支付意味着一笔币(UTXO)被花费了两次。通常,这意味着爱丽丝将她的0.413 BTC发送给了鲍勃,然后她又把同一笔比特币又发送给了查利。

比特币的解决方法是,其中一笔交易会纳入一个区块,由此来决定实际谁得到了报酬。如果两笔交易不知何故都传递到了多个区块,那么后面发生的区块,就会被软件给拒绝掉。如果两笔交易都在同一个区块当中,那么这个区块也会遭到软件的拒绝。

基本上,比特币软件会检测到双重支付行为,如果有双重支付行为的发生,则应该拒绝掉相应的区块。

然而,在两笔不同的交易中发送同一个UTXO,并不是唯一的双花方法。实际还存在着同一UTXO在同一交易进行双重支付的病态情况。在这种情况下,爱丽丝向鲍勃发送同一笔币两次。所以,爱丽丝实际支付的是0.413 BTC,但鲍勃收到的却是0.826 BTC。这显然不是一个有效的交易,因为只有一笔价值0.413 BTC的UTXO 是被发送的。这就相当于,爱丽丝用同一10美元向鲍勃发送了两次,而鲍勃收到的则是20美元。

 
定义漏洞
 

因此,总结一下我们所定义的两种类型的双重支付尝试:

使用两笔或更多的交易,来花费相同的UTXO;
使用一笔交易花费同一UTXO多次;


结果表明,Bitcoin Core 软件正确地处理了第一个问题,而第二个问题,正是我们要关心的。任何人都可以像这样构造出一笔双花交易,但要让节点接受这种交易,又是另一回事了。

目前有两种方法可以让交易被纳入一个区块当中: 

A. 支付足够的费用,将交易广播到网络上,那么矿工会负责把交易纳入区块当中;

B. 作为一名矿工,把交易纳入一个区块;

(A) 除了创建交易,并将其广播到网络上的节点之外,你不需要做太多的工作。 (B) 需要你找到足够的工作量证明。这也是这次漏洞的关键。

(A) 不是一个可能的攻击向量,因为这些交易会立即被标记为无效的,网络上的节点会拒绝它们。没有矿工们的合作,这种交易就无法进入矿工们的记忆库,因为它们不会得到传播。

(B)是漏洞显现的唯一情况。换句话说,想要利用这个漏洞,你就需要工作量证明,或者说足够的矿机设备和电力。

为了明确起见,双花交易有4种情况需要处理:

1A — 多笔 mempool交易花费了同一UTXO ;

1B — 多笔区块交易花费了同一UTXO ;

2A — 单笔mempool交易花费了同一UTXO多次;

2B — 单笔区块交易花费了同一UTXO多次;

该漏洞有两种表现形式。在0.14.x版本客户端中,存在着一个拒绝服务(DoS)的漏洞,而在0.15.x - 0.16.2版本的客户端,则存在一个超发漏洞。接下来,我们会分别分析它们。

 
拒绝服务攻击
 

故事始于2009年的Bitcoin 0.1版本客户端,这一版本的代码通过拒绝案例1B和案例2B(检查区块没有双重支付)来强制达成共识。





为了清晰起见,作者删除了很多代码


你可以看到“检查冲突”的注释,其代码负责检查每个输入没有被花费。“将输出标记为已使用”注释下面的代码,标记了UTXO的使用。如果任何UTXO的花费超过一次,则会导致错误。

在2011年,PR 443被合并到了比特币代码库。这一改变是为了处理通过mempool (上面的情况2A)传输单笔交易双重支付的情况。这个合并请求注释的目的非常明确:

    “而且,没有具有重复输入的交易会被纳入区块当中......几个星期前,有人尝试过了,但这些交易并没有被纳入区块。我假设某个地方存在了一个检查关,它会阻止这些重复交易进入区块,虽然我没有对这个问题进行任何挖掘。这实际上是为了防止这种明显无效的交易得到中继。”






实际的代码更改,或多或少与上面的ConnectInputs 中的“检查冲突”注释下的代码执行了相同的操作,但位于的是不同的位置。代码更改是在CheckTransaction 中运行的,其负责了所有上述的4种情况(1A, 1B, 2A, 2B)。因此,我们在区块双重支付共识代码中有了一些冗余,正如案例1B和2B都被检查了两次,其中一次检查是在CheckTransaction,另一次则发生在ConnectInputs。

到了2013年,PR 2224被纳入了比特币软件。这一改变的目的是区分共识错误(例如双重支付)和系统错误(例如磁盘空间耗尽)之间的差别,正如PR注释中所表明的那样:

“它引入了CValidationState,它会存储关于区块的元数据,或者正在执行的交易验证数据。它被用于区分验证错误(例如,未能满足网络规则)和运行时错误(比如磁盘空间的不足),从前这些可能会产生混淆,因磁盘空间用完会导致区块被标记为无效。此外,CValidationState还承担了跟踪 DoS级别的角色(因此它不需要存储于交易或区块当中...)”


实际的相关代码更改如下:






在那个时候,ConnectInputs已经被模块化成多个方法,并且这个函数成为了检查双重支付的函数。这里的关键改变是,曾经的error被改为了 assert

assert在C++中是做什么的?它会完全中止程序。程序员为什么要在这里停止程序?这就是Pull请求的目的所在。下面就是那个时候的代码片段:






它会像以前一样处理案例1B和2B。函数名则从ConnectInputs更改为ConnectBlock,但检查案例1B和2B的冗余性仍然在PR 443中保留。正如我们已经看到的,UpdateCoins做了第二次双重支付检查。其中CheckBlock通过调用CheckTransaction进行了第一次双重支付检查:











由于这是第二次检查相同的内容,所以要让UpdateCoins的双花检查失败的唯一方法,就是存在某种UTXO数据库或交易存储损坏。事实上,这似乎是改成assert的原因。因为CheckBlock通过CheckTransaction在UpdateCoins之前已经进行了检查,我们已知道某笔交易并不是双花交易。因此,PR 2224正确地推测到,UpdateCoins中的这个状态必然是一个系统错误,而不是一个共识错误。在这种情况下,为了防止进一步的数据损坏,正确的做法就是停止程序。

到了2017年,PR 9049作为Bitcoin 0.14的一部分被引入比特币网络。随着隔离见证(Segwit)的纳入,它是加快区块验证时间的诸多更改的其中之一,其代码更改实际是非常少的:






你可以看到布尔函数 fCheckDuplicateInputs被添加了进去,用于加快区块检查。我们将在下面看到,这是一个被认为是冗余的检查。不幸的是, UpdateCoins中的代码在PR 2224中被更改为系统损坏检查,而不是共识检查。到了0.14.0版本客户端,其代码进行了更多的模块化更改,而assert也发生了一些改变:






曾经是作为一个冗余检查,现在却成了负责区块单笔交易双重支付检查(案例2B),并负责停止程序。从技术上来说,它仍然是强制执行共识规则。只是在中止程序问题上,它表现地非常糟糕。

PR 9049是如何获得通过的? Greg Maxwell 给了我IRC上的聊天记录。






长话短说,开发者们在讨论PR 9049时,倾向于认为区块级单笔交易双重支付(案例2B)会在PR 443处遭到检查,而没有考虑PR 2224。这使得开发者们并没有密切关注PR 9049;

总而言之:

1、在2011年引入用于防止双重支付交易中继(案例2A)的 PR 443,实际产生了一个副作用,即对区块的双重支付共识规则检查创造了冗余校验(案例1B和 2B)。

2、PR 2224是在2013年引入的,作为一种副作用,将(1)中用于区块验证的代码,从冗余升级到了共识层;

3、PR 9049是在2017年被引入的,并且它跳过了(1)中用于单个区块单笔交易双重支付(案例1B)检查的代码。开发人员错误地认为代码是多余的,因为他们没有考虑到(2)。事实上,这种改变跳过了共识的关键部分。

公平地讲,这些事的汇合导致了这次漏洞。

 
DoS漏洞的严重性
 

这意味着 0.14.x 版本的Core软件可能会因为一个奇怪的区块而崩溃。而要让软件崩溃,攻击者需要做的事是:

创建一笔花费两次同一UTXO的交易;
通过足够的工作量证明,将(1)中的交易纳入一个比特币区块;
将这个区块广播到0.14.x版本软件的节点;


(1) 和 (3) 的成本并不高,而步骤(2)的最小成本为12.5 BTC。

如果你认为从博弈论的角度来看,分裂网络并不是那么好,那么利用这个漏洞的动机就相当低了。充其量,作为攻击者,你花费了12.5 BTC将部分全节点给搞崩溃。由于不可能从分裂网络中获利,攻击者无法轻易地补偿自己的攻击成本。

如果这是唯一的漏洞,那么攻击者可能给很多人带来一些不便,但这不会是持续的,因为这些被攻击的节点可以简单地重启,并连接到其它诚实节点。一旦有一个较长的链,那么恶意区块攻击就会完全失去它的威胁。除非攻击者以每区块12.5 BTC的代价继续创建区块,并将其传播给 0.14.x版本软件的节点,否则攻击就是不可持续的。

换句话说,虽然这个漏洞的确存在着,但对 DoS攻击的经济刺激却是相当低的。

 
超发漏洞
 

从0.15.0版本软件开始,core软件引入了一个新的特性,以便更快地查找和存储UTXO,而这恰恰又引入了另一个漏洞。当一笔具有双重支付单个交易的区块纳入区块链时,软件会将其视为有效,而不会出现崩溃的现象。

这就意味着一笔病理性交易(相同UTXO在同一交易中被使用多次,即案例2B),0.14版本的节点会因此而崩溃,而使用0.15版本软件的节点却会认为交易是有效的,这基本上是凭空在创建比特币。

谈谈它是如何发生的。在0.15中出现的PR 10195 ,引入了很多内容,但它的主要要点在于改变了 UTXO的存储方式,使得它们更有效地进行查找。因此,它出现了很多变化,包括对早期UpdateCoins函数的更改:






注意,assert(false) 周围的代码是如何被完全取出的。注意这一点,0.15.0中的PR 10537也更改了代码。






assert失败的条件现在取决于inputs.SpendCoin,它看起来是这样子的:






本质上,SpendCoin返回“ false”值的唯一方法,就是让币不存在于UTXO集中。但正如你所看到的,这需要币是FRESH的,而不是DIRTY的。这些不是常见的术语,但值得庆幸的是,core开发者Andrew Chow给出了解释:

“现在的问题是,什么时候UTXO会被标记为FRESH?当它们被添加到UTXO数据库时,它们就会被标记为FRESH。但是,UTXO数据库仍然只存在于存储当中的(作为缓存)。当它被保存到磁盘时,存储中的条目将不再被标记为FRESH……”


标记为FRESH的币,是进入交易存储池(memory pool)中的币。而攻击者可以通过 UpdateCoins函数中的assert语句来破坏节点。更糟的是,如果币是属于DIRTY的(基本上从磁盘上读取的),那么这就会导致比特币的超发。

因此,攻击者可以欺骗那些运行 0.15.0- 0.16.2版本软件的矿工接受一个奇怪的、无效的区块,从而导致比特币的供应超发。

 
超发漏洞的严重性
 

这种攻击的经济诱因似乎明显高于DoS攻击,因为攻击者可能会凭空制造出比特币。但你仍然需要有挖矿设备来执行攻击,但考虑到潜在的经济诱因,这可能是值得的,或者看起来是这样的。

下面是使用这种漏洞的一种简单攻击方式:

创造一笔带有双重支付交易的区块,其会向自己支付两次,比方说 50 BTC →100 BTC;
将该区块广播给0.15/0.16版本客户端的所有矿工;


下面是会发生的一些事:

    0.14.x 版本节点会崩溃;
    较旧版本的节点及其它替代客户端会拒绝这个区块;
    很多区块链浏览器是运行在自定义软件上的,而不是基于core,因此,至少有一些浏览器会拒绝该区块,并且不会显示来自该区块的任何交易。
    取决于矿工们运行的软件,我们可能会迎来链分裂;

有可能,所有的矿工都是运行的Bitcoin Core 0.15+版本软件,在这种情况下,不受攻击的客户端可能会停滞不前。也有可能矿工会运行其它东西,在这种情况下,当他们发现一个区块时,链就会发生分叉。

由于这些违规行为,网络上的人们很快就会追踪到这一点,可能已提醒一些开发人员,并且core开发者已经修复了它。如果存在分叉,那么在那个时候,关于哪条链是正确的共识链,将开始得到讨论,而出现意外超发的链,可能会遭到抛弃。如果真的发生了,那么社区可能会自愿进行一次回滚,以惩罚攻击者。

所以对于攻击者来说,这不会带来50 BTC的收入,更可能的是失去12.5 BTC。如果攻击者加倍花费,比如说200 BTC,那么超发漏洞将持续存在的可能性会更小,因为攻击会更明显。

因此,从攻击者的角度来看,这并不是一种好的获利方式。

攻击者可以获利的另一种方式,就是事先做空比特币,然后再执行攻击。这也是具有风险的,因为攻击不能保证比特币价格会下跌,特别是当危机得到迅速和果断处理时。此外,考虑到大多数交易所提供的杠杠交易,都需要AML/KYC,这可能导致攻击者很快暴露。

攻击者不仅面临着巨大的资金风险,而且还会有身体危险。从经济角度来看,这并不是一个容易获利的漏洞。

当然,有一些别有用心的人,可能会用这种漏洞来吓唬那些比特币持有者。投资回报率将变得更抽象,因此从理论上来讲,这可能会达到这些别有用心者的目的。

 
结论
 

毫无疑问,这是一个相当严重的漏洞。尽管我和Awemany之间有着分歧,但我很感激他选择公开地和我辩论。也就是说,考虑到经济博弈理论,我不认为这个漏洞会像他所描述的那样严重。

即使这个漏洞在被发现之前被坏人所利用,攻击者可能也不会选择利用它,因为从经济学上来讲,它是没有意义的。可以肯定的是,这一技术漏洞应该被修复,并且开发者应该做得更好,但真正能够利用这种漏洞的对象其实是非常少的,基本上,只有那些想要摧毁比特币的组织才会这么干。

Bitcoin Core开发者的教训有很多:

1、任何共识变化(即使是微小的变化,例如9049),也需要更多的人进行审查; 2、需要对病理交易进行更多的检查; 3、代码库中哪些检查是冗余的,哪些检查是不冗余的,以及实际代码将要做些什么,需要变得更加清晰; 4、过去存在漏洞,将来也会存在漏洞。现在重要的是,学习并反思这一教训;


原文:https://medium.com/@jimmysong/bitcoin-core-bug-cve-2018-17144-an-analysis-f80d9d373362
作者:Jimmy Song
编译:洒脱喜 查看全部
201809290449331285.jpg

图片来自:Mowie Jak Jest


上周,bitcoin core 0.16.3 版本客户端的突然发布,以及开发者敦促大家尽快升级一事,令比特币世界的人们感到了惊讶。表面上的原因,在于0.14-0.16.2版本客户端中存在一个拒绝服务 (DoS) 向量需要被修补。到后来,我们才发现,在0.15-0.16.2版本core客户端中的另一个漏洞,可能会引起比特币的超发问题。

在这篇文章中,作者试图说明:到底发生了什么?潜在的危险是什么?以及如果有人利用这个漏洞,还将会发生什么?

 
双重支付的两种方式
 

在我们接触实际的漏洞之前,我们需要解释一些东西。我们首先需要定义一下双重支付,因为这个漏洞就可以用于双重支付。

所谓双重支付的情况,就比如说爱丽丝(Alice)向鲍勃(Bob)支付了一笔币,然后她又把相同的币再一次支付给了查利(Charlie),爱丽丝基本上试图进行两次支付,其中的一笔她知道会被拒回。当然,当我们考虑支付时,爱丽丝的某些账户通过写这两次支付被透支了。这很接近比特币的工作原理,但并不是十分准确。

比特币并不是基于帐户模型的,而是基于未花费交易输出(UTXO)。一笔交易的输出基本包含了一个地址以及数量。一旦输出被使用了,它就无法再次被花费。试想一下一个UTXO(作为一笔发送给你的币),它可以是任意数量的,比如说0.413 BTC。

比特币的双重支付意味着一笔币(UTXO)被花费了两次。通常,这意味着爱丽丝将她的0.413 BTC发送给了鲍勃,然后她又把同一笔比特币又发送给了查利。

比特币的解决方法是,其中一笔交易会纳入一个区块,由此来决定实际谁得到了报酬。如果两笔交易不知何故都传递到了多个区块,那么后面发生的区块,就会被软件给拒绝掉。如果两笔交易都在同一个区块当中,那么这个区块也会遭到软件的拒绝。

基本上,比特币软件会检测到双重支付行为,如果有双重支付行为的发生,则应该拒绝掉相应的区块。

然而,在两笔不同的交易中发送同一个UTXO,并不是唯一的双花方法。实际还存在着同一UTXO在同一交易进行双重支付的病态情况。在这种情况下,爱丽丝向鲍勃发送同一笔币两次。所以,爱丽丝实际支付的是0.413 BTC,但鲍勃收到的却是0.826 BTC。这显然不是一个有效的交易,因为只有一笔价值0.413 BTC的UTXO 是被发送的。这就相当于,爱丽丝用同一10美元向鲍勃发送了两次,而鲍勃收到的则是20美元。

 
定义漏洞
 

因此,总结一下我们所定义的两种类型的双重支付尝试:


使用两笔或更多的交易,来花费相同的UTXO;
使用一笔交易花费同一UTXO多次;



结果表明,Bitcoin Core 软件正确地处理了第一个问题,而第二个问题,正是我们要关心的。任何人都可以像这样构造出一笔双花交易,但要让节点接受这种交易,又是另一回事了。

目前有两种方法可以让交易被纳入一个区块当中: 

A. 支付足够的费用,将交易广播到网络上,那么矿工会负责把交易纳入区块当中;

B. 作为一名矿工,把交易纳入一个区块;

(A) 除了创建交易,并将其广播到网络上的节点之外,你不需要做太多的工作。 (B) 需要你找到足够的工作量证明。这也是这次漏洞的关键。

(A) 不是一个可能的攻击向量,因为这些交易会立即被标记为无效的,网络上的节点会拒绝它们。没有矿工们的合作,这种交易就无法进入矿工们的记忆库,因为它们不会得到传播。

(B)是漏洞显现的唯一情况。换句话说,想要利用这个漏洞,你就需要工作量证明,或者说足够的矿机设备和电力。

为了明确起见,双花交易有4种情况需要处理:

1A — 多笔 mempool交易花费了同一UTXO ;

1B — 多笔区块交易花费了同一UTXO ;

2A — 单笔mempool交易花费了同一UTXO多次;

2B — 单笔区块交易花费了同一UTXO多次;

该漏洞有两种表现形式。在0.14.x版本客户端中,存在着一个拒绝服务(DoS)的漏洞,而在0.15.x - 0.16.2版本的客户端,则存在一个超发漏洞。接下来,我们会分别分析它们。

 
拒绝服务攻击
 

故事始于2009年的Bitcoin 0.1版本客户端,这一版本的代码通过拒绝案例1B和案例2B(检查区块没有双重支付)来强制达成共识。

201809290427248594.png

为了清晰起见,作者删除了很多代码


你可以看到“检查冲突”的注释,其代码负责检查每个输入没有被花费。“将输出标记为已使用”注释下面的代码,标记了UTXO的使用。如果任何UTXO的花费超过一次,则会导致错误。

在2011年,PR 443被合并到了比特币代码库。这一改变是为了处理通过mempool (上面的情况2A)传输单笔交易双重支付的情况。这个合并请求注释的目的非常明确:

    “而且,没有具有重复输入的交易会被纳入区块当中......几个星期前,有人尝试过了,但这些交易并没有被纳入区块。我假设某个地方存在了一个检查关,它会阻止这些重复交易进入区块,虽然我没有对这个问题进行任何挖掘。这实际上是为了防止这种明显无效的交易得到中继。”

201809290429217163.png


实际的代码更改,或多或少与上面的ConnectInputs 中的“检查冲突”注释下的代码执行了相同的操作,但位于的是不同的位置。代码更改是在CheckTransaction 中运行的,其负责了所有上述的4种情况(1A, 1B, 2A, 2B)。因此,我们在区块双重支付共识代码中有了一些冗余,正如案例1B和2B都被检查了两次,其中一次检查是在CheckTransaction,另一次则发生在ConnectInputs。

到了2013年,PR 2224被纳入了比特币软件。这一改变的目的是区分共识错误(例如双重支付)和系统错误(例如磁盘空间耗尽)之间的差别,正如PR注释中所表明的那样:


“它引入了CValidationState,它会存储关于区块的元数据,或者正在执行的交易验证数据。它被用于区分验证错误(例如,未能满足网络规则)和运行时错误(比如磁盘空间的不足),从前这些可能会产生混淆,因磁盘空间用完会导致区块被标记为无效。此外,CValidationState还承担了跟踪 DoS级别的角色(因此它不需要存储于交易或区块当中...)”



实际的相关代码更改如下:

201809290429287993.png


在那个时候,ConnectInputs已经被模块化成多个方法,并且这个函数成为了检查双重支付的函数。这里的关键改变是,曾经的error被改为了 assert

assert在C++中是做什么的?它会完全中止程序。程序员为什么要在这里停止程序?这就是Pull请求的目的所在。下面就是那个时候的代码片段:

201809290429336876.png


它会像以前一样处理案例1B和2B。函数名则从ConnectInputs更改为ConnectBlock,但检查案例1B和2B的冗余性仍然在PR 443中保留。正如我们已经看到的,UpdateCoins做了第二次双重支付检查。其中CheckBlock通过调用CheckTransaction进行了第一次双重支付检查:

201809290429374708.png


201809290429418890.png


由于这是第二次检查相同的内容,所以要让UpdateCoins的双花检查失败的唯一方法,就是存在某种UTXO数据库或交易存储损坏。事实上,这似乎是改成assert的原因。因为CheckBlock通过CheckTransaction在UpdateCoins之前已经进行了检查,我们已知道某笔交易并不是双花交易。因此,PR 2224正确地推测到,UpdateCoins中的这个状态必然是一个系统错误,而不是一个共识错误。在这种情况下,为了防止进一步的数据损坏,正确的做法就是停止程序。

到了2017年,PR 9049作为Bitcoin 0.14的一部分被引入比特币网络。随着隔离见证(Segwit)的纳入,它是加快区块验证时间的诸多更改的其中之一,其代码更改实际是非常少的:

201809290429465081.png


你可以看到布尔函数 fCheckDuplicateInputs被添加了进去,用于加快区块检查。我们将在下面看到,这是一个被认为是冗余的检查。不幸的是, UpdateCoins中的代码在PR 2224中被更改为系统损坏检查,而不是共识检查。到了0.14.0版本客户端,其代码进行了更多的模块化更改,而assert也发生了一些改变:

201809290429517782.png


曾经是作为一个冗余检查,现在却成了负责区块单笔交易双重支付检查(案例2B),并负责停止程序。从技术上来说,它仍然是强制执行共识规则。只是在中止程序问题上,它表现地非常糟糕。

PR 9049是如何获得通过的? Greg Maxwell 给了我IRC上的聊天记录。

201809290429561563.png


长话短说,开发者们在讨论PR 9049时,倾向于认为区块级单笔交易双重支付(案例2B)会在PR 443处遭到检查,而没有考虑PR 2224。这使得开发者们并没有密切关注PR 9049;

总而言之:

1、在2011年引入用于防止双重支付交易中继(案例2A)的 PR 443,实际产生了一个副作用,即对区块的双重支付共识规则检查创造了冗余校验(案例1B和 2B)。

2、PR 2224是在2013年引入的,作为一种副作用,将(1)中用于区块验证的代码,从冗余升级到了共识层;

3、PR 9049是在2017年被引入的,并且它跳过了(1)中用于单个区块单笔交易双重支付(案例1B)检查的代码。开发人员错误地认为代码是多余的,因为他们没有考虑到(2)。事实上,这种改变跳过了共识的关键部分。

公平地讲,这些事的汇合导致了这次漏洞。

 
DoS漏洞的严重性
 

这意味着 0.14.x 版本的Core软件可能会因为一个奇怪的区块而崩溃。而要让软件崩溃,攻击者需要做的事是:


创建一笔花费两次同一UTXO的交易;
通过足够的工作量证明,将(1)中的交易纳入一个比特币区块;
将这个区块广播到0.14.x版本软件的节点;



(1) 和 (3) 的成本并不高,而步骤(2)的最小成本为12.5 BTC。

如果你认为从博弈论的角度来看,分裂网络并不是那么好,那么利用这个漏洞的动机就相当低了。充其量,作为攻击者,你花费了12.5 BTC将部分全节点给搞崩溃。由于不可能从分裂网络中获利,攻击者无法轻易地补偿自己的攻击成本。

如果这是唯一的漏洞,那么攻击者可能给很多人带来一些不便,但这不会是持续的,因为这些被攻击的节点可以简单地重启,并连接到其它诚实节点。一旦有一个较长的链,那么恶意区块攻击就会完全失去它的威胁。除非攻击者以每区块12.5 BTC的代价继续创建区块,并将其传播给 0.14.x版本软件的节点,否则攻击就是不可持续的。

换句话说,虽然这个漏洞的确存在着,但对 DoS攻击的经济刺激却是相当低的。

 
超发漏洞
 

从0.15.0版本软件开始,core软件引入了一个新的特性,以便更快地查找和存储UTXO,而这恰恰又引入了另一个漏洞。当一笔具有双重支付单个交易的区块纳入区块链时,软件会将其视为有效,而不会出现崩溃的现象。

这就意味着一笔病理性交易(相同UTXO在同一交易中被使用多次,即案例2B),0.14版本的节点会因此而崩溃,而使用0.15版本软件的节点却会认为交易是有效的,这基本上是凭空在创建比特币。

谈谈它是如何发生的。在0.15中出现的PR 10195 ,引入了很多内容,但它的主要要点在于改变了 UTXO的存储方式,使得它们更有效地进行查找。因此,它出现了很多变化,包括对早期UpdateCoins函数的更改:

201809290430061888.png


注意,assert(false) 周围的代码是如何被完全取出的。注意这一点,0.15.0中的PR 10537也更改了代码。

201809290430102743.png


assert失败的条件现在取决于inputs.SpendCoin,它看起来是这样子的:

201809290430179759.png


本质上,SpendCoin返回“ false”值的唯一方法,就是让币不存在于UTXO集中。但正如你所看到的,这需要币是FRESH的,而不是DIRTY的。这些不是常见的术语,但值得庆幸的是,core开发者Andrew Chow给出了解释:


“现在的问题是,什么时候UTXO会被标记为FRESH?当它们被添加到UTXO数据库时,它们就会被标记为FRESH。但是,UTXO数据库仍然只存在于存储当中的(作为缓存)。当它被保存到磁盘时,存储中的条目将不再被标记为FRESH……”



标记为FRESH的币,是进入交易存储池(memory pool)中的币。而攻击者可以通过 UpdateCoins函数中的assert语句来破坏节点。更糟的是,如果币是属于DIRTY的(基本上从磁盘上读取的),那么这就会导致比特币的超发。

因此,攻击者可以欺骗那些运行 0.15.0- 0.16.2版本软件的矿工接受一个奇怪的、无效的区块,从而导致比特币的供应超发。

 
超发漏洞的严重性
 

这种攻击的经济诱因似乎明显高于DoS攻击,因为攻击者可能会凭空制造出比特币。但你仍然需要有挖矿设备来执行攻击,但考虑到潜在的经济诱因,这可能是值得的,或者看起来是这样的。

下面是使用这种漏洞的一种简单攻击方式:


创造一笔带有双重支付交易的区块,其会向自己支付两次,比方说 50 BTC →100 BTC;
将该区块广播给0.15/0.16版本客户端的所有矿工;



下面是会发生的一些事:

    0.14.x 版本节点会崩溃;
    较旧版本的节点及其它替代客户端会拒绝这个区块;
    很多区块链浏览器是运行在自定义软件上的,而不是基于core,因此,至少有一些浏览器会拒绝该区块,并且不会显示来自该区块的任何交易。
    取决于矿工们运行的软件,我们可能会迎来链分裂;

有可能,所有的矿工都是运行的Bitcoin Core 0.15+版本软件,在这种情况下,不受攻击的客户端可能会停滞不前。也有可能矿工会运行其它东西,在这种情况下,当他们发现一个区块时,链就会发生分叉。

由于这些违规行为,网络上的人们很快就会追踪到这一点,可能已提醒一些开发人员,并且core开发者已经修复了它。如果存在分叉,那么在那个时候,关于哪条链是正确的共识链,将开始得到讨论,而出现意外超发的链,可能会遭到抛弃。如果真的发生了,那么社区可能会自愿进行一次回滚,以惩罚攻击者。

所以对于攻击者来说,这不会带来50 BTC的收入,更可能的是失去12.5 BTC。如果攻击者加倍花费,比如说200 BTC,那么超发漏洞将持续存在的可能性会更小,因为攻击会更明显。

因此,从攻击者的角度来看,这并不是一种好的获利方式。

攻击者可以获利的另一种方式,就是事先做空比特币,然后再执行攻击。这也是具有风险的,因为攻击不能保证比特币价格会下跌,特别是当危机得到迅速和果断处理时。此外,考虑到大多数交易所提供的杠杠交易,都需要AML/KYC,这可能导致攻击者很快暴露。

攻击者不仅面临着巨大的资金风险,而且还会有身体危险。从经济角度来看,这并不是一个容易获利的漏洞。

当然,有一些别有用心的人,可能会用这种漏洞来吓唬那些比特币持有者。投资回报率将变得更抽象,因此从理论上来讲,这可能会达到这些别有用心者的目的。

 
结论
 

毫无疑问,这是一个相当严重的漏洞。尽管我和Awemany之间有着分歧,但我很感激他选择公开地和我辩论。也就是说,考虑到经济博弈理论,我不认为这个漏洞会像他所描述的那样严重。

即使这个漏洞在被发现之前被坏人所利用,攻击者可能也不会选择利用它,因为从经济学上来讲,它是没有意义的。可以肯定的是,这一技术漏洞应该被修复,并且开发者应该做得更好,但真正能够利用这种漏洞的对象其实是非常少的,基本上,只有那些想要摧毁比特币的组织才会这么干。

Bitcoin Core开发者的教训有很多:

1、任何共识变化(即使是微小的变化,例如9049),也需要更多的人进行审查; 2、需要对病理交易进行更多的检查; 3、代码库中哪些检查是冗余的,哪些检查是不冗余的,以及实际代码将要做些什么,需要变得更加清晰; 4、过去存在漏洞,将来也会存在漏洞。现在重要的是,学习并反思这一教训;


原文:https://medium.com/@jimmysong/bitcoin-core-bug-cve-2018-17144-an-analysis-f80d9d373362
作者:Jimmy Song
编译:洒脱喜

比特币现“2010年以来最严重的漏洞”,有人自责、有人抨击社区分裂

资讯8btc 发表了文章 • 2018-09-24 23:26 • 来自相关话题

就在Core开发者John Newbery声称为比特币网络上周曝出的CVE-2018-17144网络漏洞负责之后,Bitcoin Core开发者谴责了比特币(BTC)和比特币现金(BCH)之间的内斗。

 
“感到尴尬和抱歉”
 

9月23日,负责检查比特币代码库的Newbery在Twitter上发表评论说,正是因为他的代码检查工作不到位,这个漏洞才没有被注意到。

Bitcoin Core客户端近日出现漏洞,Core开发者之后迅速修复,敦促整个比特币网络升级到Core客户端补丁,并将此列为紧急事项。

Core团队此后已经发布一份关于这次漏洞的《完整总结报告》,其中包括这次bug的技术规范和根除方法。

“我绝对没有读取到CheckTransaction()。当我看到它时,这个“我们在CheckBlock中跳过它”描述应该会让我注意到。


Newbery在总结报告中表示,他没有注意到它。

“这个描述和 fCheckDuplicateInputs标签很容易引起注意。我应该凭直觉行事。至少我应该查一下Bitcoin Core PR #9049。但我没有。”


尽管Newbery对他的忽略导致的结果感到“尴尬和抱歉”,然而社区的反应似乎表明,他们没有兴趣将此事归咎于任何一方。

与此同时,其他消息来源也对代码监督的问题严重性提出了警告,Bitcoin.org的创建者Cobra称这个问题“非常可怕”,Bitcointalk的Theymos则认为这是比特币“2010年以来最严重的漏洞”。

 
Van Der Laan猛烈抨击社区争吵
 

同为Core开发者的Wladimir van der Laan此前曾表示,合作失败导致了这种情况的出现。

他在周日的推特中表示,“错误代码被合并本来就是错误的。是的,我们搞砸了,但是我们搞砸的东西范围很广。”

整个社区因为没有足够彻底地审查共识更改而搞砸了,需要更多的开发者关注!这是我们所有人的全部责任。

Van der Laan在一场辩论中写道,这个漏洞的发现为比特币(BTC)和比特币现金(BCH)的支持者提供了相互批评对方的不足之处的肥沃土壤。

“‘不专业’这个词甚至都不足以形容他们,”他补充说。


原文:John Newbery: I’m Responsible For ‘Worst Bitcoin Bug Since 2010’
作者:WILMA WOO
编译:Kyle 查看全部
201809241424214799.jpg

就在Core开发者John Newbery声称为比特币网络上周曝出的CVE-2018-17144网络漏洞负责之后,Bitcoin Core开发者谴责了比特币(BTC)和比特币现金(BCH)之间的内斗。

 
“感到尴尬和抱歉”
 

9月23日,负责检查比特币代码库的Newbery在Twitter上发表评论说,正是因为他的代码检查工作不到位,这个漏洞才没有被注意到。

Bitcoin Core客户端近日出现漏洞,Core开发者之后迅速修复,敦促整个比特币网络升级到Core客户端补丁,并将此列为紧急事项。

Core团队此后已经发布一份关于这次漏洞的《完整总结报告》,其中包括这次bug的技术规范和根除方法。


“我绝对没有读取到CheckTransaction()。当我看到它时,这个“我们在CheckBlock中跳过它”描述应该会让我注意到。



Newbery在总结报告中表示,他没有注意到它。


“这个描述和 fCheckDuplicateInputs标签很容易引起注意。我应该凭直觉行事。至少我应该查一下Bitcoin Core PR #9049。但我没有。”



尽管Newbery对他的忽略导致的结果感到“尴尬和抱歉”,然而社区的反应似乎表明,他们没有兴趣将此事归咎于任何一方。

与此同时,其他消息来源也对代码监督的问题严重性提出了警告,Bitcoin.org的创建者Cobra称这个问题“非常可怕”,Bitcointalk的Theymos则认为这是比特币“2010年以来最严重的漏洞”。

 
Van Der Laan猛烈抨击社区争吵
 

同为Core开发者的Wladimir van der Laan此前曾表示,合作失败导致了这种情况的出现。

他在周日的推特中表示,“错误代码被合并本来就是错误的。是的,我们搞砸了,但是我们搞砸的东西范围很广。”

整个社区因为没有足够彻底地审查共识更改而搞砸了,需要更多的开发者关注!这是我们所有人的全部责任。

Van der Laan在一场辩论中写道,这个漏洞的发现为比特币(BTC)和比特币现金(BCH)的支持者提供了相互批评对方的不足之处的肥沃土壤。

“‘不专业’这个词甚至都不足以形容他们,”他补充说。


原文:John Newbery: I’m Responsible For ‘Worst Bitcoin Bug Since 2010’
作者:WILMA WOO
编译:Kyle

2600万TRX被盗背后的罗生门 - 第二集

特写dappreview 发表了文章 • 2019-05-06 13:58 • 来自相关话题

导读:随着新一天的调查,更多证据被各方挖掘出来,本次事件的真相正在逐渐浮出水面,戏剧化程度堪比一场年度大戏。文末还附上了wojak的财富密码。没有读过上一篇文章的读者,请先移步阅读本次事件第一集 《2600万TRX被盗背后的罗生门》

注:以下调查的信息收集全部来自于Discord频道Scam Watch、Telegram群“TronBank抱团维权”,以及DappReview与关联人的聊天记录。


 
wojak反悔退款
 

自从5月3日晚上9点wojak出现并贴出一份退款对比名单之后,再次从Discord消失,在此期间很多人开始给wojak打上Scammer(骗子)的标签,并认为“他不会退款,可能已经开上兰博基尼去度假了”,诸如此类言论不绝于耳。






5月5日中午12点

wojak再次现身,声称“我投入了8个小时写工具来给所有人退款,等我写完代码回来发现大家都在把我想象成是一个骗子,而没有意识到Tronbank才是放置后门坑了你们的人。你们原本会因此损失所有的投资。但在看到你们把我当成骗子而不是开发者后,我认为我没有任何理由把TRX退还给你们”

此番言论遭到众人反驳,wojak坚持认为自己所做的事情并不违法(illegal),自己也不是小偷,只是发起了一笔交易调用了智能合约,并且遵守了智能合约的规则。此后,wojak再也没有表示过退款的可能性,而是让所有人去找Tronbank进行索赔。


证据开始指向TSC开发者Khanh
 

5月5日中午12点

在真相依旧处于众说纷纭的迷雾之中时,telegram中某开发者(要求匿名)发现了一条关键证据,进而扭转了整个调查的方向,把更多的信息带出水面。






TTX5N2wxLeyWBSNE6UeaBjCFZbpa2FH6jr 该地址于4月28日部署了一个与事发TRX Pro合约有同样后门的“测试合约”(合约地址为 TYZ4oPdPmwZS9xTUXhnFtQkPFFTi2iAydz),并在4月30日对后门进行了测试。






如上图所示,TTX5N**该地址用同样的方式发送了0.011911 TRX调用withdraw函数,触发后门,提走自己事先存入的约100 TRX。

也就是说,在被盗时间(5月3日凌晨4点)约4天之前,竟然已经有人熟知此后门以及其调用方式。当我们去反编译该测试合约并与TRX Pro被盗合约对比时,不难发现:






反编译工具:

https://www.trustlook.com/products/smartcontractguardian

这两段代码的后门部分完全一致!

而且更为神奇的是,“测试合约”的部署时间比项目方部署的正式合约竟然早了5小时23分钟。

毫无疑问,TTX5N** 地址与本次后门事件必定脱不了关系。

而该地址的所有者是谁呢?

打开TSC的网站https://tronsmartcontract.space,点击About Us






这正是TSC的开发者Khanh所拥有的地址

至此,Discord和tg群各路开发者开始梳理Khanh地址以及Tronbank开发者地址的合约部署、调用信息,梳理出以下时间线。


惊人的时间线







以上为Discord频道中梳理的时间线(均为UTC时间),下面我们按照北京时间进行更细节的梳理。

4/28/2019 4:07 PM

TronBank开发者部署了TRX Pro的测试合约,该合约中通过反编译并没有发现后门,合约地址为:

https://tronscan.org/#/contract/TAWLPqFn33U7iaAfP6cXRdJXcBUc1ewCRJ

4/28/2019 5:35 PM

仅在一个半小时后,由TSC开发者Khanh所拥有的地址TTX5N**部署了上文提到的“测试合约”,该合约中存在后门代码,合约地址为:

https://tronscan.org/#/contract/TYZ4oPdPmwZS9xTUXhnFtQkPFFTi2iAydz

4/28/2019 10:48 AM

Tronbank开发者了部署TRX Pro的正式版合约,该合约即被盗合约,其中有后门代码,合约地址为:

https://tronscan.org/#/contract/TW9AE7u5QADp2uej9xdaNVTYtqsRuJZNxJ

4/28/2019 11:00 PM

在12分钟之后,TSC开发者Khanh调用TRX Pro的正式版合约,并发送0.011011来测试后门。该笔交易记录为:

https://tronscan.org/#/transaction/d6d89713ebdb98402ddfd1d454be394a5521c83b7d385ce2c394924a2b923c89

4/30/2019 10:12 AM

TSC开发者Khanh调用自己在4/28/2019 5:35 PM 部署的存在后门的“测试合约”,触发后门,并取走自己充进去的100 TRX,该笔交易记录为:

https://tronscan.org/#/transaction/87bf173c126c4873ad333c02d4e352bacda9bfaae4d91d0bce156eb64bd5219f

5/3/2019 4:11 AM

wojak 调用TRX Pro的正式版合约withdraw函数,第一笔转入了0.000123,并没有任何效果,交易记录为:

https://tronscan.org/#/transaction/aabfc7b6cedb2e8ce055c7fdc7a62df558213c63a33092293886b0e4b58277e5

5/3/2019 4:12 AM

1分钟后,wojak 再次调用TRX Pro的正式版合约withdraw函数,转入0.011911,成功触发后门,提走合约余额2673万TRX,交易记录为:

https://tronscan.org/#/transaction/e26666a806e24697fd049e60cf83cf412f58d85cdb0493c014cef0d29d8bdc2e

根据以上信息,可以归纳出两个事实:

1. Tronbank上线之前的测试版本合约,没有后门,但最终线上正式版存在后门;

2. TSC开发者Khanh在Tronbank测试版合约发布当天部署过一个有相同后门的合约,并且知道后门的调用方式,且在4月30日自己进行过测试。也就是说,该后门与TSC脱不了关系。

在与Tronbank团队的沟通中,开发者提到,他们是使用TSC进行编译的。(针对该言论的真实性,DappReview无法做出验证)






注:以下内容是基于现有事实依据的可能性探讨,不代表最终结论和真相,请再次传播时不要断章取义。

在第一篇文章《2600万TRX被盗背后的罗生门》中,我们曾提到过三种可能性,

可能性一:Tronbank开发者在实际部署的合约中夹杂私货放置了后门,并成功欺骗了TSC完成了另一份没有后门的代码验证。

可能性二:Tronbank团队和TSC团队合谋,部署了有后门的合约,同时TSC协助用另一个没有后门的合约完成验证。

可能性三:Tronbank团队没有在合约中放置后门,而是后门在合约部署过程中以某种方式产生。

根据以上掌握到的更新信息,第一种可能性被否决,因为整个事件中,TSC开发者是最早调用后门的人,并不存在不知情被欺骗的情况,而第三种可能性的概率极大地增加。

TSC集合了编译、部署、验证的一条龙服务,从理论上来说,如果开发者使用TSC进行编译并部署,期间确实有可能增加后门代码。

在事发当天5月3日,Discord上询问为什么TRX Pro的实际运行代码与验证代码不一致时,Khank的回应如下:











上午7点22分回应:我刚起床听到消息,让我来扫描一下所有(代码)

晚上9点18分回应:各位抱歉,我也不知道为什么他们通过了我的代码(验证)

而5月5日当Khank的地址部署过后门合约并且调用的证据出现后,在Discord网友的质疑下,Khanh的回应如下:






Mr Fahrenheit:你怎么解释你的地址对另一个合约调用过可以触发后门的交易?

Khanh:我的私钥泄露了,github的密码也泄露了

这个回应显然过于苍白,一方面人们质疑如果私钥泄露为什么官网还挂着这个地址,另一方面该地址中还有28,052 TRX (价值约4400RMB)没有被转走。






此时此刻根据已有的信息进行客观的分析,存在的可能性(注意,此处仅讨论可能性,即便该可能性极低,真相目前没有任何实锤证据)依旧有以下几种:

可能性一:Tronbank团队和TSC团队合谋,部署了有后门的合约,同时TSC协助用另一个没有后门的合约完成验证。

可能性二:Tronbank团队没有在合约中放置后门,而是后门在合约部署过程中以某种方式产生。

以上的两种可能性中,目前的证据对于而言偏向于第二种可能性,Tronbank团队目前正在多次与Khanh沟通,并将部分对话截图贴出,Tronbank团队坚持没有放置任何的后门,而是指向TSC是真正放置后门的元凶。目前虽没有决定性的证据显示后门是由Khanh放置,但是TSC和Khanh自身与后门已经脱不了干系。

可能性三:Khanh的github账号被盗,地址私钥泄露,幕后黑手另有其人。

关于这一点依照现有的证据,可能性较低,Khanh的回应含糊其辞,也并没有提供账户被盗的证据(比如github关联邮箱提示不安全登录、密码被修改等辅助信息)

至此 最终的谜题仍未解开

这一场年度大戏尚未落下帷幕

更多的证据仍待挖掘


wojak的财富密码


整个事件中,wojak的那一笔神奇的交易依旧是关注本次事件的群众口中一直谈论的话题。究竟是什么样的奇技淫巧能让自动执行的代码找到后门,并且触发后门?

在DappReview与wojak的对话中,给出了答案:






wojak的灵感来自于2018年8月的一篇论文《TEETHER: Gnawing at Ethereum to Automatically Exploit Smart Contracts》

该论文主要讲了什么呢?

    基于底层的EVM指令,提出了存在漏洞的智能合约的一种广义定义;
    提出了TEETHER工具,该工具能够对于智能合约的字节码进行自动化的漏洞识别并生成相应的漏洞利用代码;
    对于以太坊区块链中部署的38,757个智能合约进行了大规模的漏洞分析,其中TEETHER工具发现了815个合约中的漏洞,整个过程完全自动化。


用一个不恰当但是通俗的比喻来说:TEETHER工具就是一台能自动从智能合约找漏洞并且提款的ATM机。

wojak基于这篇文章做了什么事情?






1. 把TEETHER工具针对波场虚拟机做了适配

2. 收集波场上所有智能合约

3. 对所有的合约执行TEETHER工具来分析

4. 找到可能的套利机会 比如从合约A中以X的价格购买某Token,然后在合约B中以Y价格卖出(Y大于X),整个流程都是自动化执行而且合法

5. 工具会产生一系列可能产生收益的交易列表

6. 脚本自动执行并出发这些交易

本质上,那一笔神奇的交易就是这样自动触发的,连他自己都不知道发生了什么。至于wojak本身的行为是否可以定义为“黑客”,或者“违法”,此处暂且不展开深究。


有兴趣研究这篇“财富密码”的请看:

https://publications.cispa.saarland/2612/1/main.pdf

截至发稿,Tronbank已经宣布完成了链上投资数据的收集,统计完成后将按照原计划发放赔付TRX。此外,TSC开发者Khanh已经关闭了个人Twitter和Facebook。 查看全部
tronbank.jpg


导读:随着新一天的调查,更多证据被各方挖掘出来,本次事件的真相正在逐渐浮出水面,戏剧化程度堪比一场年度大戏。文末还附上了wojak的财富密码。没有读过上一篇文章的读者,请先移步阅读本次事件第一集 《2600万TRX被盗背后的罗生门

注:以下调查的信息收集全部来自于Discord频道Scam Watch、Telegram群“TronBank抱团维权”,以及DappReview与关联人的聊天记录。



 
wojak反悔退款
 

自从5月3日晚上9点wojak出现并贴出一份退款对比名单之后,再次从Discord消失,在此期间很多人开始给wojak打上Scammer(骗子)的标签,并认为“他不会退款,可能已经开上兰博基尼去度假了”,诸如此类言论不绝于耳。

201905061152261.jpg


5月5日中午12点

wojak再次现身,声称“我投入了8个小时写工具来给所有人退款,等我写完代码回来发现大家都在把我想象成是一个骗子,而没有意识到Tronbank才是放置后门坑了你们的人。你们原本会因此损失所有的投资。但在看到你们把我当成骗子而不是开发者后,我认为我没有任何理由把TRX退还给你们”

此番言论遭到众人反驳,wojak坚持认为自己所做的事情并不违法(illegal),自己也不是小偷,只是发起了一笔交易调用了智能合约,并且遵守了智能合约的规则。此后,wojak再也没有表示过退款的可能性,而是让所有人去找Tronbank进行索赔。


证据开始指向TSC开发者Khanh
 

5月5日中午12点

在真相依旧处于众说纷纭的迷雾之中时,telegram中某开发者(要求匿名)发现了一条关键证据,进而扭转了整个调查的方向,把更多的信息带出水面。

201905061152272.jpg


TTX5N2wxLeyWBSNE6UeaBjCFZbpa2FH6jr 该地址于4月28日部署了一个与事发TRX Pro合约有同样后门的“测试合约”(合约地址为 TYZ4oPdPmwZS9xTUXhnFtQkPFFTi2iAydz),并在4月30日对后门进行了测试。

201905061152273.jpg


如上图所示,TTX5N**该地址用同样的方式发送了0.011911 TRX调用withdraw函数,触发后门,提走自己事先存入的约100 TRX。

也就是说,在被盗时间(5月3日凌晨4点)约4天之前,竟然已经有人熟知此后门以及其调用方式。当我们去反编译该测试合约并与TRX Pro被盗合约对比时,不难发现:

201905061152274.jpg


反编译工具:

https://www.trustlook.com/products/smartcontractguardian

这两段代码的后门部分完全一致!

而且更为神奇的是,“测试合约”的部署时间比项目方部署的正式合约竟然早了5小时23分钟。

毫无疑问,TTX5N** 地址与本次后门事件必定脱不了关系。

而该地址的所有者是谁呢?

打开TSC的网站https://tronsmartcontract.space,点击About Us

201905061152275.jpg


这正是TSC的开发者Khanh所拥有的地址

至此,Discord和tg群各路开发者开始梳理Khanh地址以及Tronbank开发者地址的合约部署、调用信息,梳理出以下时间线。


惊人的时间线


201905061152286.jpg


以上为Discord频道中梳理的时间线(均为UTC时间),下面我们按照北京时间进行更细节的梳理。

4/28/2019 4:07 PM

TronBank开发者部署了TRX Pro的测试合约,该合约中通过反编译并没有发现后门,合约地址为:

https://tronscan.org/#/contract/TAWLPqFn33U7iaAfP6cXRdJXcBUc1ewCRJ

4/28/2019 5:35 PM

仅在一个半小时后,由TSC开发者Khanh所拥有的地址TTX5N**部署了上文提到的“测试合约”,该合约中存在后门代码,合约地址为:

https://tronscan.org/#/contract/TYZ4oPdPmwZS9xTUXhnFtQkPFFTi2iAydz

4/28/2019 10:48 AM

Tronbank开发者了部署TRX Pro的正式版合约,该合约即被盗合约,其中有后门代码,合约地址为:

https://tronscan.org/#/contract/TW9AE7u5QADp2uej9xdaNVTYtqsRuJZNxJ

4/28/2019 11:00 PM

在12分钟之后,TSC开发者Khanh调用TRX Pro的正式版合约,并发送0.011011来测试后门。该笔交易记录为:

https://tronscan.org/#/transaction/d6d89713ebdb98402ddfd1d454be394a5521c83b7d385ce2c394924a2b923c89

4/30/2019 10:12 AM

TSC开发者Khanh调用自己在4/28/2019 5:35 PM 部署的存在后门的“测试合约”,触发后门,并取走自己充进去的100 TRX,该笔交易记录为:

https://tronscan.org/#/transaction/87bf173c126c4873ad333c02d4e352bacda9bfaae4d91d0bce156eb64bd5219f

5/3/2019 4:11 AM

wojak 调用TRX Pro的正式版合约withdraw函数,第一笔转入了0.000123,并没有任何效果,交易记录为:

https://tronscan.org/#/transaction/aabfc7b6cedb2e8ce055c7fdc7a62df558213c63a33092293886b0e4b58277e5

5/3/2019 4:12 AM

1分钟后,wojak 再次调用TRX Pro的正式版合约withdraw函数,转入0.011911,成功触发后门,提走合约余额2673万TRX,交易记录为:

https://tronscan.org/#/transaction/e26666a806e24697fd049e60cf83cf412f58d85cdb0493c014cef0d29d8bdc2e

根据以上信息,可以归纳出两个事实:

1. Tronbank上线之前的测试版本合约,没有后门,但最终线上正式版存在后门;

2. TSC开发者Khanh在Tronbank测试版合约发布当天部署过一个有相同后门的合约,并且知道后门的调用方式,且在4月30日自己进行过测试。也就是说,该后门与TSC脱不了关系。

在与Tronbank团队的沟通中,开发者提到,他们是使用TSC进行编译的。(针对该言论的真实性,DappReview无法做出验证)

201905061152287.jpg


注:以下内容是基于现有事实依据的可能性探讨,不代表最终结论和真相,请再次传播时不要断章取义。

在第一篇文章《2600万TRX被盗背后的罗生门》中,我们曾提到过三种可能性,

可能性一:Tronbank开发者在实际部署的合约中夹杂私货放置了后门,并成功欺骗了TSC完成了另一份没有后门的代码验证。

可能性二:Tronbank团队和TSC团队合谋,部署了有后门的合约,同时TSC协助用另一个没有后门的合约完成验证。

可能性三:Tronbank团队没有在合约中放置后门,而是后门在合约部署过程中以某种方式产生。

根据以上掌握到的更新信息,第一种可能性被否决,因为整个事件中,TSC开发者是最早调用后门的人,并不存在不知情被欺骗的情况,而第三种可能性的概率极大地增加。

TSC集合了编译、部署、验证的一条龙服务,从理论上来说,如果开发者使用TSC进行编译并部署,期间确实有可能增加后门代码。

在事发当天5月3日,Discord上询问为什么TRX Pro的实际运行代码与验证代码不一致时,Khank的回应如下:

201905061152288.jpg


201905061152289.jpg


上午7点22分回应:我刚起床听到消息,让我来扫描一下所有(代码)

晚上9点18分回应:各位抱歉,我也不知道为什么他们通过了我的代码(验证)

而5月5日当Khank的地址部署过后门合约并且调用的证据出现后,在Discord网友的质疑下,Khanh的回应如下:

2019050611522810.jpg


Mr Fahrenheit:你怎么解释你的地址对另一个合约调用过可以触发后门的交易?

Khanh:我的私钥泄露了,github的密码也泄露了

这个回应显然过于苍白,一方面人们质疑如果私钥泄露为什么官网还挂着这个地址,另一方面该地址中还有28,052 TRX (价值约4400RMB)没有被转走。

2019050611522911.jpg


此时此刻根据已有的信息进行客观的分析,存在的可能性(注意,此处仅讨论可能性,即便该可能性极低,真相目前没有任何实锤证据)依旧有以下几种:

可能性一:Tronbank团队和TSC团队合谋,部署了有后门的合约,同时TSC协助用另一个没有后门的合约完成验证。

可能性二:Tronbank团队没有在合约中放置后门,而是后门在合约部署过程中以某种方式产生。

以上的两种可能性中,目前的证据对于而言偏向于第二种可能性,Tronbank团队目前正在多次与Khanh沟通,并将部分对话截图贴出,Tronbank团队坚持没有放置任何的后门,而是指向TSC是真正放置后门的元凶。目前虽没有决定性的证据显示后门是由Khanh放置,但是TSC和Khanh自身与后门已经脱不了干系。

可能性三:Khanh的github账号被盗,地址私钥泄露,幕后黑手另有其人。

关于这一点依照现有的证据,可能性较低,Khanh的回应含糊其辞,也并没有提供账户被盗的证据(比如github关联邮箱提示不安全登录、密码被修改等辅助信息)

至此 最终的谜题仍未解开

这一场年度大戏尚未落下帷幕

更多的证据仍待挖掘


wojak的财富密码


整个事件中,wojak的那一笔神奇的交易依旧是关注本次事件的群众口中一直谈论的话题。究竟是什么样的奇技淫巧能让自动执行的代码找到后门,并且触发后门?

在DappReview与wojak的对话中,给出了答案:

2019050611522912.jpg


wojak的灵感来自于2018年8月的一篇论文《TEETHER: Gnawing at Ethereum to Automatically Exploit Smart Contracts》

该论文主要讲了什么呢?


    基于底层的EVM指令,提出了存在漏洞的智能合约的一种广义定义;
    提出了TEETHER工具,该工具能够对于智能合约的字节码进行自动化的漏洞识别并生成相应的漏洞利用代码;
    对于以太坊区块链中部署的38,757个智能合约进行了大规模的漏洞分析,其中TEETHER工具发现了815个合约中的漏洞,整个过程完全自动化。



用一个不恰当但是通俗的比喻来说:TEETHER工具就是一台能自动从智能合约找漏洞并且提款的ATM机。

wojak基于这篇文章做了什么事情?

2019050611522913.jpg


1. 把TEETHER工具针对波场虚拟机做了适配

2. 收集波场上所有智能合约

3. 对所有的合约执行TEETHER工具来分析

4. 找到可能的套利机会 比如从合约A中以X的价格购买某Token,然后在合约B中以Y价格卖出(Y大于X),整个流程都是自动化执行而且合法

5. 工具会产生一系列可能产生收益的交易列表

6. 脚本自动执行并出发这些交易

本质上,那一笔神奇的交易就是这样自动触发的,连他自己都不知道发生了什么。至于wojak本身的行为是否可以定义为“黑客”,或者“违法”,此处暂且不展开深究。


有兴趣研究这篇“财富密码”的请看:

https://publications.cispa.saarland/2612/1/main.pdf

截至发稿,Tronbank已经宣布完成了链上投资数据的收集,统计完成后将按照原计划发放赔付TRX。此外,TSC开发者Khanh已经关闭了个人Twitter和Facebook。

2600万TRX被盗背后的罗生门

特写dappreview 发表了文章 • 2019-05-06 13:47 • 来自相关话题

导读:此次TronBank合约被盗事件再次印证了一个简单到令人发指的常识——所谓智能合约的开源并不能等同于“无条件的安全”,而且粗糙的去中心化机制可能存在被利用的中心化黑幕可能。在目前这个混沌无序的市场环境中,作为一个成熟的“韭菜”,请不要再轻易相信任何口头上的去中心化承诺。



北京时间5月3日凌晨4点12分,一笔神奇的合约调用转走了TronBank合约中的2673万TRX(价值427万RMB),合约余额归零。






仅仅在20多天前,Tronbank团队的第二个游戏BTTBank在发布3小时内即被黑客用假币攻击并盗走数千万BTT(并非1.8亿BTT),事隔不到一个月,第三款游戏TRX Pro于4月29日20点正式上线,几天时间之内,合约余额已经突破2500万TRX。

这是否是TRON生态上的Dapp又一次被黑客盯上并成功洗劫一空?






而接下来发生的这一切

更让所有人始料未及

 
偶然触发的Bug?
 

合约余额归零后,项目方telegram群里面骗局和黑客的质疑声不绝于耳,DappReview和小伙伴们开始着手研究到底发生了什么。"黑客"的地址为THeRTTCvN4SHEVYNqcLVLNGGVsWLR4smyH,利用DappReview的玩家数据查看工具,可以看到该地址的所有者像是一个正常的Dapp玩家,从今年1月到5月该玩家涉猎过数十个Dapp,其中TronGoo是他玩过最多的游戏,从TronGoo官方排行榜可以看到他就是排名第二的大户玩家。





数据来源 https://player.dapp.review/

发生被盗事件约2个小时之后,在一个名为Scam Watch(骗局观察)的Discord频道中,调走这一笔2673万TRX的地址THeRTT**拥有者wojak现身了。






根据wojak的说法,他写了个脚本在分析波场虚拟机字节码,批量扫描合约并发起交易看看有没有什么能赚到钱的方法,结果偶然之中命中了Tronbank合约的bug。一开始连他自己都不知道这笔钱是从Tronbank打过来的。

社区里部分人建议wojak把钱还给Tronbank开发者,而wojak认为这不是他的问题,开发者应该自己写测试例子,做审计以及至少跑一些形式化验证(很显然他们啥都没干),他愿意把这笔钱原封不动还给Tronbank的每一个投资者,而不是项目方的开发者。

wojak要求参与了Tronbank的投资者发给他投资的交易hash值以及自己的地址,他将写一个脚本进行验证,并承诺退款给有损失的Tronbank投资人。

 
刻意埋藏的后门?
 

随着调查的深入,那一笔触发Bug的交易被放回桌面上被仔细的剖析。我们再来看一下:






注意到,该笔交易调用的是合约里withdraw函数,发送的金额为0.011911 TRX,要注意在Tronbank正常的业务逻辑下,调用withdraw函数是不应该发送任何TRX的,金额应该为0. 这一点在源代码中就可以验证。

像Tronbank这样资金盘属性的Dapp,往往都会把代码开源让合约和逻辑变得透明可信来吸引投资人,在网站最明显的位置,也标明了通过第三方验证工具tronsmartcontract.space(以下简称TSC)进行合约代码验证后的代码信息。











           
从TSC点开源代码之后,找到withdraw函数,函数第一行会先调用_withdraw()来取得可以提取的TRX金额,在_withdraw()函数的第一行我们可以看到:

require(msg.value == 0, "wrong trx amount"); 

这一行代码的意思是要求该笔交易发送的TRX金额必须为零,否则无法继续执行,交易会被REVERT。

也就是说,按照开源代码的逻辑,那一笔触发Bug的交易根本不可能发生。

现实变成了,TRX Pro的合约实际执行逻辑和所谓“开源”的代码逻辑并不一致。

这里补充说明一下,所谓的代码认证过程是这样:

1. 开发者在主网发布合约

2. 开发者在TSC上传代码,选择编译版本,编译为bytecodes,

3. TSC把步骤2中的bytecodes和步骤1中发布合约的bytecodes做匹配,匹配成功,则认证通过,理论上多或者少一个空格都不行

进一步深扒,从tronscan上找到TRX Pro合约的bytecodes,用反编译工具进行处理得到:






反编译工具:

https://www.trustlook.com/products/smartcontractguardian

在withdraw函数中,多了一个判断 else if ((0x2E87 == msg.value)),如果满足条件,那么就会把合约的余额全部转给交易发起者!我们把16进制的数字0x2E87转换成10进制,也就是11911,要知道TRX的精度为6位,11911所对应的TRX金额就是0.011911 TRX... 而这一部分判断在TSC的开源代码中是不存在的,看起来就像是是一个被藏起来没有公布的后门。

用更简单的语言梳理一遍:

1. 在主网上部署的合约,通过反编译发现,调用withdraw函数时,如果发送金额等于0.011911 TRX,则会转移全部合约余额;

2. 在TSC上认证过的开源代码中,如果发送金额不为零调用withdraw函数,交易会被撤回。

那么一切就很清晰了,实际发生的与第一点完全吻合,主网的代码运行没有问题,即TronBank在主网部署的合约中存在一个可以直接提走合约余额的后门代码,而有意思的在于第二点,明明不一样的代码逻辑是如何上传后通过了TSC的认证过程?

根据已有的信息,断定“是开发者在合约之中放置后门”这个结论仍然为时过早,目前我们可以得出的客观结论只有两点:

1. TRX Pro在主网的合约中存在后门

2. TSC上认证过的代码与实际合约运行逻辑不符

注:以下内容是基于现有事实依据的可能性探讨,不代表最终结论和真相,请在传播时不要断章取义。

至于后门是谁放置的,如何放置的?目前没有任何实锤证据,有的人认为是Tronbank开发者,有的人认为开发者的实力还不足以通过欺骗TSC验证与实际部署所不同的代码。

客观来分析存在的可能性(注意,此处仅讨论可能性,即便该可能性极低,真相目前没有任何实锤证据),有以下几种:

可能性一:Tronbank开发者在实际部署的合约中夹杂私货放置了后门,并成功欺骗了TSC完成了另一份没有后门的代码验证。

在探讨这种可能性时,如何欺骗TSC成为了焦点,如果真的TSC的验证存在Bug,那么这意味着之前所有通过TSC认证并标榜开源的Dapp都不再可信和透明,事实上,在Discord群里,TSC的开发者Khanh承认代码已经很久没有维护并存在bug的可能性,也有其他开发者证实自己实际部署的代码和通过认证的代码可以不完全相同。

另一方面,Tronbank开发者在Telegram群中多次声称团队没有在合约中放置任何的后门,有一种自证清白的方式是:官方给出部署时的源代码以及编译方式(包括编译工具以及版本),理论上任何人按照同样方式编译出来的bytecode和线上部署的TRX Pro合约应该一致。但当我们提出该质疑时,官方回复如下:






这个回复的内容如果当真,则该事件将更加戏剧化和复杂化,参考可能性三

可能性二:Tronbank团队和TSC团队合谋,部署了有后门的合约,同时TSC协助用另一个没有后门的合约完成验证。

这是在“欺骗TSC”很难成立的前提下提出的可能性,TSC最终打上验证的标签其实是中心化的行为,完全可以人为操作,但对于TSC作为一个第三方合约验证工具来说,目前尚无竞品,做这样的事情无疑严重损伤自己的品牌,串通合谋是在性价比太低。

可能性三:Tronbank团队没有在合约中放置后门,而是后门在合约部署过程中以某种方式产生。

这种可能性是基于“可能一”中的官方回复的一种暗示,即项目方在合约部署时确实使用的是没有后门的合约,编译工具在部署合约到主网的过程中出现了猫腻,加入了有问题的后门。但项目方目前没有提供任何的可验证信息,使用的编译工具,以及同样代码两次编译不同结果的信息。

不论如何,TronBank开发者实际部署的代码原样我们不得而知,也无法验证真伪,该事件的真相需要等待各方提供更有说服力的证据才能被逐渐还原出来。

至少在此刻,我们还不能下定论,究竟是谁埋下了这个后门。

 
投资者的钱怎么办?
 

在以上错综复杂的信息之下,大部分玩家已经放弃了追查真相,而更关注的则是找回损失。

在承诺退款并要求蒙受损失的投资人发送交易信息之后,wojak整整失联了超过12小时,这期间wojak账户里的钱大部分被转移到了币安交易所。有人开始怀疑wojak并没有打算退钱准备捐款跑路,还有人认为这是TronBank项目方监守自盗,wojak就是项目方之一。

5月3日下午2点44分

另一边,在Tronbank的官方群里,管理员贴出的置顶消息是“TRX Pro被黑客THeRTTCvN4SHEVYNqcLVLNGGVsWLR4smyH攻击,目前开发团队正在紧急处理,将会及时在群里更新消息”






5月3日晚上9点13分






wojak再次现身,说自己花4个多小时写了脚本从链上获取到tronbank的投资数据来跟收集到的损失信息对比,其中有不少人虚报损失,甚至有完全没有参与过投资的用户也来谎报损失,仅有少数人诚实地汇报了数字。wojak也把比对信息贴了出来https://pastebin.com/raw/gMtxCw97。

5月4日下午1点24分

整整一天之后,Tronbank项目方再次发出通知,他们正在联系wojak进行退款,如果wojak在5月4日晚7点时没有任何回复,官方将提供给投资人的补偿方案。






5月4日下午3点 - 4点

针对之前所承诺的24小时内给出事件分析报告,官方将再次延期,声称将联系安全公司,TSC以及波场官方做更多的调查。同时评论到,有很多细节仍需确认,之前从未遇到类似情况,这有可能是一个精彩的故事。











5月4日晚上7点

Tronbank项目方如约公布了赔偿方案,令大部分人吃惊的是项目方没有跑路,而是承诺在24小时内收集信息,并在72小时内进行全额赔付。如果赔付照常发放,这可能是Dapp历史上最大的一次项目方赔付。






而此次赔付通知,可以说是给投资者吃了一颗定心丸,使得大部分用户打消了“后门是由开发者留下”的疑虑。但在真相露出水面之前,DappReview依旧保留质疑的态度,等待项目方公开更多的调查报告。

 
结语
 

原本看起来是一起常见的黑客攻击事件,却喜剧般演化成一场罗生门。究竟是开发者留后门,巧被程序员打开,还是如项目方所说有更底层的问题存在?除了当局者本身,无人知晓。

投资者们对于去中心化的信任(TSC提供的代码认证)崩塌,寄托于中心化的信任(起初是wojak的承诺,后来是Tronbank的赔付公告)。虽然严格意义上来讲最终的真相可能并不是“去中心化的锅”,但对于普通用户而言,很难区分其中差异,大部分用户的认知只能停留在“智能合约为什么开源了明明没有问题还被黑了?”

在本次事件中,虽然Tronbank承诺赔付投资人受损的利益,但受伤的无疑是波场的整个Dapp生态,基于TSC认证的开源代码所产生的信任和背书已经毫无价值,在波场官方出来验证工具之前,DappReview建议各位Dapp玩家不要轻信项目方所谓代码开源言论。

此外,截至到发稿,wojak尚未再次露面,也未将资金退还给任何投资人。
 
 
续集:2600万TRX被盗背后的罗生门 - 第二集 查看全部
tronbank.jpg


导读:此次TronBank合约被盗事件再次印证了一个简单到令人发指的常识——所谓智能合约的开源并不能等同于“无条件的安全”,而且粗糙的去中心化机制可能存在被利用的中心化黑幕可能。在目前这个混沌无序的市场环境中,作为一个成熟的“韭菜”,请不要再轻易相信任何口头上的去中心化承诺。




北京时间5月3日凌晨4点12分,一笔神奇的合约调用转走了TronBank合约中的2673万TRX(价值427万RMB),合约余额归零。

201905050745301.jpg


仅仅在20多天前,Tronbank团队的第二个游戏BTTBank在发布3小时内即被黑客用假币攻击并盗走数千万BTT(并非1.8亿BTT),事隔不到一个月,第三款游戏TRX Pro于4月29日20点正式上线,几天时间之内,合约余额已经突破2500万TRX。

这是否是TRON生态上的Dapp又一次被黑客盯上并成功洗劫一空?

201905050745302.jpg


而接下来发生的这一切

更让所有人始料未及

 
偶然触发的Bug?
 

合约余额归零后,项目方telegram群里面骗局和黑客的质疑声不绝于耳,DappReview和小伙伴们开始着手研究到底发生了什么。"黑客"的地址为THeRTTCvN4SHEVYNqcLVLNGGVsWLR4smyH,利用DappReview的玩家数据查看工具,可以看到该地址的所有者像是一个正常的Dapp玩家,从今年1月到5月该玩家涉猎过数十个Dapp,其中TronGoo是他玩过最多的游戏,从TronGoo官方排行榜可以看到他就是排名第二的大户玩家。

201905050745303.jpg

数据来源 https://player.dapp.review/

发生被盗事件约2个小时之后,在一个名为Scam Watch(骗局观察)的Discord频道中,调走这一笔2673万TRX的地址THeRTT**拥有者wojak现身了。

201905050745304.jpg


根据wojak的说法,他写了个脚本在分析波场虚拟机字节码,批量扫描合约并发起交易看看有没有什么能赚到钱的方法,结果偶然之中命中了Tronbank合约的bug。一开始连他自己都不知道这笔钱是从Tronbank打过来的。

社区里部分人建议wojak把钱还给Tronbank开发者,而wojak认为这不是他的问题,开发者应该自己写测试例子,做审计以及至少跑一些形式化验证(很显然他们啥都没干),他愿意把这笔钱原封不动还给Tronbank的每一个投资者,而不是项目方的开发者。

wojak要求参与了Tronbank的投资者发给他投资的交易hash值以及自己的地址,他将写一个脚本进行验证,并承诺退款给有损失的Tronbank投资人。

 
刻意埋藏的后门?
 

随着调查的深入,那一笔触发Bug的交易被放回桌面上被仔细的剖析。我们再来看一下:

201905050745301.jpg


注意到,该笔交易调用的是合约里withdraw函数,发送的金额为0.011911 TRX,要注意在Tronbank正常的业务逻辑下,调用withdraw函数是不应该发送任何TRX的,金额应该为0. 这一点在源代码中就可以验证。

像Tronbank这样资金盘属性的Dapp,往往都会把代码开源让合约和逻辑变得透明可信来吸引投资人,在网站最明显的位置,也标明了通过第三方验证工具tronsmartcontract.space(以下简称TSC)进行合约代码验证后的代码信息。

201905050745316.jpg


201905050745317.jpg


           
从TSC点开源代码之后,找到withdraw函数,函数第一行会先调用_withdraw()来取得可以提取的TRX金额,在_withdraw()函数的第一行我们可以看到:

require(msg.value == 0, "wrong trx amount"); 

这一行代码的意思是要求该笔交易发送的TRX金额必须为零,否则无法继续执行,交易会被REVERT。

也就是说,按照开源代码的逻辑,那一笔触发Bug的交易根本不可能发生。

现实变成了,TRX Pro的合约实际执行逻辑和所谓“开源”的代码逻辑并不一致。

这里补充说明一下,所谓的代码认证过程是这样:

1. 开发者在主网发布合约

2. 开发者在TSC上传代码,选择编译版本,编译为bytecodes,

3. TSC把步骤2中的bytecodes和步骤1中发布合约的bytecodes做匹配,匹配成功,则认证通过,理论上多或者少一个空格都不行

进一步深扒,从tronscan上找到TRX Pro合约的bytecodes,用反编译工具进行处理得到:

201905050745318.jpg


反编译工具:

https://www.trustlook.com/products/smartcontractguardian

在withdraw函数中,多了一个判断 else if ((0x2E87 == msg.value)),如果满足条件,那么就会把合约的余额全部转给交易发起者!我们把16进制的数字0x2E87转换成10进制,也就是11911,要知道TRX的精度为6位,11911所对应的TRX金额就是0.011911 TRX... 而这一部分判断在TSC的开源代码中是不存在的,看起来就像是是一个被藏起来没有公布的后门。

用更简单的语言梳理一遍:

1. 在主网上部署的合约,通过反编译发现,调用withdraw函数时,如果发送金额等于0.011911 TRX,则会转移全部合约余额;

2. 在TSC上认证过的开源代码中,如果发送金额不为零调用withdraw函数,交易会被撤回。

那么一切就很清晰了,实际发生的与第一点完全吻合,主网的代码运行没有问题,即TronBank在主网部署的合约中存在一个可以直接提走合约余额的后门代码,而有意思的在于第二点,明明不一样的代码逻辑是如何上传后通过了TSC的认证过程?

根据已有的信息,断定“是开发者在合约之中放置后门”这个结论仍然为时过早,目前我们可以得出的客观结论只有两点:

1. TRX Pro在主网的合约中存在后门

2. TSC上认证过的代码与实际合约运行逻辑不符

注:以下内容是基于现有事实依据的可能性探讨,不代表最终结论和真相,请在传播时不要断章取义。

至于后门是谁放置的,如何放置的?目前没有任何实锤证据,有的人认为是Tronbank开发者,有的人认为开发者的实力还不足以通过欺骗TSC验证与实际部署所不同的代码。

客观来分析存在的可能性(注意,此处仅讨论可能性,即便该可能性极低,真相目前没有任何实锤证据),有以下几种:

可能性一:Tronbank开发者在实际部署的合约中夹杂私货放置了后门,并成功欺骗了TSC完成了另一份没有后门的代码验证。

在探讨这种可能性时,如何欺骗TSC成为了焦点,如果真的TSC的验证存在Bug,那么这意味着之前所有通过TSC认证并标榜开源的Dapp都不再可信和透明,事实上,在Discord群里,TSC的开发者Khanh承认代码已经很久没有维护并存在bug的可能性,也有其他开发者证实自己实际部署的代码和通过认证的代码可以不完全相同。

另一方面,Tronbank开发者在Telegram群中多次声称团队没有在合约中放置任何的后门,有一种自证清白的方式是:官方给出部署时的源代码以及编译方式(包括编译工具以及版本),理论上任何人按照同样方式编译出来的bytecode和线上部署的TRX Pro合约应该一致。但当我们提出该质疑时,官方回复如下:

201905050745329.jpg


这个回复的内容如果当真,则该事件将更加戏剧化和复杂化,参考可能性三

可能性二:Tronbank团队和TSC团队合谋,部署了有后门的合约,同时TSC协助用另一个没有后门的合约完成验证。

这是在“欺骗TSC”很难成立的前提下提出的可能性,TSC最终打上验证的标签其实是中心化的行为,完全可以人为操作,但对于TSC作为一个第三方合约验证工具来说,目前尚无竞品,做这样的事情无疑严重损伤自己的品牌,串通合谋是在性价比太低。

可能性三:Tronbank团队没有在合约中放置后门,而是后门在合约部署过程中以某种方式产生。

这种可能性是基于“可能一”中的官方回复的一种暗示,即项目方在合约部署时确实使用的是没有后门的合约,编译工具在部署合约到主网的过程中出现了猫腻,加入了有问题的后门。但项目方目前没有提供任何的可验证信息,使用的编译工具,以及同样代码两次编译不同结果的信息。

不论如何,TronBank开发者实际部署的代码原样我们不得而知,也无法验证真伪,该事件的真相需要等待各方提供更有说服力的证据才能被逐渐还原出来。

至少在此刻,我们还不能下定论,究竟是谁埋下了这个后门。

 
投资者的钱怎么办?
 

在以上错综复杂的信息之下,大部分玩家已经放弃了追查真相,而更关注的则是找回损失。

在承诺退款并要求蒙受损失的投资人发送交易信息之后,wojak整整失联了超过12小时,这期间wojak账户里的钱大部分被转移到了币安交易所。有人开始怀疑wojak并没有打算退钱准备捐款跑路,还有人认为这是TronBank项目方监守自盗,wojak就是项目方之一。

5月3日下午2点44分

另一边,在Tronbank的官方群里,管理员贴出的置顶消息是“TRX Pro被黑客THeRTTCvN4SHEVYNqcLVLNGGVsWLR4smyH攻击,目前开发团队正在紧急处理,将会及时在群里更新消息”

2019050507453210.jpg


5月3日晚上9点13分

2019050507453211.jpg


wojak再次现身,说自己花4个多小时写了脚本从链上获取到tronbank的投资数据来跟收集到的损失信息对比,其中有不少人虚报损失,甚至有完全没有参与过投资的用户也来谎报损失,仅有少数人诚实地汇报了数字。wojak也把比对信息贴了出来https://pastebin.com/raw/gMtxCw97。

5月4日下午1点24分

整整一天之后,Tronbank项目方再次发出通知,他们正在联系wojak进行退款,如果wojak在5月4日晚7点时没有任何回复,官方将提供给投资人的补偿方案。

2019050507453212.jpg


5月4日下午3点 - 4点

针对之前所承诺的24小时内给出事件分析报告,官方将再次延期,声称将联系安全公司,TSC以及波场官方做更多的调查。同时评论到,有很多细节仍需确认,之前从未遇到类似情况,这有可能是一个精彩的故事。

2019050507453213.jpg


2019050507453314.jpg


5月4日晚上7点

Tronbank项目方如约公布了赔偿方案,令大部分人吃惊的是项目方没有跑路,而是承诺在24小时内收集信息,并在72小时内进行全额赔付。如果赔付照常发放,这可能是Dapp历史上最大的一次项目方赔付。

2019050507453315.jpg


而此次赔付通知,可以说是给投资者吃了一颗定心丸,使得大部分用户打消了“后门是由开发者留下”的疑虑。但在真相露出水面之前,DappReview依旧保留质疑的态度,等待项目方公开更多的调查报告。

 
结语
 

原本看起来是一起常见的黑客攻击事件,却喜剧般演化成一场罗生门。究竟是开发者留后门,巧被程序员打开,还是如项目方所说有更底层的问题存在?除了当局者本身,无人知晓。

投资者们对于去中心化的信任(TSC提供的代码认证)崩塌,寄托于中心化的信任(起初是wojak的承诺,后来是Tronbank的赔付公告)。虽然严格意义上来讲最终的真相可能并不是“去中心化的锅”,但对于普通用户而言,很难区分其中差异,大部分用户的认知只能停留在“智能合约为什么开源了明明没有问题还被黑了?”

在本次事件中,虽然Tronbank承诺赔付投资人受损的利益,但受伤的无疑是波场的整个Dapp生态,基于TSC认证的开源代码所产生的信任和背书已经毫无价值,在波场官方出来验证工具之前,DappReview建议各位Dapp玩家不要轻信项目方所谓代码开源言论。

此外,截至到发稿,wojak尚未再次露面,也未将资金退还给任何投资人。
 
 
续集:2600万TRX被盗背后的罗生门 - 第二集

安全漏洞重现,分叉前夕的以太坊只想"静一静”...

项目45qu 发表了文章 • 2019-01-18 11:15 • 来自相关话题

让我们陷入困境的不是无知, 而是看似正确的谬误论断。 ——马克·吐温

君士坦丁堡升级是什么? 以太坊经历了哪些升级? 此次升级有何意义?


最近即将实施硬分叉的以太坊再次成为币圈为数不多的热点,相较于去年惨烈的BCH分叉大战,此次分叉则更为和谐。

这次分叉为何以曾经辉煌的千年古都君士坦丁堡命名成为一个谜。

作为中古世纪东罗马帝国的国都君士坦丁堡,曾经是公认的西方政治、经济、文化、交通,以及宗教中心。

事实上,俄罗斯在历史上继承了拜占庭帝国的衣钵,加之以太坊创始人Vitalik Buterin俄罗斯的国籍。

因此,以拜占庭和君士坦丁堡为两次硬分叉命名也在情理之中。

在去年12月初举行的核心开发者会议上,以太坊开发团队成员就多次延迟的君士坦丁堡分叉升级时间达成协议,确定将7080000区块作为硬分叉激活点。

随后在上周,以太坊官方正式发文提醒硬分叉注意事项,并确定硬分叉时间预计在北京时间1月17日。

据了解,这一次的升级也被称为社区最期待的升级,以太坊的性能也将在此次升级中大幅提升。

但是,就在君士坦丁堡升级一触即发的时刻,智能合约审计平台ChainSecurity在昨天发现,如果实施以太坊改进提案(EIP)1283,可能为攻击者提供盗取用户资金的代码漏洞。

以太坊开发者们在进行电话会议后决定再度推迟硬分叉时间,具体日期将在本周五的核心开发者电话会议上重新讨论决定。

以太坊核心开发者Afri Schoedon则在Twitter上称硬分叉现预计于下周一进行。


01
 

受到硬分叉再次延期的影响,ETH价格也应声下跌。

此前受硬分叉利好刺激的涨幅几乎被全盘收回,盘中最低一度触及116美元。

针对最新发现的漏洞,区块链分析公司Amberdata首席技术官Joanes Espanol在接受采访时表示,此次的新漏洞可能导致硬分叉后出现“重入攻击”的风险。

事实上,有分析指出新漏洞与The DAO事件的漏洞具有相似之处。

攻击过程大致都是攻击者先假装提现让合约觉得余额减少,随后将提现的ETH重新存入并转移到第二个地址中。

由于当前合约中的余额已经超出合约认为自己持有的数额,因此所有超额部分都能直接被攻击者提取。

作为大都会版本的第二个升级,君士坦丁堡硬分叉也是在“拜占庭”的基础上进一步进行升级。

升级目的在于降低工作成本并简化创建DApps的流程。

此次升级从底层虚拟机到智能合约,整体上提高了整个以太坊网络的性能。

除了“难度炸弹”再度推迟12个月外,引发热议的话题便是区块奖励再次从3ETH减少到2ETH。

这将使挖矿成本相对增加,并直接决定矿工的挖矿收益减少。

受此影响,PeckShield平台数据显示目前以太坊全网只有23.6%的全节点完成了软件升级,而且这一比例在过去几天内增长较缓。

此外,其他在技术方面的升级的目的是让开发者能够高效便捷地运行智能合约,进一步降低成本,并为即将到来的Layer 2扩容方案铺路。

尽管以太坊在第四阶段的核心共识将完成从PoW到PoS的转换,君士坦丁堡又是第三阶段的最后一次升级。

不少人都期待这一次升级中PoW/PoS混合的模式。

但是,在目前看到的Go-Ethereum发布的共识模块中并不支持PoW/PoS混合共识。

由此可见,对于以太坊开发团队来说,引入PoS共识还为时尚早。


02
 

包括此次硬分叉在内,以太坊已经至少经历了五次硬分叉。

不同于BCH由于共识破裂导致的硬分叉,以太坊硬分叉则是社区内部统一认可的技术升级。

早在以太坊发布之初,团队就已把以太坊的发展规划为包括Frontier(前沿)、Homestead(家园)、Metropolis(大都会)以及Serenity(宁静)在内的四个阶段。

此前的两次分叉主要是从Frontier(前沿)到Homestead(家园)的过渡。

目的在于稳定版本的发布以及未来挖矿难度的调整。

相较于Frontier版本,虽然Hometead没有明显的技术性改革,但易用性得到了改善,用户体验也进行了相对优化。

随后的一次分叉起源便是著名的“The DAO”事件。

2016年6月,由于其编写的智能合约存在着重大缺陷,曾经是区块链业界最大的众筹项目TheDAO遭黑客攻击,导致市值近5000万美元的以太币被转移。

为了挽回投资者的损失,以太坊社区投票打算更改代码回滚数据。

随后在7月,以太坊完成硬分叉,最终形成了两条链。

目前,以太坊的“官方”版本ETH由其原始开发者进行维护,以太经典ETC则是由新团队进行维护。

目前,以太坊正处于第三阶段Metropolis。

由于Metropolis为以太坊带来大量重要特性,这些特性无法一次性引入,因此又被分为“拜占庭”和“君士坦丁堡”两个小阶段。

2017年10月,第一阶段“拜占庭”分叉完成升级,在这一次升级后以太坊性能也有了一定的提升。

除了以太坊发行量会进一步减少40%左右,矿工的区块奖励将从5ETH减少至3ETH外,还包括更高的匿名性和网络安全性。

而此前为了确保以太坊矿工们全部加入新链而引入的“难度炸弹”机制被推迟一年。

难度炸弹是指计算难度时除了根据出块时间和上一个区块难度进行调整外,还包括一个呈指数型增长的难度因子。

由于PoW比拼的是算力,为了实现共识算法从PoW向PoS的转变,最简单的办法就是让挖矿难度陡增,这也是以太坊设置“难度炸弹”的根本原因。

随着区块生成时间的增加,最后将面临几乎挖不出区块的状况,矿工除了转向PoS协议之外别无他法。

这也成为以太坊迈入最终阶段Serenity(宁静)的重要一步。


03
 

不少分析师都对即将执行的君士坦丁堡分叉表现出乐观的态度。

其中,创世纪环球贸易首席执行官Michael Moro在谈到此次硬分叉时特别提到了供应减少将减少市场的抛售压力。

他在接受采访时表示:“由于减产33%,这可能会降低来自矿商回报的抛售压力。”

作为曾经的“公链之王”,以太坊旨在通过为其他项目提供区块链应用开发平台来打造更广泛的生态系统。

以太坊曾掀起ICO的热潮,也引领了一波资本的狂欢。时过境迁,ICO已经渐渐淡出了人们的视线。

以太坊的价格也一落千丈。从最高的1237美元跌去了近90%。

就连曾经的DApp 主场,也逐渐被包括EOS在内的公链瓜分市场。

虽然在众多开发者和用户眼中,以太坊依然是公链中的“老大”。

但是,以太坊中存在的诸多性能问题始终无法解决,以太坊将失去这些信仰者。

根据DAppReview数据显示,目前在以太坊运行的DApp总数为1515个,但是日活用户均在1000以下。

已经远远低于在EOS运行的DApp上万的日活用户数。

事实上,以太坊被诟病最多的便是扩容问题。

目前以太坊每秒只能处理14笔交易,而Visa能够每秒处理24000笔交易。

交易拥堵直接导致了交易手续费的升高,这是由于以太坊智能合约计算手续费的算法缺陷。

为了让自己的交易尽快得到确认,发起交易的用户将提高Gas价格,手续费一度飙升至5862个ETH。

尽管V神提出了Casper和分片技术以解决以太坊的拥堵问题,但是目前尚未进入应用阶段。

通证道捷首席架构师孟岩也在接受采访时表示,以太坊君士坦丁堡升级对于性能的提升没有太根本的改进。

除非落实Casper重大性能的提升,否则将不会改变公链点竞争态势。

此次的君士坦丁堡分叉与其说是一次技术升级,倒更像是一场突围之战。 查看全部
201901180236165647.jpg


让我们陷入困境的不是无知, 而是看似正确的谬误论断。 ——马克·吐温

君士坦丁堡升级是什么? 以太坊经历了哪些升级? 此次升级有何意义?



最近即将实施硬分叉的以太坊再次成为币圈为数不多的热点,相较于去年惨烈的BCH分叉大战,此次分叉则更为和谐。

这次分叉为何以曾经辉煌的千年古都君士坦丁堡命名成为一个谜。

作为中古世纪东罗马帝国的国都君士坦丁堡,曾经是公认的西方政治、经济、文化、交通,以及宗教中心。

事实上,俄罗斯在历史上继承了拜占庭帝国的衣钵,加之以太坊创始人Vitalik Buterin俄罗斯的国籍。

因此,以拜占庭和君士坦丁堡为两次硬分叉命名也在情理之中。

在去年12月初举行的核心开发者会议上,以太坊开发团队成员就多次延迟的君士坦丁堡分叉升级时间达成协议,确定将7080000区块作为硬分叉激活点。

随后在上周,以太坊官方正式发文提醒硬分叉注意事项,并确定硬分叉时间预计在北京时间1月17日。

据了解,这一次的升级也被称为社区最期待的升级,以太坊的性能也将在此次升级中大幅提升。

但是,就在君士坦丁堡升级一触即发的时刻,智能合约审计平台ChainSecurity在昨天发现,如果实施以太坊改进提案(EIP)1283,可能为攻击者提供盗取用户资金的代码漏洞。

以太坊开发者们在进行电话会议后决定再度推迟硬分叉时间,具体日期将在本周五的核心开发者电话会议上重新讨论决定。

以太坊核心开发者Afri Schoedon则在Twitter上称硬分叉现预计于下周一进行。


01
 

受到硬分叉再次延期的影响,ETH价格也应声下跌。

此前受硬分叉利好刺激的涨幅几乎被全盘收回,盘中最低一度触及116美元。

针对最新发现的漏洞,区块链分析公司Amberdata首席技术官Joanes Espanol在接受采访时表示,此次的新漏洞可能导致硬分叉后出现“重入攻击”的风险。

事实上,有分析指出新漏洞与The DAO事件的漏洞具有相似之处。

攻击过程大致都是攻击者先假装提现让合约觉得余额减少,随后将提现的ETH重新存入并转移到第二个地址中。

由于当前合约中的余额已经超出合约认为自己持有的数额,因此所有超额部分都能直接被攻击者提取。

作为大都会版本的第二个升级,君士坦丁堡硬分叉也是在“拜占庭”的基础上进一步进行升级。

升级目的在于降低工作成本并简化创建DApps的流程。

此次升级从底层虚拟机到智能合约,整体上提高了整个以太坊网络的性能。

除了“难度炸弹”再度推迟12个月外,引发热议的话题便是区块奖励再次从3ETH减少到2ETH。

这将使挖矿成本相对增加,并直接决定矿工的挖矿收益减少。

受此影响,PeckShield平台数据显示目前以太坊全网只有23.6%的全节点完成了软件升级,而且这一比例在过去几天内增长较缓。

此外,其他在技术方面的升级的目的是让开发者能够高效便捷地运行智能合约,进一步降低成本,并为即将到来的Layer 2扩容方案铺路。

尽管以太坊在第四阶段的核心共识将完成从PoW到PoS的转换,君士坦丁堡又是第三阶段的最后一次升级。

不少人都期待这一次升级中PoW/PoS混合的模式。

但是,在目前看到的Go-Ethereum发布的共识模块中并不支持PoW/PoS混合共识。

由此可见,对于以太坊开发团队来说,引入PoS共识还为时尚早。


02
 

包括此次硬分叉在内,以太坊已经至少经历了五次硬分叉。

不同于BCH由于共识破裂导致的硬分叉,以太坊硬分叉则是社区内部统一认可的技术升级。

早在以太坊发布之初,团队就已把以太坊的发展规划为包括Frontier(前沿)、Homestead(家园)、Metropolis(大都会)以及Serenity(宁静)在内的四个阶段。

此前的两次分叉主要是从Frontier(前沿)到Homestead(家园)的过渡。

目的在于稳定版本的发布以及未来挖矿难度的调整。

相较于Frontier版本,虽然Hometead没有明显的技术性改革,但易用性得到了改善,用户体验也进行了相对优化。

随后的一次分叉起源便是著名的“The DAO”事件。

2016年6月,由于其编写的智能合约存在着重大缺陷,曾经是区块链业界最大的众筹项目TheDAO遭黑客攻击,导致市值近5000万美元的以太币被转移。

为了挽回投资者的损失,以太坊社区投票打算更改代码回滚数据。

随后在7月,以太坊完成硬分叉,最终形成了两条链。

目前,以太坊的“官方”版本ETH由其原始开发者进行维护,以太经典ETC则是由新团队进行维护。

目前,以太坊正处于第三阶段Metropolis。

由于Metropolis为以太坊带来大量重要特性,这些特性无法一次性引入,因此又被分为“拜占庭”和“君士坦丁堡”两个小阶段。

2017年10月,第一阶段“拜占庭”分叉完成升级,在这一次升级后以太坊性能也有了一定的提升。

除了以太坊发行量会进一步减少40%左右,矿工的区块奖励将从5ETH减少至3ETH外,还包括更高的匿名性和网络安全性。

而此前为了确保以太坊矿工们全部加入新链而引入的“难度炸弹”机制被推迟一年。

难度炸弹是指计算难度时除了根据出块时间和上一个区块难度进行调整外,还包括一个呈指数型增长的难度因子。

由于PoW比拼的是算力,为了实现共识算法从PoW向PoS的转变,最简单的办法就是让挖矿难度陡增,这也是以太坊设置“难度炸弹”的根本原因。

随着区块生成时间的增加,最后将面临几乎挖不出区块的状况,矿工除了转向PoS协议之外别无他法。

这也成为以太坊迈入最终阶段Serenity(宁静)的重要一步。


03
 

不少分析师都对即将执行的君士坦丁堡分叉表现出乐观的态度。

其中,创世纪环球贸易首席执行官Michael Moro在谈到此次硬分叉时特别提到了供应减少将减少市场的抛售压力。

他在接受采访时表示:“由于减产33%,这可能会降低来自矿商回报的抛售压力。”

作为曾经的“公链之王”,以太坊旨在通过为其他项目提供区块链应用开发平台来打造更广泛的生态系统。

以太坊曾掀起ICO的热潮,也引领了一波资本的狂欢。时过境迁,ICO已经渐渐淡出了人们的视线。

以太坊的价格也一落千丈。从最高的1237美元跌去了近90%。

就连曾经的DApp 主场,也逐渐被包括EOS在内的公链瓜分市场。

虽然在众多开发者和用户眼中,以太坊依然是公链中的“老大”。

但是,以太坊中存在的诸多性能问题始终无法解决,以太坊将失去这些信仰者。

根据DAppReview数据显示,目前在以太坊运行的DApp总数为1515个,但是日活用户均在1000以下。

已经远远低于在EOS运行的DApp上万的日活用户数。

事实上,以太坊被诟病最多的便是扩容问题。

目前以太坊每秒只能处理14笔交易,而Visa能够每秒处理24000笔交易。

交易拥堵直接导致了交易手续费的升高,这是由于以太坊智能合约计算手续费的算法缺陷。

为了让自己的交易尽快得到确认,发起交易的用户将提高Gas价格,手续费一度飙升至5862个ETH。

尽管V神提出了Casper和分片技术以解决以太坊的拥堵问题,但是目前尚未进入应用阶段。

通证道捷首席架构师孟岩也在接受采访时表示,以太坊君士坦丁堡升级对于性能的提升没有太根本的改进。

除非落实Casper重大性能的提升,否则将不会改变公链点竞争态势。

此次的君士坦丁堡分叉与其说是一次技术升级,倒更像是一场突围之战。

以太坊“君士坦丁堡”升级将延迟

资讯chainb 发表了文章 • 2019-01-16 18:46 • 来自相关话题

以太坊的“君士坦丁堡”(Constantinople)升级面临延迟,因在其中一项变更中发现了一个严重的漏洞。

智能合约审计公司ChainSecurity周二表示,如果实施以太坊改进提案(EIP)1283,可能会为攻击者提供窃取用户资金的代码漏洞。在电话会议上,以太坊开发商以及客户开发商,和其他运营网络项目的开发商同意在评估问题时暂时推迟硬分叉。

参与者包括以太坊创造者Vitalik Buterin,开发人员Hudson Jameson,Nick Johnson和Evan Van Ness,以及Parity发布经理Afri Schoedon等。周五,将在以太坊电话会议期间将决定新的分叉日期。

在讨论漏洞的问题时,项目的核心开发人员得出的结论是,在硬分叉之前修复漏洞需要很长时间,预计将在1月17日04:00左右执行。

这个漏洞被称为可重入攻击,实质上可以允许攻击者多次“重新进入”同一个函数,而无需更新用户的事务状态。在这种情况下,攻击者基本上可以“永远撤回资金”,区块链分析公司Amberdata的首席技术官Joanes Espanol在之前的CoinDesk采访中表示。

他解释说:

    “想象一下,合约中有一个函数可以调用另一个合同......如果我是一个黑客,我能够在前一个功能仍在执行的情况下触发功能,提取资金。”


这就类似于臭名昭著的2016年DAO攻击中发现的漏洞之一。

ChainSecurity的帖子解释说,在Constantinople之前,网络上的存储操作将耗费5,000 gas,超过通常的“转移”或“发送”功能调用合同时发送的2,300 gas。

但是,如果实施升级,“不干净的”存储操作将耗费200 gas。“攻击合同可以使用2300 gas津贴成功操纵弱势合约的变量。”

之前预计Constantinople将在2018年启动,但在Ropsten测试网上启动升级后发现问题后推迟。 


原文:https://www.coindesk.com/ethereums-constantinople-upgrade-faces-delay-due-to-security-vulnerability
来源:coindesk
作者:Christine Kim , Nikhilesh De
编译:Miranda 查看全部
20190116134893239323.jpg

以太坊的“君士坦丁堡”(Constantinople)升级面临延迟,因在其中一项变更中发现了一个严重的漏洞。

智能合约审计公司ChainSecurity周二表示,如果实施以太坊改进提案(EIP)1283,可能会为攻击者提供窃取用户资金的代码漏洞。在电话会议上,以太坊开发商以及客户开发商,和其他运营网络项目的开发商同意在评估问题时暂时推迟硬分叉。

参与者包括以太坊创造者Vitalik Buterin,开发人员Hudson Jameson,Nick Johnson和Evan Van Ness,以及Parity发布经理Afri Schoedon等。周五,将在以太坊电话会议期间将决定新的分叉日期。

在讨论漏洞的问题时,项目的核心开发人员得出的结论是,在硬分叉之前修复漏洞需要很长时间,预计将在1月17日04:00左右执行。

这个漏洞被称为可重入攻击,实质上可以允许攻击者多次“重新进入”同一个函数,而无需更新用户的事务状态。在这种情况下,攻击者基本上可以“永远撤回资金”,区块链分析公司Amberdata的首席技术官Joanes Espanol在之前的CoinDesk采访中表示。

他解释说:


    “想象一下,合约中有一个函数可以调用另一个合同......如果我是一个黑客,我能够在前一个功能仍在执行的情况下触发功能,提取资金。”



这就类似于臭名昭著的2016年DAO攻击中发现的漏洞之一。

ChainSecurity的帖子解释说,在Constantinople之前,网络上的存储操作将耗费5,000 gas,超过通常的“转移”或“发送”功能调用合同时发送的2,300 gas。

但是,如果实施升级,“不干净的”存储操作将耗费200 gas。“攻击合同可以使用2300 gas津贴成功操纵弱势合约的变量。”

之前预计Constantinople将在2018年启动,但在Ropsten测试网上启动升级后发现问题后推迟。 


原文:https://www.coindesk.com/ethereums-constantinople-upgrade-faces-delay-due-to-security-vulnerability
来源:coindesk
作者:Christine Kim , Nikhilesh De
编译:Miranda

比特币10年:920亿枚被“伪造”,比特币曾命悬一线

特写31qu 发表了文章 • 2018-10-28 11:06 • 来自相关话题

比特币诞生于2009年,曾一度被当做极客手中的玩具,并不被重视,于是发生了程序员用1万个比特币换两个披萨的故事。

如今10年过去了,比特币的身份标签已从暗网、犯罪、泡沫,逐渐变成了财富的代名词。价格则从最初的几分钱,暴涨到13万,但是这个过程却并不“顺利”。

10年间,比特币经历200多次被死亡,摆脱竞争币的“围追堵截”,最终稳坐加密货币的“头把交椅”,难以被撼动。

这10年间,比特币就像热血漫画中的主人公一样,与各种“敌人”搏斗。

 
1 比特币的“自杀”


“比特币、以太坊等其他加密货币制造了‘历史上最大的泡沫’。”

最近,拥有“末日博士”之称的美国著名经济学家 Nouriel Roubini 这样评价比特币。而类似唱衰比特币的声音,在这10年里,层出不穷。

事实上,比特币也的确有几次“惊魂时刻”。

2010年,前比特币核心开发者 Jeff Garzik 在 Bitcointalk 上发帖称,他在比特币第24638个区块上,发现了一个溢出漏洞。该漏洞是核心代码的溢出错误所引起,这导致920亿个比特币被“伪造”。

按照中本聪的设计,比特币总量是2100万个,溢出漏洞对比特币来说,着实是致命的。





吓坏了社群的920亿比特币


溢出漏洞吓坏了当年的社群维护们,“如果这个漏洞被成功利用,就不可能见到现在的比特币了,把这称为比特币的自杀,毫不为过”。

幸运的是,在 Garzik 发现该问题之后的5个小时,核心代码被及时修复,同时,伪造的比特币也被“销毁”。

更幸运的是,由于该漏洞事件发生在2010年,当时比特币还只是极客手中的“玩具”,因此“溢出漏洞”事件对比特币几乎没有影响。假设该事件发生在2018年,毫无疑问将会对比特币、乃至加密货币整个行业造成致命打击。

虽然在社群努力下,比特币成功度过此次危机,但并不意味着比特币核心代码绝对安全,不会再发生“自杀”事件。

就在今年10月份,莱特币创始人李启威在《神器密友》的节目现场谈到,比特币的“通胀漏洞”非常糟糕,几乎是比特币面临的最严重的挑战之一。按照李启威的解释,通胀漏洞是指有人利用比特币核心代码漏洞,生产出更多的比特币,进而导致比特币发行处于严重通胀状态。

有人可能会心一笑:“李所说的不就是双花嘛”。

关于该漏洞,李启威还提到了更多细节:“该漏洞产生是由于一名矿工试图通过攻击,制造出更多比特币导致的。”

如果有人能创造出无限多的比特币,这将会完全扼杀比特币的价值,同时也一定会导致整个加密货行业的“雪崩”,尤其是在加密货币行业资金规模达到2000亿美金的今天。

与“溢出漏洞”不同的是,该“通胀漏洞”与比特币网络未验证双花有关,如果攻击者找了将交易打包进入区块的方式,那么这些凭空产生的比特币将会被人接受。进而导致比特币生态不断处于通胀状态,因此被称为“通胀漏洞”。

社群处理通胀漏洞的方式,也相当有趣。

通胀漏洞一经发现,比特币开发者就紧急发布了修复补丁。但是李启威谈到:“开发者并未对外公布威胁漏洞”,他提到,开发人员只表示该错误会导致节点被Dos攻击,进而导致比特币网络崩溃。

在李启威看来,开发人员有意弱化了问题严重性。

比特币网络在运行过程中,经历了多次迭代升级,才成为我们今天看到的版本。任何软件、程序在发展过程中,遇到漏洞,打补丁是再常见不过的了,这就像是施工队在施工过程中“逢山挖洞,遇水架桥”的道理是一样的。

但不可否认的是,比特币自身平稳运行了近10年,已经算得上“奇迹”。

除了源代码漏洞对比特币产生的负面影响,大量竞争币的涌现,也对比特币发展产生了一定的“威胁”。

 
2 竞争者们
 

在比特币生态逐渐发展成熟的过程中,一大批比特币的模仿者与竞争者相继出现。

上千种“竞争者”中,莱特币、以太坊、瑞波币、EOS、恒星币、零币、DCR等加密货币也逐渐进入大众视野,并不断分割比特币的市值份额。作为金融属性较重的加密货币领域,谁的市值最大,“谁才是老大”已成为共识。

从2013年到2018年,比特币市值占比从95%下降到最低点33%,最近再次回升到52%左右。相比比特币核心代码的“致命一击”,竞争币与比特币的市值之争,更像是“拉锯战”。在这场旷日持久的战争中,各种共识、标签被创造。





《忍者神龟》中的斯普林特老师与他的小龟们


莱特币(Litcoin)

“比特金,莱特银”是加密货币领域的共识。

2011年11月,莱特币诞生。在谷歌工作期间,莱特币创始人李启威受比特币启发,基于同样的去中心化数字货币原理开发了莱特币。由于莱特币更易于挖矿,以及更高的社群共识,使得莱特币从众多所谓的“山寨币”中脱颖而出,2013年成为当时仅次于比特币的第二大加密货币。

2018年莱特币涨到历史最高价2480元人民币,流通市值一度达到1350亿人民币。历史上莱特币市值曾达到比特币总市值的6.8%。

由于比特币、莱特币主链难以开发,2013年底,以太坊发明人Vitalik Buterin 离开比特币核心开发团队,并召集了一批认可以太坊理念的开发者,启动以太坊项目。


以太坊(Ethereum)

从2017年1月开始,以太坊市值从7亿美元迅速爬升至162亿美元,在区块链资产中排名第二,仅次于比特币。2017年6月中旬,以太坊市值更是达到比特币总市值的80%。作为比特币的竞争币,以太坊绝对是最得力的干将。

当然,这是有原因的。Vitalik在设计以太坊公链时,加入了智能合约与虚拟机功能,让基于以太坊的开发,就像在Windows系统上开发应用一样方便。而且,最关键的是以太坊解决了发币、募资难题,将链上发币,变成“一键式”。

有了这些优势,以太坊吸成功引了大量资金关注,直接促成了币圈大繁荣。但是以太坊本身却存在诸多问题。





比特币与众多竞争币


柚子(EOS)

以太坊的收费机制将很多用户挡在门外,同时每秒几十笔的交易频次,更不能满足大量Dapp并发,因此EOS应运而生。

EOS是一个全新的Dapp开发平台——EOS。

EOS采用了一套全新的共识算法,即DPOS,这个共识机制在之前的Bitshare、Bteemit有了成功实践,所以被无限看好。

有了这样的共识,EOS生态发展十分迅速。目前有839个Dapp,是以太坊的8倍。市值337亿人民币,总市值最高达到比特币的10%。

EOS的成功,得益于其在应用方面的突破。而瑞波的异军突起,则得益于其在支付领域的突破。


瑞波(Ripple)

由于受到出块速度与区块链容量限制,比特币转账既慢又贵,小额转账很难得到保证,于是瑞波出现了。

Ripple成立时吸引了大量风险投资。 Google支持的高科技创业公司设法从银行机构中提取了超过5000万美元,在众筹时总资金获得了惊人的9亿美元。同时,Ripple提供全球金融解决方案,使世界能够交换价值。Ripple 的解决方案,使银行能够立即直接和确定地进行结算来降低结算成本。

作为比特币的竞争者,Ripple市值增加迅速,目前总市值1259亿人民币,今年5月19年总市值达到比特币的45%。


门罗币(Monero)

比特币最大的特点之一是匿名性,但是由于地址之间的可溯源性,一旦某一笔转账被确认身份,其他所有的交易都会被追踪到,这让那些渴望更加匿名的用户感到“不安”。

门罗币的出现,彻底解决了地址之间可追踪的“弊端”。门罗币允许资产所偶有者“发送和接收资金,而不会在Blockchain上公开显示记录。”但不幸的是,由于门罗币的高度隐私性,导致它已被黑社会和其他犯罪组织所采纳。

虽然门罗彻底匿名了,但是市值目前市值只有121亿美金,今年4月份占到比特币总市值的2.3%。

在比特币发展过程中,核心开发组起到了功不可没的作用,但是开发组内部也会产生很大的分歧,Decred 就是从核心开发组“出逃”的程序员创建。


Decred(DCR)

2015年,几位比特币核心开发人员对比特币现状不满,无法忍受比特币核心开发组垄断比特币的软件开发,认为其已经被“中央化”并且缺乏良好的管理和升级机制。在这样的背景下,他们离开了比特币团队,并开始正式创立Decred。

Decred于2015年9月首次推出,是基于社区管理系统集成到区域块链中的一种开放的和渐进的加密数字货币。

但与比特币最大的区别是,Decred采用PoW和PoS混合方式挖矿,即所有PoW产生的矿都必须先经过PoS验证才能成为合法的块。所以在 DCR 的网络中,几乎杜绝了算力垄断的现象,在一定程度上解决了去中心化项目的治理机制问题。

看来,竞争币不仅在与比特币争市值,还在与比特币争“人才”。

除了这些较为成功的加密货币项目,2017年还涌现了大量公链开发、Dapp应用为主的公链项目。这得益于行业的快速发展,这些新兴项目的体量也在逐渐增大。随着加密货币牛熊更迭,这些项目也偃旗息鼓。在此期间,比特币市值占比也从33%增加到52%,其江湖地位也逐渐稳固。

 
3 比特币的江湖地位


由于比特币的“天然缺陷”,比如交易时间缓慢,不可延展性等,导致1500种加密货币诞生,每一种都在试图克服比特币的一个或者多个缺陷。

但是比特币却始终坐“老大”位置,一统江湖。





比特币与竞争币的市值变化趋势


不可否认,竞争币在2016年以来也取得了长足发展。以以太坊为例,2017年比特币的价格从1700美元左右升至9000美元左右,增幅达到了450%,在同一段时间内,以太坊实现了1000%的收益,达到了当前的700美元左右。

从收益比上来看,以太坊确实潜力无限。但是从流通量上来分析,比特币的流通量是以太坊的五倍还多。这意味着以太坊的市值还不到比特币的一半。比特币的地位已经确立的非常稳固,短时间内并不会失去世界上最有价值的加密货币这一地位。

同时有人认为,像EOS这样的有应用的公链项目,会吸引越来越多的用户。超越比特币指日可待。

但是,从用户增加速度与应用来看,EOS与以太坊生态建设正逐渐繁荣。目前EOS公链与以太坊应用总数为950多个,EOS和ETH上的Dapp总量分别是111个和839个,EOS日活达到32130,ETH为1768。

与纯应用类公链相比,比特币与这类应用型公链不同,比特币本身就是应用——钱。而比特币的地址数,目前已接近3000万,可以说秒杀这类应用型公链。

所以,从应用角度来说,比特币依然是江湖老大。

当然,这比不意味着,比特币永远会一家独大。也许随着市场发展,生态应用的繁荣,应用类公链最终崛起,独占鳌头,也不是不可能。


-------------------------
 

孕育了整个区块链行业的比特币,是否会继续领跑加密货币行业?

没人能给出确切的答案。

区块链行业的快速发展,得益于加密货币价格的不断上涨。财富效应让这个行业快速聚集了大量人才。

因此,站在行业发展角度,留给不同数字货币发展的空间还很大,这些加密货币之间也并不是竞争关系。正如李启威的观点,加密货币之间的竞争并不是胜者为王,败者为寇的游戏。

(文/零界) 查看全部
bitcoin-thumb.jpg

比特币诞生于2009年,曾一度被当做极客手中的玩具,并不被重视,于是发生了程序员用1万个比特币换两个披萨的故事。

如今10年过去了,比特币的身份标签已从暗网、犯罪、泡沫,逐渐变成了财富的代名词。价格则从最初的几分钱,暴涨到13万,但是这个过程却并不“顺利”。

10年间,比特币经历200多次被死亡,摆脱竞争币的“围追堵截”,最终稳坐加密货币的“头把交椅”,难以被撼动。

这10年间,比特币就像热血漫画中的主人公一样,与各种“敌人”搏斗。

 
1 比特币的“自杀”


“比特币、以太坊等其他加密货币制造了‘历史上最大的泡沫’。”

最近,拥有“末日博士”之称的美国著名经济学家 Nouriel Roubini 这样评价比特币。而类似唱衰比特币的声音,在这10年里,层出不穷。

事实上,比特币也的确有几次“惊魂时刻”。

2010年,前比特币核心开发者 Jeff Garzik 在 Bitcointalk 上发帖称,他在比特币第24638个区块上,发现了一个溢出漏洞。该漏洞是核心代码的溢出错误所引起,这导致920亿个比特币被“伪造”。

按照中本聪的设计,比特币总量是2100万个,溢出漏洞对比特币来说,着实是致命的。

1a64aee83a10400c94ad27e4f636fbc7.jpg

吓坏了社群的920亿比特币


溢出漏洞吓坏了当年的社群维护们,“如果这个漏洞被成功利用,就不可能见到现在的比特币了,把这称为比特币的自杀,毫不为过”。

幸运的是,在 Garzik 发现该问题之后的5个小时,核心代码被及时修复,同时,伪造的比特币也被“销毁”。

更幸运的是,由于该漏洞事件发生在2010年,当时比特币还只是极客手中的“玩具”,因此“溢出漏洞”事件对比特币几乎没有影响。假设该事件发生在2018年,毫无疑问将会对比特币、乃至加密货币整个行业造成致命打击。

虽然在社群努力下,比特币成功度过此次危机,但并不意味着比特币核心代码绝对安全,不会再发生“自杀”事件。

就在今年10月份,莱特币创始人李启威在《神器密友》的节目现场谈到,比特币的“通胀漏洞”非常糟糕,几乎是比特币面临的最严重的挑战之一。按照李启威的解释,通胀漏洞是指有人利用比特币核心代码漏洞,生产出更多的比特币,进而导致比特币发行处于严重通胀状态。

有人可能会心一笑:“李所说的不就是双花嘛”。

关于该漏洞,李启威还提到了更多细节:“该漏洞产生是由于一名矿工试图通过攻击,制造出更多比特币导致的。”

如果有人能创造出无限多的比特币,这将会完全扼杀比特币的价值,同时也一定会导致整个加密货行业的“雪崩”,尤其是在加密货币行业资金规模达到2000亿美金的今天。

与“溢出漏洞”不同的是,该“通胀漏洞”与比特币网络未验证双花有关,如果攻击者找了将交易打包进入区块的方式,那么这些凭空产生的比特币将会被人接受。进而导致比特币生态不断处于通胀状态,因此被称为“通胀漏洞”。

社群处理通胀漏洞的方式,也相当有趣。

通胀漏洞一经发现,比特币开发者就紧急发布了修复补丁。但是李启威谈到:“开发者并未对外公布威胁漏洞”,他提到,开发人员只表示该错误会导致节点被Dos攻击,进而导致比特币网络崩溃。

在李启威看来,开发人员有意弱化了问题严重性。

比特币网络在运行过程中,经历了多次迭代升级,才成为我们今天看到的版本。任何软件、程序在发展过程中,遇到漏洞,打补丁是再常见不过的了,这就像是施工队在施工过程中“逢山挖洞,遇水架桥”的道理是一样的。

但不可否认的是,比特币自身平稳运行了近10年,已经算得上“奇迹”。

除了源代码漏洞对比特币产生的负面影响,大量竞争币的涌现,也对比特币发展产生了一定的“威胁”。

 
2 竞争者们
 

在比特币生态逐渐发展成熟的过程中,一大批比特币的模仿者与竞争者相继出现。

上千种“竞争者”中,莱特币、以太坊、瑞波币、EOS、恒星币、零币、DCR等加密货币也逐渐进入大众视野,并不断分割比特币的市值份额。作为金融属性较重的加密货币领域,谁的市值最大,“谁才是老大”已成为共识。

从2013年到2018年,比特币市值占比从95%下降到最低点33%,最近再次回升到52%左右。相比比特币核心代码的“致命一击”,竞争币与比特币的市值之争,更像是“拉锯战”。在这场旷日持久的战争中,各种共识、标签被创造。

dbbd245627c348b8a4896187146d69c9.jpg

《忍者神龟》中的斯普林特老师与他的小龟们


莱特币(Litcoin)

“比特金,莱特银”是加密货币领域的共识。

2011年11月,莱特币诞生。在谷歌工作期间,莱特币创始人李启威受比特币启发,基于同样的去中心化数字货币原理开发了莱特币。由于莱特币更易于挖矿,以及更高的社群共识,使得莱特币从众多所谓的“山寨币”中脱颖而出,2013年成为当时仅次于比特币的第二大加密货币。

2018年莱特币涨到历史最高价2480元人民币,流通市值一度达到1350亿人民币。历史上莱特币市值曾达到比特币总市值的6.8%。

由于比特币、莱特币主链难以开发,2013年底,以太坊发明人Vitalik Buterin 离开比特币核心开发团队,并召集了一批认可以太坊理念的开发者,启动以太坊项目。


以太坊(Ethereum)

从2017年1月开始,以太坊市值从7亿美元迅速爬升至162亿美元,在区块链资产中排名第二,仅次于比特币。2017年6月中旬,以太坊市值更是达到比特币总市值的80%。作为比特币的竞争币,以太坊绝对是最得力的干将。

当然,这是有原因的。Vitalik在设计以太坊公链时,加入了智能合约与虚拟机功能,让基于以太坊的开发,就像在Windows系统上开发应用一样方便。而且,最关键的是以太坊解决了发币、募资难题,将链上发币,变成“一键式”。

有了这些优势,以太坊吸成功引了大量资金关注,直接促成了币圈大繁荣。但是以太坊本身却存在诸多问题。

d8335c6ab46a4eafad9ccdefef9c4099.jpg

比特币与众多竞争币


柚子(EOS)

以太坊的收费机制将很多用户挡在门外,同时每秒几十笔的交易频次,更不能满足大量Dapp并发,因此EOS应运而生。

EOS是一个全新的Dapp开发平台——EOS。

EOS采用了一套全新的共识算法,即DPOS,这个共识机制在之前的Bitshare、Bteemit有了成功实践,所以被无限看好。

有了这样的共识,EOS生态发展十分迅速。目前有839个Dapp,是以太坊的8倍。市值337亿人民币,总市值最高达到比特币的10%。

EOS的成功,得益于其在应用方面的突破。而瑞波的异军突起,则得益于其在支付领域的突破。


瑞波(Ripple)

由于受到出块速度与区块链容量限制,比特币转账既慢又贵,小额转账很难得到保证,于是瑞波出现了。

Ripple成立时吸引了大量风险投资。 Google支持的高科技创业公司设法从银行机构中提取了超过5000万美元,在众筹时总资金获得了惊人的9亿美元。同时,Ripple提供全球金融解决方案,使世界能够交换价值。Ripple 的解决方案,使银行能够立即直接和确定地进行结算来降低结算成本。

作为比特币的竞争者,Ripple市值增加迅速,目前总市值1259亿人民币,今年5月19年总市值达到比特币的45%。


门罗币(Monero)

比特币最大的特点之一是匿名性,但是由于地址之间的可溯源性,一旦某一笔转账被确认身份,其他所有的交易都会被追踪到,这让那些渴望更加匿名的用户感到“不安”。

门罗币的出现,彻底解决了地址之间可追踪的“弊端”。门罗币允许资产所偶有者“发送和接收资金,而不会在Blockchain上公开显示记录。”但不幸的是,由于门罗币的高度隐私性,导致它已被黑社会和其他犯罪组织所采纳。

虽然门罗彻底匿名了,但是市值目前市值只有121亿美金,今年4月份占到比特币总市值的2.3%。

在比特币发展过程中,核心开发组起到了功不可没的作用,但是开发组内部也会产生很大的分歧,Decred 就是从核心开发组“出逃”的程序员创建。


Decred(DCR)

2015年,几位比特币核心开发人员对比特币现状不满,无法忍受比特币核心开发组垄断比特币的软件开发,认为其已经被“中央化”并且缺乏良好的管理和升级机制。在这样的背景下,他们离开了比特币团队,并开始正式创立Decred。

Decred于2015年9月首次推出,是基于社区管理系统集成到区域块链中的一种开放的和渐进的加密数字货币。

但与比特币最大的区别是,Decred采用PoW和PoS混合方式挖矿,即所有PoW产生的矿都必须先经过PoS验证才能成为合法的块。所以在 DCR 的网络中,几乎杜绝了算力垄断的现象,在一定程度上解决了去中心化项目的治理机制问题。

看来,竞争币不仅在与比特币争市值,还在与比特币争“人才”。

除了这些较为成功的加密货币项目,2017年还涌现了大量公链开发、Dapp应用为主的公链项目。这得益于行业的快速发展,这些新兴项目的体量也在逐渐增大。随着加密货币牛熊更迭,这些项目也偃旗息鼓。在此期间,比特币市值占比也从33%增加到52%,其江湖地位也逐渐稳固。

 
3 比特币的江湖地位


由于比特币的“天然缺陷”,比如交易时间缓慢,不可延展性等,导致1500种加密货币诞生,每一种都在试图克服比特币的一个或者多个缺陷。

但是比特币却始终坐“老大”位置,一统江湖。

a016e0313a734643b329c50452d9cc73.jpg

比特币与竞争币的市值变化趋势


不可否认,竞争币在2016年以来也取得了长足发展。以以太坊为例,2017年比特币的价格从1700美元左右升至9000美元左右,增幅达到了450%,在同一段时间内,以太坊实现了1000%的收益,达到了当前的700美元左右。

从收益比上来看,以太坊确实潜力无限。但是从流通量上来分析,比特币的流通量是以太坊的五倍还多。这意味着以太坊的市值还不到比特币的一半。比特币的地位已经确立的非常稳固,短时间内并不会失去世界上最有价值的加密货币这一地位。

同时有人认为,像EOS这样的有应用的公链项目,会吸引越来越多的用户。超越比特币指日可待。

但是,从用户增加速度与应用来看,EOS与以太坊生态建设正逐渐繁荣。目前EOS公链与以太坊应用总数为950多个,EOS和ETH上的Dapp总量分别是111个和839个,EOS日活达到32130,ETH为1768。

与纯应用类公链相比,比特币与这类应用型公链不同,比特币本身就是应用——钱。而比特币的地址数,目前已接近3000万,可以说秒杀这类应用型公链。

所以,从应用角度来说,比特币依然是江湖老大。

当然,这比不意味着,比特币永远会一家独大。也许随着市场发展,生态应用的繁荣,应用类公链最终崛起,独占鳌头,也不是不可能。


-------------------------
 

孕育了整个区块链行业的比特币,是否会继续领跑加密货币行业?

没人能给出确切的答案。

区块链行业的快速发展,得益于加密货币价格的不断上涨。财富效应让这个行业快速聚集了大量人才。

因此,站在行业发展角度,留给不同数字货币发展的空间还很大,这些加密货币之间也并不是竞争关系。正如李启威的观点,加密货币之间的竞争并不是胜者为王,败者为寇的游戏。

(文/零界)

半年黑客盗走20亿美元!你的数字货币,还安全吗?

攻略guigumitan 发表了文章 • 2018-10-24 10:53 • 来自相关话题

今年年初,一家日本数字货币交易所 CoinCheck 宣布遭遇黑客攻击,约 4 亿美元的新经币(NEM)被窃;

今年6月,韩国最大比特币交易平台、世界五大比特币交易所之一 Bithumb 被盗市值 3000 万美元的 token;

……

根据腾讯安全发布的《2018上半年区块链安全报告》显示,从 2013 年到 2018 年上半年,加密数字货币市场共发生过 54 起安全事件,其中 10 件重大安全事故由黑客攻击引起。仅今年上半年,黑客攻击导致 20 亿美元损失,区块链领域因安全问题损失超 27 亿美元。

为什么交易所被黑客频频得手?你的数字货币,是否安全?区块链生态系统中哪一环节更容易出问题?硅谷洞察研究院今日就试图分析、还原出一份属于区块链生态的安全图谱。


方式:传统攻击远多于新型攻击


在讨论生态安全之前,不妨先对区块链现有技术架构进行切割。硅谷洞察研究院参考业内现有的安全报告,对标准区块链架构进行简化、调整,大致可分为:底层硬件、基础层、中间层、应用层四个层次。





(区块链技术架构图,版权属于:硅谷洞察)


可以说,这众多环节里,只要稍有不慎,区块链就会受到安全的威胁、攻击。硅谷洞察研究院发现,尽管区块链属于新兴技术行业,但在遭到各类安全攻击当中,传统攻击仍居多。

荷兰应用科学研究组织与新加坡科技设计大学的研究人员曾建立了一个区块链安全事件数据库(Blckchain Insident Database),把导致资产损失的攻击事件定义为“安全事件”。那么,安全事件一共有多少起呢?从 2011 年到 2018 年,共有 86 起。造成的损失有多少呢?至少高达 35.5 亿美元。

硅谷洞察研究这 86 起攻击发现,主要是传统攻击、智能合约攻击和共识协议的攻击,三种攻击所占的比例大约为:66%、22%、12%。  

这些传统攻击包括什么呢?最典型的就是黑客攻击,常见还有用户电脑感染木马。

专注区块链生态安全的慢雾安全团队告诉密探,这是因为区块链技术并不是基于完全新的、以往没有出现过的技术打造的,而是组合了各种现有的基础设施,加入新的经济、治理模型,所以传统安全攻击会存在。比如像中心化的交易所、钱包,但背后承载形式其实是 Web 系统、移动 App。所以遭到传统攻击,是不可避免的。


攻击对象:交易所与智能合约是重点


从当前多起区块链安全事件的结果导向来看,这恰好符合业界人士对区块链世界安全问题的共识:“区块链 1.0 时代,重心是在密钥和交易所上,而区块链 2.0 时代的重心则是智能合约。”

先来说说交易所。

卡内基梅隆大学研究人员发现,从 2010 年至 2015 年间建立的 80 家交易所当中,有近一半(38家)已经关闭。其中 25 家交易所遭遇安全漏洞,其中 15 个随后关闭。对于交易所而言,在遭遇安全漏洞后同一季度关闭的可能性比没有遭遇安全漏洞的交易所,概率高出 13 倍。

如今对交易所的攻击方式有哪些呢?根据《区块链安全生存指南》中统计,主要有下面四种方式:服务器被攻击、主机安全问题、恶意程序感染、DDoS 攻击。

比如韩国交易所Youbit(原Yapizon)被盗事件,就是在交易所服务器上发现了恶意软件,这被认为是朝鲜黑客组织 Lazarus 发起的。

密探此前介绍过“比特币第一疑案”——门头沟交易所被盗事件。门头沟共发生了两次被盗,第一次在 2011 年,由于门头沟审计人员所使用的一台电脑权限被攻击导致;第二次是遭到恶意程序感染,共损失 75 万个比特币和门头沟自己的 10 万个比特币,当时这批比特币总价值约 4.5 亿美元,按今天币价来看,将近 50 亿美元!第二次攻击事件也直接导致了门头沟交易所的破产。

说完钱包和交易所,我们来看看智能合约。

新加坡国立大学研究人员 Loi Luu和研究团队曾对以太坊智能合约的潜在安全进行长期检测,他们用开源安全分析程序 Oyente 检测后发现,19366 个以太坊智能合约中,有 8833 个是有缺陷的。这意味着接近一半的智能合约是有潜在安全隐患的。

香港理工大学博士生李晓琦和研究团队曾就区块链安全发表了多篇论文,李晓琦告诉硅谷洞察研究院,“很多代币被黑客进行攻击,就是利用了合约漏洞,大都是代码层面的逻辑漏洞”,而智能合约在代码层面遭到攻击,人为因素在其中起到了重要作用。比如在写代码的过程中,一些智能合约的开发没有得到充分优化,从而导致浪费以太币、消耗过多的 Gas,甚至引起对用户节点造成 DDoS 攻击等风险。

也就是说,即使是针对智能合约或交易所发动的攻击,哪怕在中间层——智能合约代码层面的问题,也可能影响到底层节点。对再去中心化的区块链而言,安全也是“牵一发而动全身”。

慢雾安全团队认为,确实会频繁听到关于智能合约的攻击事件,但并不是说只有这些层才有漏洞,而是因为某些层的研究门槛较低,所以才会频繁听到关于这方面的攻击事件。区块链技术的每一层都有独特的攻击面,由于设计逻辑和承载形式不同,针对每一层的攻击都需要深入分析其底层或者说内部原理,挖掘设计或实现上的缺陷。





(图片来自网络,版权属于原作者)


硅谷洞察研究院根据区块链现有常见的安全漏洞,总结出了下表:





(区块链不同技术层常见攻击,版权属于:硅谷洞察)


现有解决方案:学界业界有共性


针对现有的安全问题,学界和业界提出了什么解决方案呢?

据香港理工大学博士生李晓琦介绍,计算机学术界对区块链行业的敏感度很高,因为数据存储、点对点传输、区块链共识机制、加密算法,乃至安全问题,都是计算机技术的集成应用。如今,不少高校研究团队,已针对现有安全问题,提出了相应解决方案:

比如新加坡国立大学研究人员 Loi Luu,在博士生期间提出两个开源项目。一个是针对区块链共识机制的 51% 算力威胁,提出去中心化挖矿协议——SmartPool ,另一个是前面提到的 Oyente——帮助开发者在主网部署合约之前检查智能合约漏洞的软件。Oyente 创始团队告诉密探,目前 Oyente 仍在多家区块链创业公司中使用。

荷兰与新加坡的研究人员则认为,要想减少智能合约的安全隐患,对智能合约的验证和测试则很重要,而且必须纳入智能合约的设计环节当中。因为,智能合约并不像传统的代码可以修补、迭代,相反,一旦部署到链上,是不可逆转的。当检测到漏洞时,必须部署新的智能合约来修复它。

该研究人员提出以下四种方式,作为验证和测试的工具:第一,完善测试文档,让安全测试流程标准化;第二,模糊(Fuzzing)智能合约的输入;第三,为智能合约开发变异工具;第四,搜索区块链已经部署智能合约的痕迹。

如今,市场上的创业公司针对智能合约安全问题,主要有三种方式检验,第一是测试,第二是审计,第三是形式化验证。简单说,测试依靠程序自动跑,审计靠专家的专业知识去审核,形式化验证靠的是数学方法。  

在慢雾安全团队看来,学界和业界具有众多共性,比如针对智能合约,形式化验证和自动化模糊测试,是目前业界不少团队在做的,而前面学界提出的解决方式之一,就有模糊测试。

无论是交易所,还是钱包,或者是Dapp,背后都站着广大的用户。去中心化通证交易平台 Kyber Network 则建议,从用户角度来看,特别是刚刚进入行业的非技术型用户,并不都具有阅读智能合约并判断 Dapp 真正目的的能力,所以应先从保管好自己的密钥/资产安全做起。

进行过数字货币交易的用户应该知道,数字钱包的密钥多半是一串没有任何规律的字母和数字组成,用户为了方便,通常把它保存在一个剪贴簿,当需要使用时再复制粘贴。但是,一旦自己电脑感染木马,则有可能被黑客追踪剪贴簿的地址,数字钱包就有可能被盗了。





(图片来自网络,版权属于原作者)


慢雾安全团队还建议,用户只参与通过专业安全审计机构把关的 DApp 或游戏,并且要求项目方将代码开源,杜绝后门或漏洞。


趋势:市场大,机会多,门槛高


按照腾讯安全发布的《2018上半年区块链安全报告》来看,区块链领域因安全问题损失超27亿美元,也就意味着,安全市场存在着巨大需求,因为它贯穿于区块链技术的每一个环节。

但硅谷洞察研究院发现,无论是 PitchBook 还是 CB Insight 的数据库,对区块链创业公司的类别划分中,安全并未单独成为一类,而把其跟身份认证、监管、数据储存等归位一类。慢雾安全团队认为,在任何行业发展过程中,安全一般是滞后的。在区块链行业不断发展的过程中,会伴随着安全事件的发生,给行业从业者带来警醒作用。





(截图自PitchBook 2018第三季度融资报告)


研究 PitchBook 2018年第三季度融资区块链公司发现,属于安全类别中的初创公司主要专注于交易安全,比如做比特币安全钱包的公司 Xapo 和硬件钱包公司 Ledger。Filament 和 Post-Quantum 则分别关注物联网与区块链的结合,以及区块链网络通讯安全。可见,对于区块链安全领域的创业,参与者并不多,市场很大,机会也很多。

分析 PitchBook 这几家公司可以发现,像 Xapo,成立于2012年,为用户提供在线比特币钱包、离线冷储存和基于比特币的借记卡三种服务。至今总融资额已高达4000万美元。投资人当中,就有领英创始人 Reid Hoffman、Max Levchin 等硅谷大佬。





(Greylock Partners 宣布投资Xapo)


同样做钱包的 Ledger,成立于2014年,如今总融资额高达 8500 万美元,最新一轮融资额高达7500万美元。

除了钱包公司屡获高额融资之外,交易所也瞄准了钱包。

就在 8 月,按交易量计算,全球最大加密货币交易所Binance(币安),对外第一笔收购就是移动钱包公司Trust Wallet。Trust Wallet 作为一款去中心化的加密钱包,目前主要专注于为基于以太坊区块链的数字代币提供安全存储服务,用户的私钥或其他隐私信息并不会保存在该公司的服务器上。

慢雾安全团队认为,这恰好意味着安全逐渐成为区块链的刚需,行业渴望数字资产的安全感。

但是,参与者少,融资额高,并不意味着参与者可以随时进入。总的来说,针对区块链安全生态的创业公司并不多,这是由区块链安全创业的高门槛决定的。慢雾安全团队认为,第一,是安全攻防实战经验的门槛,第二是要有区块链技术门槛。更重要的是,要守正出奇,需要创业者站在攻击者的视角去思考问题。

“你的对手是地下黑客,是亡灵军团,他们往往在暗处,他们毫不留情地收割。你得快,才能保护好用户。安全需要:唯快不破”。慢雾安全团队负责人告诉硅谷洞察研究院。

在安全事件频发的区块链领域,你持有的数字货币被盗过吗?大家又遭遇过什么安全事件?欢迎留言讨论。 查看全部
coincheck-bi-hack.jpg

今年年初,一家日本数字货币交易所 CoinCheck 宣布遭遇黑客攻击,约 4 亿美元的新经币(NEM)被窃;

今年6月,韩国最大比特币交易平台、世界五大比特币交易所之一 Bithumb 被盗市值 3000 万美元的 token;

……

根据腾讯安全发布的《2018上半年区块链安全报告》显示,从 2013 年到 2018 年上半年,加密数字货币市场共发生过 54 起安全事件,其中 10 件重大安全事故由黑客攻击引起。仅今年上半年,黑客攻击导致 20 亿美元损失,区块链领域因安全问题损失超 27 亿美元。

为什么交易所被黑客频频得手?你的数字货币,是否安全?区块链生态系统中哪一环节更容易出问题?硅谷洞察研究院今日就试图分析、还原出一份属于区块链生态的安全图谱。


方式:传统攻击远多于新型攻击


在讨论生态安全之前,不妨先对区块链现有技术架构进行切割。硅谷洞察研究院参考业内现有的安全报告,对标准区块链架构进行简化、调整,大致可分为:底层硬件、基础层、中间层、应用层四个层次。

aq1.png

(区块链技术架构图,版权属于:硅谷洞察)


可以说,这众多环节里,只要稍有不慎,区块链就会受到安全的威胁、攻击。硅谷洞察研究院发现,尽管区块链属于新兴技术行业,但在遭到各类安全攻击当中,传统攻击仍居多。

荷兰应用科学研究组织与新加坡科技设计大学的研究人员曾建立了一个区块链安全事件数据库(Blckchain Insident Database),把导致资产损失的攻击事件定义为“安全事件”。那么,安全事件一共有多少起呢?从 2011 年到 2018 年,共有 86 起。造成的损失有多少呢?至少高达 35.5 亿美元。

硅谷洞察研究这 86 起攻击发现,主要是传统攻击、智能合约攻击和共识协议的攻击,三种攻击所占的比例大约为:66%、22%、12%。  

这些传统攻击包括什么呢?最典型的就是黑客攻击,常见还有用户电脑感染木马。

专注区块链生态安全的慢雾安全团队告诉密探,这是因为区块链技术并不是基于完全新的、以往没有出现过的技术打造的,而是组合了各种现有的基础设施,加入新的经济、治理模型,所以传统安全攻击会存在。比如像中心化的交易所、钱包,但背后承载形式其实是 Web 系统、移动 App。所以遭到传统攻击,是不可避免的。


攻击对象:交易所与智能合约是重点


从当前多起区块链安全事件的结果导向来看,这恰好符合业界人士对区块链世界安全问题的共识:“区块链 1.0 时代,重心是在密钥和交易所上,而区块链 2.0 时代的重心则是智能合约。”

先来说说交易所。

卡内基梅隆大学研究人员发现,从 2010 年至 2015 年间建立的 80 家交易所当中,有近一半(38家)已经关闭。其中 25 家交易所遭遇安全漏洞,其中 15 个随后关闭。对于交易所而言,在遭遇安全漏洞后同一季度关闭的可能性比没有遭遇安全漏洞的交易所,概率高出 13 倍。

如今对交易所的攻击方式有哪些呢?根据《区块链安全生存指南》中统计,主要有下面四种方式:服务器被攻击、主机安全问题、恶意程序感染、DDoS 攻击。

比如韩国交易所Youbit(原Yapizon)被盗事件,就是在交易所服务器上发现了恶意软件,这被认为是朝鲜黑客组织 Lazarus 发起的。

密探此前介绍过“比特币第一疑案”——门头沟交易所被盗事件。门头沟共发生了两次被盗,第一次在 2011 年,由于门头沟审计人员所使用的一台电脑权限被攻击导致;第二次是遭到恶意程序感染,共损失 75 万个比特币和门头沟自己的 10 万个比特币,当时这批比特币总价值约 4.5 亿美元,按今天币价来看,将近 50 亿美元!第二次攻击事件也直接导致了门头沟交易所的破产。

说完钱包和交易所,我们来看看智能合约。

新加坡国立大学研究人员 Loi Luu和研究团队曾对以太坊智能合约的潜在安全进行长期检测,他们用开源安全分析程序 Oyente 检测后发现,19366 个以太坊智能合约中,有 8833 个是有缺陷的。这意味着接近一半的智能合约是有潜在安全隐患的。

香港理工大学博士生李晓琦和研究团队曾就区块链安全发表了多篇论文,李晓琦告诉硅谷洞察研究院,“很多代币被黑客进行攻击,就是利用了合约漏洞,大都是代码层面的逻辑漏洞”,而智能合约在代码层面遭到攻击,人为因素在其中起到了重要作用。比如在写代码的过程中,一些智能合约的开发没有得到充分优化,从而导致浪费以太币、消耗过多的 Gas,甚至引起对用户节点造成 DDoS 攻击等风险。

也就是说,即使是针对智能合约或交易所发动的攻击,哪怕在中间层——智能合约代码层面的问题,也可能影响到底层节点。对再去中心化的区块链而言,安全也是“牵一发而动全身”。

慢雾安全团队认为,确实会频繁听到关于智能合约的攻击事件,但并不是说只有这些层才有漏洞,而是因为某些层的研究门槛较低,所以才会频繁听到关于这方面的攻击事件。区块链技术的每一层都有独特的攻击面,由于设计逻辑和承载形式不同,针对每一层的攻击都需要深入分析其底层或者说内部原理,挖掘设计或实现上的缺陷。

aq2.jpg

(图片来自网络,版权属于原作者)


硅谷洞察研究院根据区块链现有常见的安全漏洞,总结出了下表:

aq3.jpg

(区块链不同技术层常见攻击,版权属于:硅谷洞察)


现有解决方案:学界业界有共性


针对现有的安全问题,学界和业界提出了什么解决方案呢?

据香港理工大学博士生李晓琦介绍,计算机学术界对区块链行业的敏感度很高,因为数据存储、点对点传输、区块链共识机制、加密算法,乃至安全问题,都是计算机技术的集成应用。如今,不少高校研究团队,已针对现有安全问题,提出了相应解决方案:

比如新加坡国立大学研究人员 Loi Luu,在博士生期间提出两个开源项目。一个是针对区块链共识机制的 51% 算力威胁,提出去中心化挖矿协议——SmartPool ,另一个是前面提到的 Oyente——帮助开发者在主网部署合约之前检查智能合约漏洞的软件。Oyente 创始团队告诉密探,目前 Oyente 仍在多家区块链创业公司中使用。

荷兰与新加坡的研究人员则认为,要想减少智能合约的安全隐患,对智能合约的验证和测试则很重要,而且必须纳入智能合约的设计环节当中。因为,智能合约并不像传统的代码可以修补、迭代,相反,一旦部署到链上,是不可逆转的。当检测到漏洞时,必须部署新的智能合约来修复它。

该研究人员提出以下四种方式,作为验证和测试的工具:第一,完善测试文档,让安全测试流程标准化;第二,模糊(Fuzzing)智能合约的输入;第三,为智能合约开发变异工具;第四,搜索区块链已经部署智能合约的痕迹。

如今,市场上的创业公司针对智能合约安全问题,主要有三种方式检验,第一是测试,第二是审计,第三是形式化验证。简单说,测试依靠程序自动跑,审计靠专家的专业知识去审核,形式化验证靠的是数学方法。  

在慢雾安全团队看来,学界和业界具有众多共性,比如针对智能合约,形式化验证和自动化模糊测试,是目前业界不少团队在做的,而前面学界提出的解决方式之一,就有模糊测试。

无论是交易所,还是钱包,或者是Dapp,背后都站着广大的用户。去中心化通证交易平台 Kyber Network 则建议,从用户角度来看,特别是刚刚进入行业的非技术型用户,并不都具有阅读智能合约并判断 Dapp 真正目的的能力,所以应先从保管好自己的密钥/资产安全做起。

进行过数字货币交易的用户应该知道,数字钱包的密钥多半是一串没有任何规律的字母和数字组成,用户为了方便,通常把它保存在一个剪贴簿,当需要使用时再复制粘贴。但是,一旦自己电脑感染木马,则有可能被黑客追踪剪贴簿的地址,数字钱包就有可能被盗了。

aq4.jpg

(图片来自网络,版权属于原作者)


慢雾安全团队还建议,用户只参与通过专业安全审计机构把关的 DApp 或游戏,并且要求项目方将代码开源,杜绝后门或漏洞。


趋势:市场大,机会多,门槛高


按照腾讯安全发布的《2018上半年区块链安全报告》来看,区块链领域因安全问题损失超27亿美元,也就意味着,安全市场存在着巨大需求,因为它贯穿于区块链技术的每一个环节。

但硅谷洞察研究院发现,无论是 PitchBook 还是 CB Insight 的数据库,对区块链创业公司的类别划分中,安全并未单独成为一类,而把其跟身份认证、监管、数据储存等归位一类。慢雾安全团队认为,在任何行业发展过程中,安全一般是滞后的。在区块链行业不断发展的过程中,会伴随着安全事件的发生,给行业从业者带来警醒作用。

aq5.jpg

(截图自PitchBook 2018第三季度融资报告)


研究 PitchBook 2018年第三季度融资区块链公司发现,属于安全类别中的初创公司主要专注于交易安全,比如做比特币安全钱包的公司 Xapo 和硬件钱包公司 Ledger。Filament 和 Post-Quantum 则分别关注物联网与区块链的结合,以及区块链网络通讯安全。可见,对于区块链安全领域的创业,参与者并不多,市场很大,机会也很多。

分析 PitchBook 这几家公司可以发现,像 Xapo,成立于2012年,为用户提供在线比特币钱包、离线冷储存和基于比特币的借记卡三种服务。至今总融资额已高达4000万美元。投资人当中,就有领英创始人 Reid Hoffman、Max Levchin 等硅谷大佬。

aq6.jpg

(Greylock Partners 宣布投资Xapo)


同样做钱包的 Ledger,成立于2014年,如今总融资额高达 8500 万美元,最新一轮融资额高达7500万美元。

除了钱包公司屡获高额融资之外,交易所也瞄准了钱包。

就在 8 月,按交易量计算,全球最大加密货币交易所Binance(币安),对外第一笔收购就是移动钱包公司Trust Wallet。Trust Wallet 作为一款去中心化的加密钱包,目前主要专注于为基于以太坊区块链的数字代币提供安全存储服务,用户的私钥或其他隐私信息并不会保存在该公司的服务器上。

慢雾安全团队认为,这恰好意味着安全逐渐成为区块链的刚需,行业渴望数字资产的安全感。

但是,参与者少,融资额高,并不意味着参与者可以随时进入。总的来说,针对区块链安全生态的创业公司并不多,这是由区块链安全创业的高门槛决定的。慢雾安全团队认为,第一,是安全攻防实战经验的门槛,第二是要有区块链技术门槛。更重要的是,要守正出奇,需要创业者站在攻击者的视角去思考问题。

“你的对手是地下黑客,是亡灵军团,他们往往在暗处,他们毫不留情地收割。你得快,才能保护好用户。安全需要:唯快不破”。慢雾安全团队负责人告诉硅谷洞察研究院。

在安全事件频发的区块链领域,你持有的数字货币被盗过吗?大家又遭遇过什么安全事件?欢迎留言讨论。

2600万TRX被盗背后的罗生门 - 第二集

特写dappreview 发表了文章 • 2019-05-06 13:58 • 来自相关话题

导读:随着新一天的调查,更多证据被各方挖掘出来,本次事件的真相正在逐渐浮出水面,戏剧化程度堪比一场年度大戏。文末还附上了wojak的财富密码。没有读过上一篇文章的读者,请先移步阅读本次事件第一集 《2600万TRX被盗背后的罗生门》

注:以下调查的信息收集全部来自于Discord频道Scam Watch、Telegram群“TronBank抱团维权”,以及DappReview与关联人的聊天记录。


 
wojak反悔退款
 

自从5月3日晚上9点wojak出现并贴出一份退款对比名单之后,再次从Discord消失,在此期间很多人开始给wojak打上Scammer(骗子)的标签,并认为“他不会退款,可能已经开上兰博基尼去度假了”,诸如此类言论不绝于耳。






5月5日中午12点

wojak再次现身,声称“我投入了8个小时写工具来给所有人退款,等我写完代码回来发现大家都在把我想象成是一个骗子,而没有意识到Tronbank才是放置后门坑了你们的人。你们原本会因此损失所有的投资。但在看到你们把我当成骗子而不是开发者后,我认为我没有任何理由把TRX退还给你们”

此番言论遭到众人反驳,wojak坚持认为自己所做的事情并不违法(illegal),自己也不是小偷,只是发起了一笔交易调用了智能合约,并且遵守了智能合约的规则。此后,wojak再也没有表示过退款的可能性,而是让所有人去找Tronbank进行索赔。


证据开始指向TSC开发者Khanh
 

5月5日中午12点

在真相依旧处于众说纷纭的迷雾之中时,telegram中某开发者(要求匿名)发现了一条关键证据,进而扭转了整个调查的方向,把更多的信息带出水面。






TTX5N2wxLeyWBSNE6UeaBjCFZbpa2FH6jr 该地址于4月28日部署了一个与事发TRX Pro合约有同样后门的“测试合约”(合约地址为 TYZ4oPdPmwZS9xTUXhnFtQkPFFTi2iAydz),并在4月30日对后门进行了测试。






如上图所示,TTX5N**该地址用同样的方式发送了0.011911 TRX调用withdraw函数,触发后门,提走自己事先存入的约100 TRX。

也就是说,在被盗时间(5月3日凌晨4点)约4天之前,竟然已经有人熟知此后门以及其调用方式。当我们去反编译该测试合约并与TRX Pro被盗合约对比时,不难发现:






反编译工具:

https://www.trustlook.com/products/smartcontractguardian

这两段代码的后门部分完全一致!

而且更为神奇的是,“测试合约”的部署时间比项目方部署的正式合约竟然早了5小时23分钟。

毫无疑问,TTX5N** 地址与本次后门事件必定脱不了关系。

而该地址的所有者是谁呢?

打开TSC的网站https://tronsmartcontract.space,点击About Us






这正是TSC的开发者Khanh所拥有的地址

至此,Discord和tg群各路开发者开始梳理Khanh地址以及Tronbank开发者地址的合约部署、调用信息,梳理出以下时间线。


惊人的时间线







以上为Discord频道中梳理的时间线(均为UTC时间),下面我们按照北京时间进行更细节的梳理。

4/28/2019 4:07 PM

TronBank开发者部署了TRX Pro的测试合约,该合约中通过反编译并没有发现后门,合约地址为:

https://tronscan.org/#/contract/TAWLPqFn33U7iaAfP6cXRdJXcBUc1ewCRJ

4/28/2019 5:35 PM

仅在一个半小时后,由TSC开发者Khanh所拥有的地址TTX5N**部署了上文提到的“测试合约”,该合约中存在后门代码,合约地址为:

https://tronscan.org/#/contract/TYZ4oPdPmwZS9xTUXhnFtQkPFFTi2iAydz

4/28/2019 10:48 AM

Tronbank开发者了部署TRX Pro的正式版合约,该合约即被盗合约,其中有后门代码,合约地址为:

https://tronscan.org/#/contract/TW9AE7u5QADp2uej9xdaNVTYtqsRuJZNxJ

4/28/2019 11:00 PM

在12分钟之后,TSC开发者Khanh调用TRX Pro的正式版合约,并发送0.011011来测试后门。该笔交易记录为:

https://tronscan.org/#/transaction/d6d89713ebdb98402ddfd1d454be394a5521c83b7d385ce2c394924a2b923c89

4/30/2019 10:12 AM

TSC开发者Khanh调用自己在4/28/2019 5:35 PM 部署的存在后门的“测试合约”,触发后门,并取走自己充进去的100 TRX,该笔交易记录为:

https://tronscan.org/#/transaction/87bf173c126c4873ad333c02d4e352bacda9bfaae4d91d0bce156eb64bd5219f

5/3/2019 4:11 AM

wojak 调用TRX Pro的正式版合约withdraw函数,第一笔转入了0.000123,并没有任何效果,交易记录为:

https://tronscan.org/#/transaction/aabfc7b6cedb2e8ce055c7fdc7a62df558213c63a33092293886b0e4b58277e5

5/3/2019 4:12 AM

1分钟后,wojak 再次调用TRX Pro的正式版合约withdraw函数,转入0.011911,成功触发后门,提走合约余额2673万TRX,交易记录为:

https://tronscan.org/#/transaction/e26666a806e24697fd049e60cf83cf412f58d85cdb0493c014cef0d29d8bdc2e

根据以上信息,可以归纳出两个事实:

1. Tronbank上线之前的测试版本合约,没有后门,但最终线上正式版存在后门;

2. TSC开发者Khanh在Tronbank测试版合约发布当天部署过一个有相同后门的合约,并且知道后门的调用方式,且在4月30日自己进行过测试。也就是说,该后门与TSC脱不了关系。

在与Tronbank团队的沟通中,开发者提到,他们是使用TSC进行编译的。(针对该言论的真实性,DappReview无法做出验证)






注:以下内容是基于现有事实依据的可能性探讨,不代表最终结论和真相,请再次传播时不要断章取义。

在第一篇文章《2600万TRX被盗背后的罗生门》中,我们曾提到过三种可能性,

可能性一:Tronbank开发者在实际部署的合约中夹杂私货放置了后门,并成功欺骗了TSC完成了另一份没有后门的代码验证。

可能性二:Tronbank团队和TSC团队合谋,部署了有后门的合约,同时TSC协助用另一个没有后门的合约完成验证。

可能性三:Tronbank团队没有在合约中放置后门,而是后门在合约部署过程中以某种方式产生。

根据以上掌握到的更新信息,第一种可能性被否决,因为整个事件中,TSC开发者是最早调用后门的人,并不存在不知情被欺骗的情况,而第三种可能性的概率极大地增加。

TSC集合了编译、部署、验证的一条龙服务,从理论上来说,如果开发者使用TSC进行编译并部署,期间确实有可能增加后门代码。

在事发当天5月3日,Discord上询问为什么TRX Pro的实际运行代码与验证代码不一致时,Khank的回应如下:











上午7点22分回应:我刚起床听到消息,让我来扫描一下所有(代码)

晚上9点18分回应:各位抱歉,我也不知道为什么他们通过了我的代码(验证)

而5月5日当Khank的地址部署过后门合约并且调用的证据出现后,在Discord网友的质疑下,Khanh的回应如下:






Mr Fahrenheit:你怎么解释你的地址对另一个合约调用过可以触发后门的交易?

Khanh:我的私钥泄露了,github的密码也泄露了

这个回应显然过于苍白,一方面人们质疑如果私钥泄露为什么官网还挂着这个地址,另一方面该地址中还有28,052 TRX (价值约4400RMB)没有被转走。






此时此刻根据已有的信息进行客观的分析,存在的可能性(注意,此处仅讨论可能性,即便该可能性极低,真相目前没有任何实锤证据)依旧有以下几种:

可能性一:Tronbank团队和TSC团队合谋,部署了有后门的合约,同时TSC协助用另一个没有后门的合约完成验证。

可能性二:Tronbank团队没有在合约中放置后门,而是后门在合约部署过程中以某种方式产生。

以上的两种可能性中,目前的证据对于而言偏向于第二种可能性,Tronbank团队目前正在多次与Khanh沟通,并将部分对话截图贴出,Tronbank团队坚持没有放置任何的后门,而是指向TSC是真正放置后门的元凶。目前虽没有决定性的证据显示后门是由Khanh放置,但是TSC和Khanh自身与后门已经脱不了干系。

可能性三:Khanh的github账号被盗,地址私钥泄露,幕后黑手另有其人。

关于这一点依照现有的证据,可能性较低,Khanh的回应含糊其辞,也并没有提供账户被盗的证据(比如github关联邮箱提示不安全登录、密码被修改等辅助信息)

至此 最终的谜题仍未解开

这一场年度大戏尚未落下帷幕

更多的证据仍待挖掘


wojak的财富密码


整个事件中,wojak的那一笔神奇的交易依旧是关注本次事件的群众口中一直谈论的话题。究竟是什么样的奇技淫巧能让自动执行的代码找到后门,并且触发后门?

在DappReview与wojak的对话中,给出了答案:






wojak的灵感来自于2018年8月的一篇论文《TEETHER: Gnawing at Ethereum to Automatically Exploit Smart Contracts》

该论文主要讲了什么呢?

    基于底层的EVM指令,提出了存在漏洞的智能合约的一种广义定义;
    提出了TEETHER工具,该工具能够对于智能合约的字节码进行自动化的漏洞识别并生成相应的漏洞利用代码;
    对于以太坊区块链中部署的38,757个智能合约进行了大规模的漏洞分析,其中TEETHER工具发现了815个合约中的漏洞,整个过程完全自动化。


用一个不恰当但是通俗的比喻来说:TEETHER工具就是一台能自动从智能合约找漏洞并且提款的ATM机。

wojak基于这篇文章做了什么事情?






1. 把TEETHER工具针对波场虚拟机做了适配

2. 收集波场上所有智能合约

3. 对所有的合约执行TEETHER工具来分析

4. 找到可能的套利机会 比如从合约A中以X的价格购买某Token,然后在合约B中以Y价格卖出(Y大于X),整个流程都是自动化执行而且合法

5. 工具会产生一系列可能产生收益的交易列表

6. 脚本自动执行并出发这些交易

本质上,那一笔神奇的交易就是这样自动触发的,连他自己都不知道发生了什么。至于wojak本身的行为是否可以定义为“黑客”,或者“违法”,此处暂且不展开深究。


有兴趣研究这篇“财富密码”的请看:

https://publications.cispa.saarland/2612/1/main.pdf

截至发稿,Tronbank已经宣布完成了链上投资数据的收集,统计完成后将按照原计划发放赔付TRX。此外,TSC开发者Khanh已经关闭了个人Twitter和Facebook。 查看全部
tronbank.jpg


导读:随着新一天的调查,更多证据被各方挖掘出来,本次事件的真相正在逐渐浮出水面,戏剧化程度堪比一场年度大戏。文末还附上了wojak的财富密码。没有读过上一篇文章的读者,请先移步阅读本次事件第一集 《2600万TRX被盗背后的罗生门

注:以下调查的信息收集全部来自于Discord频道Scam Watch、Telegram群“TronBank抱团维权”,以及DappReview与关联人的聊天记录。



 
wojak反悔退款
 

自从5月3日晚上9点wojak出现并贴出一份退款对比名单之后,再次从Discord消失,在此期间很多人开始给wojak打上Scammer(骗子)的标签,并认为“他不会退款,可能已经开上兰博基尼去度假了”,诸如此类言论不绝于耳。

201905061152261.jpg


5月5日中午12点

wojak再次现身,声称“我投入了8个小时写工具来给所有人退款,等我写完代码回来发现大家都在把我想象成是一个骗子,而没有意识到Tronbank才是放置后门坑了你们的人。你们原本会因此损失所有的投资。但在看到你们把我当成骗子而不是开发者后,我认为我没有任何理由把TRX退还给你们”

此番言论遭到众人反驳,wojak坚持认为自己所做的事情并不违法(illegal),自己也不是小偷,只是发起了一笔交易调用了智能合约,并且遵守了智能合约的规则。此后,wojak再也没有表示过退款的可能性,而是让所有人去找Tronbank进行索赔。


证据开始指向TSC开发者Khanh
 

5月5日中午12点

在真相依旧处于众说纷纭的迷雾之中时,telegram中某开发者(要求匿名)发现了一条关键证据,进而扭转了整个调查的方向,把更多的信息带出水面。

201905061152272.jpg


TTX5N2wxLeyWBSNE6UeaBjCFZbpa2FH6jr 该地址于4月28日部署了一个与事发TRX Pro合约有同样后门的“测试合约”(合约地址为 TYZ4oPdPmwZS9xTUXhnFtQkPFFTi2iAydz),并在4月30日对后门进行了测试。

201905061152273.jpg


如上图所示,TTX5N**该地址用同样的方式发送了0.011911 TRX调用withdraw函数,触发后门,提走自己事先存入的约100 TRX。

也就是说,在被盗时间(5月3日凌晨4点)约4天之前,竟然已经有人熟知此后门以及其调用方式。当我们去反编译该测试合约并与TRX Pro被盗合约对比时,不难发现:

201905061152274.jpg


反编译工具:

https://www.trustlook.com/products/smartcontractguardian

这两段代码的后门部分完全一致!

而且更为神奇的是,“测试合约”的部署时间比项目方部署的正式合约竟然早了5小时23分钟。

毫无疑问,TTX5N** 地址与本次后门事件必定脱不了关系。

而该地址的所有者是谁呢?

打开TSC的网站https://tronsmartcontract.space,点击About Us

201905061152275.jpg


这正是TSC的开发者Khanh所拥有的地址

至此,Discord和tg群各路开发者开始梳理Khanh地址以及Tronbank开发者地址的合约部署、调用信息,梳理出以下时间线。


惊人的时间线


201905061152286.jpg


以上为Discord频道中梳理的时间线(均为UTC时间),下面我们按照北京时间进行更细节的梳理。

4/28/2019 4:07 PM

TronBank开发者部署了TRX Pro的测试合约,该合约中通过反编译并没有发现后门,合约地址为:

https://tronscan.org/#/contract/TAWLPqFn33U7iaAfP6cXRdJXcBUc1ewCRJ

4/28/2019 5:35 PM

仅在一个半小时后,由TSC开发者Khanh所拥有的地址TTX5N**部署了上文提到的“测试合约”,该合约中存在后门代码,合约地址为:

https://tronscan.org/#/contract/TYZ4oPdPmwZS9xTUXhnFtQkPFFTi2iAydz

4/28/2019 10:48 AM

Tronbank开发者了部署TRX Pro的正式版合约,该合约即被盗合约,其中有后门代码,合约地址为:

https://tronscan.org/#/contract/TW9AE7u5QADp2uej9xdaNVTYtqsRuJZNxJ

4/28/2019 11:00 PM

在12分钟之后,TSC开发者Khanh调用TRX Pro的正式版合约,并发送0.011011来测试后门。该笔交易记录为:

https://tronscan.org/#/transaction/d6d89713ebdb98402ddfd1d454be394a5521c83b7d385ce2c394924a2b923c89

4/30/2019 10:12 AM

TSC开发者Khanh调用自己在4/28/2019 5:35 PM 部署的存在后门的“测试合约”,触发后门,并取走自己充进去的100 TRX,该笔交易记录为:

https://tronscan.org/#/transaction/87bf173c126c4873ad333c02d4e352bacda9bfaae4d91d0bce156eb64bd5219f

5/3/2019 4:11 AM

wojak 调用TRX Pro的正式版合约withdraw函数,第一笔转入了0.000123,并没有任何效果,交易记录为:

https://tronscan.org/#/transaction/aabfc7b6cedb2e8ce055c7fdc7a62df558213c63a33092293886b0e4b58277e5

5/3/2019 4:12 AM

1分钟后,wojak 再次调用TRX Pro的正式版合约withdraw函数,转入0.011911,成功触发后门,提走合约余额2673万TRX,交易记录为:

https://tronscan.org/#/transaction/e26666a806e24697fd049e60cf83cf412f58d85cdb0493c014cef0d29d8bdc2e

根据以上信息,可以归纳出两个事实:

1. Tronbank上线之前的测试版本合约,没有后门,但最终线上正式版存在后门;

2. TSC开发者Khanh在Tronbank测试版合约发布当天部署过一个有相同后门的合约,并且知道后门的调用方式,且在4月30日自己进行过测试。也就是说,该后门与TSC脱不了关系。

在与Tronbank团队的沟通中,开发者提到,他们是使用TSC进行编译的。(针对该言论的真实性,DappReview无法做出验证)

201905061152287.jpg


注:以下内容是基于现有事实依据的可能性探讨,不代表最终结论和真相,请再次传播时不要断章取义。

在第一篇文章《2600万TRX被盗背后的罗生门》中,我们曾提到过三种可能性,

可能性一:Tronbank开发者在实际部署的合约中夹杂私货放置了后门,并成功欺骗了TSC完成了另一份没有后门的代码验证。

可能性二:Tronbank团队和TSC团队合谋,部署了有后门的合约,同时TSC协助用另一个没有后门的合约完成验证。

可能性三:Tronbank团队没有在合约中放置后门,而是后门在合约部署过程中以某种方式产生。

根据以上掌握到的更新信息,第一种可能性被否决,因为整个事件中,TSC开发者是最早调用后门的人,并不存在不知情被欺骗的情况,而第三种可能性的概率极大地增加。

TSC集合了编译、部署、验证的一条龙服务,从理论上来说,如果开发者使用TSC进行编译并部署,期间确实有可能增加后门代码。

在事发当天5月3日,Discord上询问为什么TRX Pro的实际运行代码与验证代码不一致时,Khank的回应如下:

201905061152288.jpg


201905061152289.jpg


上午7点22分回应:我刚起床听到消息,让我来扫描一下所有(代码)

晚上9点18分回应:各位抱歉,我也不知道为什么他们通过了我的代码(验证)

而5月5日当Khank的地址部署过后门合约并且调用的证据出现后,在Discord网友的质疑下,Khanh的回应如下:

2019050611522810.jpg


Mr Fahrenheit:你怎么解释你的地址对另一个合约调用过可以触发后门的交易?

Khanh:我的私钥泄露了,github的密码也泄露了

这个回应显然过于苍白,一方面人们质疑如果私钥泄露为什么官网还挂着这个地址,另一方面该地址中还有28,052 TRX (价值约4400RMB)没有被转走。

2019050611522911.jpg


此时此刻根据已有的信息进行客观的分析,存在的可能性(注意,此处仅讨论可能性,即便该可能性极低,真相目前没有任何实锤证据)依旧有以下几种:

可能性一:Tronbank团队和TSC团队合谋,部署了有后门的合约,同时TSC协助用另一个没有后门的合约完成验证。

可能性二:Tronbank团队没有在合约中放置后门,而是后门在合约部署过程中以某种方式产生。

以上的两种可能性中,目前的证据对于而言偏向于第二种可能性,Tronbank团队目前正在多次与Khanh沟通,并将部分对话截图贴出,Tronbank团队坚持没有放置任何的后门,而是指向TSC是真正放置后门的元凶。目前虽没有决定性的证据显示后门是由Khanh放置,但是TSC和Khanh自身与后门已经脱不了干系。

可能性三:Khanh的github账号被盗,地址私钥泄露,幕后黑手另有其人。

关于这一点依照现有的证据,可能性较低,Khanh的回应含糊其辞,也并没有提供账户被盗的证据(比如github关联邮箱提示不安全登录、密码被修改等辅助信息)

至此 最终的谜题仍未解开

这一场年度大戏尚未落下帷幕

更多的证据仍待挖掘


wojak的财富密码


整个事件中,wojak的那一笔神奇的交易依旧是关注本次事件的群众口中一直谈论的话题。究竟是什么样的奇技淫巧能让自动执行的代码找到后门,并且触发后门?

在DappReview与wojak的对话中,给出了答案:

2019050611522912.jpg


wojak的灵感来自于2018年8月的一篇论文《TEETHER: Gnawing at Ethereum to Automatically Exploit Smart Contracts》

该论文主要讲了什么呢?


    基于底层的EVM指令,提出了存在漏洞的智能合约的一种广义定义;
    提出了TEETHER工具,该工具能够对于智能合约的字节码进行自动化的漏洞识别并生成相应的漏洞利用代码;
    对于以太坊区块链中部署的38,757个智能合约进行了大规模的漏洞分析,其中TEETHER工具发现了815个合约中的漏洞,整个过程完全自动化。



用一个不恰当但是通俗的比喻来说:TEETHER工具就是一台能自动从智能合约找漏洞并且提款的ATM机。

wojak基于这篇文章做了什么事情?

2019050611522913.jpg


1. 把TEETHER工具针对波场虚拟机做了适配

2. 收集波场上所有智能合约

3. 对所有的合约执行TEETHER工具来分析

4. 找到可能的套利机会 比如从合约A中以X的价格购买某Token,然后在合约B中以Y价格卖出(Y大于X),整个流程都是自动化执行而且合法

5. 工具会产生一系列可能产生收益的交易列表

6. 脚本自动执行并出发这些交易

本质上,那一笔神奇的交易就是这样自动触发的,连他自己都不知道发生了什么。至于wojak本身的行为是否可以定义为“黑客”,或者“违法”,此处暂且不展开深究。


有兴趣研究这篇“财富密码”的请看:

https://publications.cispa.saarland/2612/1/main.pdf

截至发稿,Tronbank已经宣布完成了链上投资数据的收集,统计完成后将按照原计划发放赔付TRX。此外,TSC开发者Khanh已经关闭了个人Twitter和Facebook。

2600万TRX被盗背后的罗生门

特写dappreview 发表了文章 • 2019-05-06 13:47 • 来自相关话题

导读:此次TronBank合约被盗事件再次印证了一个简单到令人发指的常识——所谓智能合约的开源并不能等同于“无条件的安全”,而且粗糙的去中心化机制可能存在被利用的中心化黑幕可能。在目前这个混沌无序的市场环境中,作为一个成熟的“韭菜”,请不要再轻易相信任何口头上的去中心化承诺。



北京时间5月3日凌晨4点12分,一笔神奇的合约调用转走了TronBank合约中的2673万TRX(价值427万RMB),合约余额归零。






仅仅在20多天前,Tronbank团队的第二个游戏BTTBank在发布3小时内即被黑客用假币攻击并盗走数千万BTT(并非1.8亿BTT),事隔不到一个月,第三款游戏TRX Pro于4月29日20点正式上线,几天时间之内,合约余额已经突破2500万TRX。

这是否是TRON生态上的Dapp又一次被黑客盯上并成功洗劫一空?






而接下来发生的这一切

更让所有人始料未及

 
偶然触发的Bug?
 

合约余额归零后,项目方telegram群里面骗局和黑客的质疑声不绝于耳,DappReview和小伙伴们开始着手研究到底发生了什么。"黑客"的地址为THeRTTCvN4SHEVYNqcLVLNGGVsWLR4smyH,利用DappReview的玩家数据查看工具,可以看到该地址的所有者像是一个正常的Dapp玩家,从今年1月到5月该玩家涉猎过数十个Dapp,其中TronGoo是他玩过最多的游戏,从TronGoo官方排行榜可以看到他就是排名第二的大户玩家。





数据来源 https://player.dapp.review/

发生被盗事件约2个小时之后,在一个名为Scam Watch(骗局观察)的Discord频道中,调走这一笔2673万TRX的地址THeRTT**拥有者wojak现身了。






根据wojak的说法,他写了个脚本在分析波场虚拟机字节码,批量扫描合约并发起交易看看有没有什么能赚到钱的方法,结果偶然之中命中了Tronbank合约的bug。一开始连他自己都不知道这笔钱是从Tronbank打过来的。

社区里部分人建议wojak把钱还给Tronbank开发者,而wojak认为这不是他的问题,开发者应该自己写测试例子,做审计以及至少跑一些形式化验证(很显然他们啥都没干),他愿意把这笔钱原封不动还给Tronbank的每一个投资者,而不是项目方的开发者。

wojak要求参与了Tronbank的投资者发给他投资的交易hash值以及自己的地址,他将写一个脚本进行验证,并承诺退款给有损失的Tronbank投资人。

 
刻意埋藏的后门?
 

随着调查的深入,那一笔触发Bug的交易被放回桌面上被仔细的剖析。我们再来看一下:






注意到,该笔交易调用的是合约里withdraw函数,发送的金额为0.011911 TRX,要注意在Tronbank正常的业务逻辑下,调用withdraw函数是不应该发送任何TRX的,金额应该为0. 这一点在源代码中就可以验证。

像Tronbank这样资金盘属性的Dapp,往往都会把代码开源让合约和逻辑变得透明可信来吸引投资人,在网站最明显的位置,也标明了通过第三方验证工具tronsmartcontract.space(以下简称TSC)进行合约代码验证后的代码信息。











           
从TSC点开源代码之后,找到withdraw函数,函数第一行会先调用_withdraw()来取得可以提取的TRX金额,在_withdraw()函数的第一行我们可以看到:

require(msg.value == 0, "wrong trx amount"); 

这一行代码的意思是要求该笔交易发送的TRX金额必须为零,否则无法继续执行,交易会被REVERT。

也就是说,按照开源代码的逻辑,那一笔触发Bug的交易根本不可能发生。

现实变成了,TRX Pro的合约实际执行逻辑和所谓“开源”的代码逻辑并不一致。

这里补充说明一下,所谓的代码认证过程是这样:

1. 开发者在主网发布合约

2. 开发者在TSC上传代码,选择编译版本,编译为bytecodes,

3. TSC把步骤2中的bytecodes和步骤1中发布合约的bytecodes做匹配,匹配成功,则认证通过,理论上多或者少一个空格都不行

进一步深扒,从tronscan上找到TRX Pro合约的bytecodes,用反编译工具进行处理得到:






反编译工具:

https://www.trustlook.com/products/smartcontractguardian

在withdraw函数中,多了一个判断 else if ((0x2E87 == msg.value)),如果满足条件,那么就会把合约的余额全部转给交易发起者!我们把16进制的数字0x2E87转换成10进制,也就是11911,要知道TRX的精度为6位,11911所对应的TRX金额就是0.011911 TRX... 而这一部分判断在TSC的开源代码中是不存在的,看起来就像是是一个被藏起来没有公布的后门。

用更简单的语言梳理一遍:

1. 在主网上部署的合约,通过反编译发现,调用withdraw函数时,如果发送金额等于0.011911 TRX,则会转移全部合约余额;

2. 在TSC上认证过的开源代码中,如果发送金额不为零调用withdraw函数,交易会被撤回。

那么一切就很清晰了,实际发生的与第一点完全吻合,主网的代码运行没有问题,即TronBank在主网部署的合约中存在一个可以直接提走合约余额的后门代码,而有意思的在于第二点,明明不一样的代码逻辑是如何上传后通过了TSC的认证过程?

根据已有的信息,断定“是开发者在合约之中放置后门”这个结论仍然为时过早,目前我们可以得出的客观结论只有两点:

1. TRX Pro在主网的合约中存在后门

2. TSC上认证过的代码与实际合约运行逻辑不符

注:以下内容是基于现有事实依据的可能性探讨,不代表最终结论和真相,请在传播时不要断章取义。

至于后门是谁放置的,如何放置的?目前没有任何实锤证据,有的人认为是Tronbank开发者,有的人认为开发者的实力还不足以通过欺骗TSC验证与实际部署所不同的代码。

客观来分析存在的可能性(注意,此处仅讨论可能性,即便该可能性极低,真相目前没有任何实锤证据),有以下几种:

可能性一:Tronbank开发者在实际部署的合约中夹杂私货放置了后门,并成功欺骗了TSC完成了另一份没有后门的代码验证。

在探讨这种可能性时,如何欺骗TSC成为了焦点,如果真的TSC的验证存在Bug,那么这意味着之前所有通过TSC认证并标榜开源的Dapp都不再可信和透明,事实上,在Discord群里,TSC的开发者Khanh承认代码已经很久没有维护并存在bug的可能性,也有其他开发者证实自己实际部署的代码和通过认证的代码可以不完全相同。

另一方面,Tronbank开发者在Telegram群中多次声称团队没有在合约中放置任何的后门,有一种自证清白的方式是:官方给出部署时的源代码以及编译方式(包括编译工具以及版本),理论上任何人按照同样方式编译出来的bytecode和线上部署的TRX Pro合约应该一致。但当我们提出该质疑时,官方回复如下:






这个回复的内容如果当真,则该事件将更加戏剧化和复杂化,参考可能性三

可能性二:Tronbank团队和TSC团队合谋,部署了有后门的合约,同时TSC协助用另一个没有后门的合约完成验证。

这是在“欺骗TSC”很难成立的前提下提出的可能性,TSC最终打上验证的标签其实是中心化的行为,完全可以人为操作,但对于TSC作为一个第三方合约验证工具来说,目前尚无竞品,做这样的事情无疑严重损伤自己的品牌,串通合谋是在性价比太低。

可能性三:Tronbank团队没有在合约中放置后门,而是后门在合约部署过程中以某种方式产生。

这种可能性是基于“可能一”中的官方回复的一种暗示,即项目方在合约部署时确实使用的是没有后门的合约,编译工具在部署合约到主网的过程中出现了猫腻,加入了有问题的后门。但项目方目前没有提供任何的可验证信息,使用的编译工具,以及同样代码两次编译不同结果的信息。

不论如何,TronBank开发者实际部署的代码原样我们不得而知,也无法验证真伪,该事件的真相需要等待各方提供更有说服力的证据才能被逐渐还原出来。

至少在此刻,我们还不能下定论,究竟是谁埋下了这个后门。

 
投资者的钱怎么办?
 

在以上错综复杂的信息之下,大部分玩家已经放弃了追查真相,而更关注的则是找回损失。

在承诺退款并要求蒙受损失的投资人发送交易信息之后,wojak整整失联了超过12小时,这期间wojak账户里的钱大部分被转移到了币安交易所。有人开始怀疑wojak并没有打算退钱准备捐款跑路,还有人认为这是TronBank项目方监守自盗,wojak就是项目方之一。

5月3日下午2点44分

另一边,在Tronbank的官方群里,管理员贴出的置顶消息是“TRX Pro被黑客THeRTTCvN4SHEVYNqcLVLNGGVsWLR4smyH攻击,目前开发团队正在紧急处理,将会及时在群里更新消息”






5月3日晚上9点13分






wojak再次现身,说自己花4个多小时写了脚本从链上获取到tronbank的投资数据来跟收集到的损失信息对比,其中有不少人虚报损失,甚至有完全没有参与过投资的用户也来谎报损失,仅有少数人诚实地汇报了数字。wojak也把比对信息贴了出来https://pastebin.com/raw/gMtxCw97。

5月4日下午1点24分

整整一天之后,Tronbank项目方再次发出通知,他们正在联系wojak进行退款,如果wojak在5月4日晚7点时没有任何回复,官方将提供给投资人的补偿方案。






5月4日下午3点 - 4点

针对之前所承诺的24小时内给出事件分析报告,官方将再次延期,声称将联系安全公司,TSC以及波场官方做更多的调查。同时评论到,有很多细节仍需确认,之前从未遇到类似情况,这有可能是一个精彩的故事。











5月4日晚上7点

Tronbank项目方如约公布了赔偿方案,令大部分人吃惊的是项目方没有跑路,而是承诺在24小时内收集信息,并在72小时内进行全额赔付。如果赔付照常发放,这可能是Dapp历史上最大的一次项目方赔付。






而此次赔付通知,可以说是给投资者吃了一颗定心丸,使得大部分用户打消了“后门是由开发者留下”的疑虑。但在真相露出水面之前,DappReview依旧保留质疑的态度,等待项目方公开更多的调查报告。

 
结语
 

原本看起来是一起常见的黑客攻击事件,却喜剧般演化成一场罗生门。究竟是开发者留后门,巧被程序员打开,还是如项目方所说有更底层的问题存在?除了当局者本身,无人知晓。

投资者们对于去中心化的信任(TSC提供的代码认证)崩塌,寄托于中心化的信任(起初是wojak的承诺,后来是Tronbank的赔付公告)。虽然严格意义上来讲最终的真相可能并不是“去中心化的锅”,但对于普通用户而言,很难区分其中差异,大部分用户的认知只能停留在“智能合约为什么开源了明明没有问题还被黑了?”

在本次事件中,虽然Tronbank承诺赔付投资人受损的利益,但受伤的无疑是波场的整个Dapp生态,基于TSC认证的开源代码所产生的信任和背书已经毫无价值,在波场官方出来验证工具之前,DappReview建议各位Dapp玩家不要轻信项目方所谓代码开源言论。

此外,截至到发稿,wojak尚未再次露面,也未将资金退还给任何投资人。
 
 
续集:2600万TRX被盗背后的罗生门 - 第二集 查看全部
tronbank.jpg


导读:此次TronBank合约被盗事件再次印证了一个简单到令人发指的常识——所谓智能合约的开源并不能等同于“无条件的安全”,而且粗糙的去中心化机制可能存在被利用的中心化黑幕可能。在目前这个混沌无序的市场环境中,作为一个成熟的“韭菜”,请不要再轻易相信任何口头上的去中心化承诺。




北京时间5月3日凌晨4点12分,一笔神奇的合约调用转走了TronBank合约中的2673万TRX(价值427万RMB),合约余额归零。

201905050745301.jpg


仅仅在20多天前,Tronbank团队的第二个游戏BTTBank在发布3小时内即被黑客用假币攻击并盗走数千万BTT(并非1.8亿BTT),事隔不到一个月,第三款游戏TRX Pro于4月29日20点正式上线,几天时间之内,合约余额已经突破2500万TRX。

这是否是TRON生态上的Dapp又一次被黑客盯上并成功洗劫一空?

201905050745302.jpg


而接下来发生的这一切

更让所有人始料未及

 
偶然触发的Bug?
 

合约余额归零后,项目方telegram群里面骗局和黑客的质疑声不绝于耳,DappReview和小伙伴们开始着手研究到底发生了什么。"黑客"的地址为THeRTTCvN4SHEVYNqcLVLNGGVsWLR4smyH,利用DappReview的玩家数据查看工具,可以看到该地址的所有者像是一个正常的Dapp玩家,从今年1月到5月该玩家涉猎过数十个Dapp,其中TronGoo是他玩过最多的游戏,从TronGoo官方排行榜可以看到他就是排名第二的大户玩家。

201905050745303.jpg

数据来源 https://player.dapp.review/

发生被盗事件约2个小时之后,在一个名为Scam Watch(骗局观察)的Discord频道中,调走这一笔2673万TRX的地址THeRTT**拥有者wojak现身了。

201905050745304.jpg


根据wojak的说法,他写了个脚本在分析波场虚拟机字节码,批量扫描合约并发起交易看看有没有什么能赚到钱的方法,结果偶然之中命中了Tronbank合约的bug。一开始连他自己都不知道这笔钱是从Tronbank打过来的。

社区里部分人建议wojak把钱还给Tronbank开发者,而wojak认为这不是他的问题,开发者应该自己写测试例子,做审计以及至少跑一些形式化验证(很显然他们啥都没干),他愿意把这笔钱原封不动还给Tronbank的每一个投资者,而不是项目方的开发者。

wojak要求参与了Tronbank的投资者发给他投资的交易hash值以及自己的地址,他将写一个脚本进行验证,并承诺退款给有损失的Tronbank投资人。

 
刻意埋藏的后门?
 

随着调查的深入,那一笔触发Bug的交易被放回桌面上被仔细的剖析。我们再来看一下:

201905050745301.jpg


注意到,该笔交易调用的是合约里withdraw函数,发送的金额为0.011911 TRX,要注意在Tronbank正常的业务逻辑下,调用withdraw函数是不应该发送任何TRX的,金额应该为0. 这一点在源代码中就可以验证。

像Tronbank这样资金盘属性的Dapp,往往都会把代码开源让合约和逻辑变得透明可信来吸引投资人,在网站最明显的位置,也标明了通过第三方验证工具tronsmartcontract.space(以下简称TSC)进行合约代码验证后的代码信息。

201905050745316.jpg


201905050745317.jpg


           
从TSC点开源代码之后,找到withdraw函数,函数第一行会先调用_withdraw()来取得可以提取的TRX金额,在_withdraw()函数的第一行我们可以看到:

require(msg.value == 0, "wrong trx amount"); 

这一行代码的意思是要求该笔交易发送的TRX金额必须为零,否则无法继续执行,交易会被REVERT。

也就是说,按照开源代码的逻辑,那一笔触发Bug的交易根本不可能发生。

现实变成了,TRX Pro的合约实际执行逻辑和所谓“开源”的代码逻辑并不一致。

这里补充说明一下,所谓的代码认证过程是这样:

1. 开发者在主网发布合约

2. 开发者在TSC上传代码,选择编译版本,编译为bytecodes,

3. TSC把步骤2中的bytecodes和步骤1中发布合约的bytecodes做匹配,匹配成功,则认证通过,理论上多或者少一个空格都不行

进一步深扒,从tronscan上找到TRX Pro合约的bytecodes,用反编译工具进行处理得到:

201905050745318.jpg


反编译工具:

https://www.trustlook.com/products/smartcontractguardian

在withdraw函数中,多了一个判断 else if ((0x2E87 == msg.value)),如果满足条件,那么就会把合约的余额全部转给交易发起者!我们把16进制的数字0x2E87转换成10进制,也就是11911,要知道TRX的精度为6位,11911所对应的TRX金额就是0.011911 TRX... 而这一部分判断在TSC的开源代码中是不存在的,看起来就像是是一个被藏起来没有公布的后门。

用更简单的语言梳理一遍:

1. 在主网上部署的合约,通过反编译发现,调用withdraw函数时,如果发送金额等于0.011911 TRX,则会转移全部合约余额;

2. 在TSC上认证过的开源代码中,如果发送金额不为零调用withdraw函数,交易会被撤回。

那么一切就很清晰了,实际发生的与第一点完全吻合,主网的代码运行没有问题,即TronBank在主网部署的合约中存在一个可以直接提走合约余额的后门代码,而有意思的在于第二点,明明不一样的代码逻辑是如何上传后通过了TSC的认证过程?

根据已有的信息,断定“是开发者在合约之中放置后门”这个结论仍然为时过早,目前我们可以得出的客观结论只有两点:

1. TRX Pro在主网的合约中存在后门

2. TSC上认证过的代码与实际合约运行逻辑不符

注:以下内容是基于现有事实依据的可能性探讨,不代表最终结论和真相,请在传播时不要断章取义。

至于后门是谁放置的,如何放置的?目前没有任何实锤证据,有的人认为是Tronbank开发者,有的人认为开发者的实力还不足以通过欺骗TSC验证与实际部署所不同的代码。

客观来分析存在的可能性(注意,此处仅讨论可能性,即便该可能性极低,真相目前没有任何实锤证据),有以下几种:

可能性一:Tronbank开发者在实际部署的合约中夹杂私货放置了后门,并成功欺骗了TSC完成了另一份没有后门的代码验证。

在探讨这种可能性时,如何欺骗TSC成为了焦点,如果真的TSC的验证存在Bug,那么这意味着之前所有通过TSC认证并标榜开源的Dapp都不再可信和透明,事实上,在Discord群里,TSC的开发者Khanh承认代码已经很久没有维护并存在bug的可能性,也有其他开发者证实自己实际部署的代码和通过认证的代码可以不完全相同。

另一方面,Tronbank开发者在Telegram群中多次声称团队没有在合约中放置任何的后门,有一种自证清白的方式是:官方给出部署时的源代码以及编译方式(包括编译工具以及版本),理论上任何人按照同样方式编译出来的bytecode和线上部署的TRX Pro合约应该一致。但当我们提出该质疑时,官方回复如下:

201905050745329.jpg


这个回复的内容如果当真,则该事件将更加戏剧化和复杂化,参考可能性三

可能性二:Tronbank团队和TSC团队合谋,部署了有后门的合约,同时TSC协助用另一个没有后门的合约完成验证。

这是在“欺骗TSC”很难成立的前提下提出的可能性,TSC最终打上验证的标签其实是中心化的行为,完全可以人为操作,但对于TSC作为一个第三方合约验证工具来说,目前尚无竞品,做这样的事情无疑严重损伤自己的品牌,串通合谋是在性价比太低。

可能性三:Tronbank团队没有在合约中放置后门,而是后门在合约部署过程中以某种方式产生。

这种可能性是基于“可能一”中的官方回复的一种暗示,即项目方在合约部署时确实使用的是没有后门的合约,编译工具在部署合约到主网的过程中出现了猫腻,加入了有问题的后门。但项目方目前没有提供任何的可验证信息,使用的编译工具,以及同样代码两次编译不同结果的信息。

不论如何,TronBank开发者实际部署的代码原样我们不得而知,也无法验证真伪,该事件的真相需要等待各方提供更有说服力的证据才能被逐渐还原出来。

至少在此刻,我们还不能下定论,究竟是谁埋下了这个后门。

 
投资者的钱怎么办?
 

在以上错综复杂的信息之下,大部分玩家已经放弃了追查真相,而更关注的则是找回损失。

在承诺退款并要求蒙受损失的投资人发送交易信息之后,wojak整整失联了超过12小时,这期间wojak账户里的钱大部分被转移到了币安交易所。有人开始怀疑wojak并没有打算退钱准备捐款跑路,还有人认为这是TronBank项目方监守自盗,wojak就是项目方之一。

5月3日下午2点44分

另一边,在Tronbank的官方群里,管理员贴出的置顶消息是“TRX Pro被黑客THeRTTCvN4SHEVYNqcLVLNGGVsWLR4smyH攻击,目前开发团队正在紧急处理,将会及时在群里更新消息”

2019050507453210.jpg


5月3日晚上9点13分

2019050507453211.jpg


wojak再次现身,说自己花4个多小时写了脚本从链上获取到tronbank的投资数据来跟收集到的损失信息对比,其中有不少人虚报损失,甚至有完全没有参与过投资的用户也来谎报损失,仅有少数人诚实地汇报了数字。wojak也把比对信息贴了出来https://pastebin.com/raw/gMtxCw97。

5月4日下午1点24分

整整一天之后,Tronbank项目方再次发出通知,他们正在联系wojak进行退款,如果wojak在5月4日晚7点时没有任何回复,官方将提供给投资人的补偿方案。

2019050507453212.jpg


5月4日下午3点 - 4点

针对之前所承诺的24小时内给出事件分析报告,官方将再次延期,声称将联系安全公司,TSC以及波场官方做更多的调查。同时评论到,有很多细节仍需确认,之前从未遇到类似情况,这有可能是一个精彩的故事。

2019050507453213.jpg


2019050507453314.jpg


5月4日晚上7点

Tronbank项目方如约公布了赔偿方案,令大部分人吃惊的是项目方没有跑路,而是承诺在24小时内收集信息,并在72小时内进行全额赔付。如果赔付照常发放,这可能是Dapp历史上最大的一次项目方赔付。

2019050507453315.jpg


而此次赔付通知,可以说是给投资者吃了一颗定心丸,使得大部分用户打消了“后门是由开发者留下”的疑虑。但在真相露出水面之前,DappReview依旧保留质疑的态度,等待项目方公开更多的调查报告。

 
结语
 

原本看起来是一起常见的黑客攻击事件,却喜剧般演化成一场罗生门。究竟是开发者留后门,巧被程序员打开,还是如项目方所说有更底层的问题存在?除了当局者本身,无人知晓。

投资者们对于去中心化的信任(TSC提供的代码认证)崩塌,寄托于中心化的信任(起初是wojak的承诺,后来是Tronbank的赔付公告)。虽然严格意义上来讲最终的真相可能并不是“去中心化的锅”,但对于普通用户而言,很难区分其中差异,大部分用户的认知只能停留在“智能合约为什么开源了明明没有问题还被黑了?”

在本次事件中,虽然Tronbank承诺赔付投资人受损的利益,但受伤的无疑是波场的整个Dapp生态,基于TSC认证的开源代码所产生的信任和背书已经毫无价值,在波场官方出来验证工具之前,DappReview建议各位Dapp玩家不要轻信项目方所谓代码开源言论。

此外,截至到发稿,wojak尚未再次露面,也未将资金退还给任何投资人。
 
 
续集:2600万TRX被盗背后的罗生门 - 第二集

闪电网络存在固有费用漏洞?用户在无误操作下仍会丢失资金

资讯ccvalue 发表了文章 • 2019-04-10 18:47 • 来自相关话题

Peter R Rizun 是比特币无限(Bitcoin Unlimited)首席科学家,他最近对于解决比特币可扩展问题而提出的第二层协议闪电网络发表了令人震惊的看法。Peter R Rizun声称,闪电网络用户存在固有费用漏洞,会在没有做任何错事的情况下丢失所有资金。

闪电网络是比特币的第二层解决方案,允许用户进行链下支付,从而确保比特币交易速度更快,成本也更低。闪电网络依赖于底层技术(即比特币区块链),但主要支持的是金额较小的交易需要。用户无需在区块链上记录付款即可进行支付,直到最终被结算。此外,闪电网络未来可能还会扮演多币种路由网络的角色。

然而,Peter R Rizun认为在比特币第一层收费高昂且不稳定的环境中,闪电网络用户会在自己没有任何过错的情形丢失所有的钱,因为当对区块链空间需求激增的时候,比特币的区块大小限制了高额且不稳定的费用。

对此,康奈尔大学教授Emin Gur Sirer表示:

    “中本聪设计的比特币区块并没有考虑大部分被填满的情况,而且之后的开发人员也没有设计出费用稳定且可预测的收费机制。”


此外,一名来自Reddit论坛的用户“Jungans”认为闪电网络这种“丢失资金”的情况与分散在一些未支付交易输出(UTXO)上的链上资金并不一样。对此,Peter R Rizun澄清说,闪电网络的问题与未支付交易输出是两个完全不同的情况,并做了一个详细的解释:

    想象一下,当你打开一个闪电网络通道,里面你有50美元的余额。也许你会向通道合作伙伴支付一些费用,假设这笔费用是25美元,此时你有25美元,他有25美元。但随后通道费用从0增加到了10美元,所以你不得不从自己仅有的25美元里再转出10美元到“费用桶(fee bucket)里”,这样你现在只有15美元。接下来,如果费用上涨到20美元,你需要从自己的余额里再拿出另外10美元并将其转入到费用桶里,所以现在你的余额只剩5美元了。

    但是费用在不断上涨,而且你的通道合作伙伴会非常担心,很快你就无法拥有足够的账户余额来支付费用了,而且通道合作伙伴也无法声明获得自己应得的25美元。所以,如果你通道余额没钱的时候,他就会强行关闭通道。这样会导致一个结果,即你的所有余额都会进入到费用桶里,然后通道被关闭,再把25美元退还给你的通道合作伙伴,但此时你却一无所获,你的通道合作伙伴现在要做的就是等待费用下降。

    也许一周之后,费用会降低到0美元,但此时你已经支出了25美元,而你的通道合作伙伴支出的金额为0美元。换句话说,这期间你并没有做过任何错事,但却“莫名其妙”地赔钱了。


最近,闪电网络由于即将“熄灭”的闪电火炬活动引起了社区极大地关注,通道容量也创下了500万美元的历史新高,此外现在闪电网络已经覆盖到了全球131个国家/地区。


原文: 
https://ambcrypto.com/bitcoins-lightning-network-users-can-lose-all-their-money-through-no-fault-of-their-own-says-peter-r-rizun/ https://www.reddit.com/r/btc/comments/balwtc/peter_r_rizun_a_lightning_user_can_lose_all_of/

碳链价值编译组出品

编译:氪12 查看全部
bitcoin-lightning-800x450.jpg

Peter R Rizun 是比特币无限(Bitcoin Unlimited)首席科学家,他最近对于解决比特币可扩展问题而提出的第二层协议闪电网络发表了令人震惊的看法。Peter R Rizun声称,闪电网络用户存在固有费用漏洞,会在没有做任何错事的情况下丢失所有资金。

闪电网络是比特币的第二层解决方案,允许用户进行链下支付,从而确保比特币交易速度更快,成本也更低。闪电网络依赖于底层技术(即比特币区块链),但主要支持的是金额较小的交易需要。用户无需在区块链上记录付款即可进行支付,直到最终被结算。此外,闪电网络未来可能还会扮演多币种路由网络的角色。

然而,Peter R Rizun认为在比特币第一层收费高昂且不稳定的环境中,闪电网络用户会在自己没有任何过错的情形丢失所有的钱,因为当对区块链空间需求激增的时候,比特币的区块大小限制了高额且不稳定的费用。

对此,康奈尔大学教授Emin Gur Sirer表示:


    “中本聪设计的比特币区块并没有考虑大部分被填满的情况,而且之后的开发人员也没有设计出费用稳定且可预测的收费机制。”



此外,一名来自Reddit论坛的用户“Jungans”认为闪电网络这种“丢失资金”的情况与分散在一些未支付交易输出(UTXO)上的链上资金并不一样。对此,Peter R Rizun澄清说,闪电网络的问题与未支付交易输出是两个完全不同的情况,并做了一个详细的解释:


    想象一下,当你打开一个闪电网络通道,里面你有50美元的余额。也许你会向通道合作伙伴支付一些费用,假设这笔费用是25美元,此时你有25美元,他有25美元。但随后通道费用从0增加到了10美元,所以你不得不从自己仅有的25美元里再转出10美元到“费用桶(fee bucket)里”,这样你现在只有15美元。接下来,如果费用上涨到20美元,你需要从自己的余额里再拿出另外10美元并将其转入到费用桶里,所以现在你的余额只剩5美元了。

    但是费用在不断上涨,而且你的通道合作伙伴会非常担心,很快你就无法拥有足够的账户余额来支付费用了,而且通道合作伙伴也无法声明获得自己应得的25美元。所以,如果你通道余额没钱的时候,他就会强行关闭通道。这样会导致一个结果,即你的所有余额都会进入到费用桶里,然后通道被关闭,再把25美元退还给你的通道合作伙伴,但此时你却一无所获,你的通道合作伙伴现在要做的就是等待费用下降。

    也许一周之后,费用会降低到0美元,但此时你已经支出了25美元,而你的通道合作伙伴支出的金额为0美元。换句话说,这期间你并没有做过任何错事,但却“莫名其妙”地赔钱了。



最近,闪电网络由于即将“熄灭”的闪电火炬活动引起了社区极大地关注,通道容量也创下了500万美元的历史新高,此外现在闪电网络已经覆盖到了全球131个国家/地区。


原文: 
https://ambcrypto.com/bitcoins-lightning-network-users-can-lose-all-their-money-through-no-fault-of-their-own-says-peter-r-rizun/ https://www.reddit.com/r/btc/comments/balwtc/peter_r_rizun_a_lightning_user_can_lose_all_of/

碳链价值编译组出品


编译:氪12

创始人奖励让Zcash所向披靡?这个漏洞花了近1年才解决

项目8btc 发表了文章 • 2019-02-06 12:16 • 来自相关话题

和很多加密货币爱好者不同,爱德华·斯诺登(Edward Snowden)完全不介意Zcash有创始人奖励这件事。这位前CIA(美国中情局)雇员近日再次在推特上表示了自己对这一匿名数字资产的支持。

在斯诺登看来,创始人奖励是一种经济激励,能够资助Zcash团队解决这一项目遇到的问题,例如发现并修复漏洞。然而,加密货币社区其他成员指出,就算没有创始人奖励,很多项目团队同样愿意修复代码库中存在的问题。

数字货币社区的大多数人都认为创始人奖励违背了加密货币和去中心化的精神。但斯诺登说,这样的奖励可以吸引更多人才为Zcash项目做贡献,这是非常重要的。他认为只有源源不断的资金才能让开发者在恶意第三方出现之前发现并解决问题。

就在11个月以前,Zcash开发者就发现了这样一个漏洞。今日,Zcash官方团队公布其发现了代码漏洞,并附上了解决方法。

该团队将其发现的问题称为“伪造漏洞”(counterfeiting vulnerability)。这个漏洞最开始是在去年3月份发现的,而Zcash开发者当时决定不对外公开,因为担心攻击者可能会利用这个漏洞发起攻击。而如今这一漏洞已经修复完成,Zcash用户无需进行任何操作。

Zcash团队表示:

    该漏洞允许攻击者在使用本文所描述的参数的任意系统中创建伪造的屏蔽值(shielded value)。


Zcash开发者指出,目前其网络中并未因这一漏洞而出现任何攻击,因为发现这个漏洞本身就需要非常丰富的经验和知识。

斯诺登说,Zcash的创始人奖励(矿工每挖出一个区块所获奖励的20%)帮助解决了这一漏洞:

    很多人都问我为什么会喜欢设置了创始人奖励的Zcash。原因如下:这些资金能够资助一支高质量的团队,他们可能发现并且消灭重大内部漏洞,让攻击者无机可乘。有些项目只能在造成资金损失之后才能发现漏洞。







然而,有网友反驳了他的观点,强调其他项目即使没有创始人奖励也能够解决代码漏洞。比特币和门罗币等加密货币都不需要依靠向一个中心化的开发者团队支付固定的资金,他们的开发者依然能够快速修复漏洞。事实上,近期比特币的某个漏洞在被发现之后只花了几天的时间就修复完成了。






有意思的是,Zcash的官方声明中强调,这一代码漏洞已经存在数年时间。如果按照斯诺登的逻辑,或许创始人奖励再高20%,他们解决漏洞的速度也会快一点。


原文:https://www.newsbtc.com/2019/02/05/snowden-zcash-founders-reward/
作者:RICK D.
编译:Wendy 查看全部
201902060330524209.jpg

和很多加密货币爱好者不同,爱德华·斯诺登(Edward Snowden)完全不介意Zcash有创始人奖励这件事。这位前CIA(美国中情局)雇员近日再次在推特上表示了自己对这一匿名数字资产的支持。

在斯诺登看来,创始人奖励是一种经济激励,能够资助Zcash团队解决这一项目遇到的问题,例如发现并修复漏洞。然而,加密货币社区其他成员指出,就算没有创始人奖励,很多项目团队同样愿意修复代码库中存在的问题。

数字货币社区的大多数人都认为创始人奖励违背了加密货币和去中心化的精神。但斯诺登说,这样的奖励可以吸引更多人才为Zcash项目做贡献,这是非常重要的。他认为只有源源不断的资金才能让开发者在恶意第三方出现之前发现并解决问题。

就在11个月以前,Zcash开发者就发现了这样一个漏洞。今日,Zcash官方团队公布其发现了代码漏洞,并附上了解决方法。

该团队将其发现的问题称为“伪造漏洞”(counterfeiting vulnerability)。这个漏洞最开始是在去年3月份发现的,而Zcash开发者当时决定不对外公开,因为担心攻击者可能会利用这个漏洞发起攻击。而如今这一漏洞已经修复完成,Zcash用户无需进行任何操作。

Zcash团队表示:


    该漏洞允许攻击者在使用本文所描述的参数的任意系统中创建伪造的屏蔽值(shielded value)。



Zcash开发者指出,目前其网络中并未因这一漏洞而出现任何攻击,因为发现这个漏洞本身就需要非常丰富的经验和知识。

斯诺登说,Zcash的创始人奖励(矿工每挖出一个区块所获奖励的20%)帮助解决了这一漏洞:


    很多人都问我为什么会喜欢设置了创始人奖励的Zcash。原因如下:这些资金能够资助一支高质量的团队,他们可能发现并且消灭重大内部漏洞,让攻击者无机可乘。有些项目只能在造成资金损失之后才能发现漏洞。



201902060331251450.png


然而,有网友反驳了他的观点,强调其他项目即使没有创始人奖励也能够解决代码漏洞。比特币和门罗币等加密货币都不需要依靠向一个中心化的开发者团队支付固定的资金,他们的开发者依然能够快速修复漏洞。事实上,近期比特币的某个漏洞在被发现之后只花了几天的时间就修复完成了。

201902060331475592.png


有意思的是,Zcash的官方声明中强调,这一代码漏洞已经存在数年时间。如果按照斯诺登的逻辑,或许创始人奖励再高20%,他们解决漏洞的速度也会快一点。


原文:https://www.newsbtc.com/2019/02/05/snowden-zcash-founders-reward/
作者:RICK D.
编译:Wendy

安全漏洞重现,分叉前夕的以太坊只想"静一静”...

项目45qu 发表了文章 • 2019-01-18 11:15 • 来自相关话题

让我们陷入困境的不是无知, 而是看似正确的谬误论断。 ——马克·吐温

君士坦丁堡升级是什么? 以太坊经历了哪些升级? 此次升级有何意义?


最近即将实施硬分叉的以太坊再次成为币圈为数不多的热点,相较于去年惨烈的BCH分叉大战,此次分叉则更为和谐。

这次分叉为何以曾经辉煌的千年古都君士坦丁堡命名成为一个谜。

作为中古世纪东罗马帝国的国都君士坦丁堡,曾经是公认的西方政治、经济、文化、交通,以及宗教中心。

事实上,俄罗斯在历史上继承了拜占庭帝国的衣钵,加之以太坊创始人Vitalik Buterin俄罗斯的国籍。

因此,以拜占庭和君士坦丁堡为两次硬分叉命名也在情理之中。

在去年12月初举行的核心开发者会议上,以太坊开发团队成员就多次延迟的君士坦丁堡分叉升级时间达成协议,确定将7080000区块作为硬分叉激活点。

随后在上周,以太坊官方正式发文提醒硬分叉注意事项,并确定硬分叉时间预计在北京时间1月17日。

据了解,这一次的升级也被称为社区最期待的升级,以太坊的性能也将在此次升级中大幅提升。

但是,就在君士坦丁堡升级一触即发的时刻,智能合约审计平台ChainSecurity在昨天发现,如果实施以太坊改进提案(EIP)1283,可能为攻击者提供盗取用户资金的代码漏洞。

以太坊开发者们在进行电话会议后决定再度推迟硬分叉时间,具体日期将在本周五的核心开发者电话会议上重新讨论决定。

以太坊核心开发者Afri Schoedon则在Twitter上称硬分叉现预计于下周一进行。


01
 

受到硬分叉再次延期的影响,ETH价格也应声下跌。

此前受硬分叉利好刺激的涨幅几乎被全盘收回,盘中最低一度触及116美元。

针对最新发现的漏洞,区块链分析公司Amberdata首席技术官Joanes Espanol在接受采访时表示,此次的新漏洞可能导致硬分叉后出现“重入攻击”的风险。

事实上,有分析指出新漏洞与The DAO事件的漏洞具有相似之处。

攻击过程大致都是攻击者先假装提现让合约觉得余额减少,随后将提现的ETH重新存入并转移到第二个地址中。

由于当前合约中的余额已经超出合约认为自己持有的数额,因此所有超额部分都能直接被攻击者提取。

作为大都会版本的第二个升级,君士坦丁堡硬分叉也是在“拜占庭”的基础上进一步进行升级。

升级目的在于降低工作成本并简化创建DApps的流程。

此次升级从底层虚拟机到智能合约,整体上提高了整个以太坊网络的性能。

除了“难度炸弹”再度推迟12个月外,引发热议的话题便是区块奖励再次从3ETH减少到2ETH。

这将使挖矿成本相对增加,并直接决定矿工的挖矿收益减少。

受此影响,PeckShield平台数据显示目前以太坊全网只有23.6%的全节点完成了软件升级,而且这一比例在过去几天内增长较缓。

此外,其他在技术方面的升级的目的是让开发者能够高效便捷地运行智能合约,进一步降低成本,并为即将到来的Layer 2扩容方案铺路。

尽管以太坊在第四阶段的核心共识将完成从PoW到PoS的转换,君士坦丁堡又是第三阶段的最后一次升级。

不少人都期待这一次升级中PoW/PoS混合的模式。

但是,在目前看到的Go-Ethereum发布的共识模块中并不支持PoW/PoS混合共识。

由此可见,对于以太坊开发团队来说,引入PoS共识还为时尚早。


02
 

包括此次硬分叉在内,以太坊已经至少经历了五次硬分叉。

不同于BCH由于共识破裂导致的硬分叉,以太坊硬分叉则是社区内部统一认可的技术升级。

早在以太坊发布之初,团队就已把以太坊的发展规划为包括Frontier(前沿)、Homestead(家园)、Metropolis(大都会)以及Serenity(宁静)在内的四个阶段。

此前的两次分叉主要是从Frontier(前沿)到Homestead(家园)的过渡。

目的在于稳定版本的发布以及未来挖矿难度的调整。

相较于Frontier版本,虽然Hometead没有明显的技术性改革,但易用性得到了改善,用户体验也进行了相对优化。

随后的一次分叉起源便是著名的“The DAO”事件。

2016年6月,由于其编写的智能合约存在着重大缺陷,曾经是区块链业界最大的众筹项目TheDAO遭黑客攻击,导致市值近5000万美元的以太币被转移。

为了挽回投资者的损失,以太坊社区投票打算更改代码回滚数据。

随后在7月,以太坊完成硬分叉,最终形成了两条链。

目前,以太坊的“官方”版本ETH由其原始开发者进行维护,以太经典ETC则是由新团队进行维护。

目前,以太坊正处于第三阶段Metropolis。

由于Metropolis为以太坊带来大量重要特性,这些特性无法一次性引入,因此又被分为“拜占庭”和“君士坦丁堡”两个小阶段。

2017年10月,第一阶段“拜占庭”分叉完成升级,在这一次升级后以太坊性能也有了一定的提升。

除了以太坊发行量会进一步减少40%左右,矿工的区块奖励将从5ETH减少至3ETH外,还包括更高的匿名性和网络安全性。

而此前为了确保以太坊矿工们全部加入新链而引入的“难度炸弹”机制被推迟一年。

难度炸弹是指计算难度时除了根据出块时间和上一个区块难度进行调整外,还包括一个呈指数型增长的难度因子。

由于PoW比拼的是算力,为了实现共识算法从PoW向PoS的转变,最简单的办法就是让挖矿难度陡增,这也是以太坊设置“难度炸弹”的根本原因。

随着区块生成时间的增加,最后将面临几乎挖不出区块的状况,矿工除了转向PoS协议之外别无他法。

这也成为以太坊迈入最终阶段Serenity(宁静)的重要一步。


03
 

不少分析师都对即将执行的君士坦丁堡分叉表现出乐观的态度。

其中,创世纪环球贸易首席执行官Michael Moro在谈到此次硬分叉时特别提到了供应减少将减少市场的抛售压力。

他在接受采访时表示:“由于减产33%,这可能会降低来自矿商回报的抛售压力。”

作为曾经的“公链之王”,以太坊旨在通过为其他项目提供区块链应用开发平台来打造更广泛的生态系统。

以太坊曾掀起ICO的热潮,也引领了一波资本的狂欢。时过境迁,ICO已经渐渐淡出了人们的视线。

以太坊的价格也一落千丈。从最高的1237美元跌去了近90%。

就连曾经的DApp 主场,也逐渐被包括EOS在内的公链瓜分市场。

虽然在众多开发者和用户眼中,以太坊依然是公链中的“老大”。

但是,以太坊中存在的诸多性能问题始终无法解决,以太坊将失去这些信仰者。

根据DAppReview数据显示,目前在以太坊运行的DApp总数为1515个,但是日活用户均在1000以下。

已经远远低于在EOS运行的DApp上万的日活用户数。

事实上,以太坊被诟病最多的便是扩容问题。

目前以太坊每秒只能处理14笔交易,而Visa能够每秒处理24000笔交易。

交易拥堵直接导致了交易手续费的升高,这是由于以太坊智能合约计算手续费的算法缺陷。

为了让自己的交易尽快得到确认,发起交易的用户将提高Gas价格,手续费一度飙升至5862个ETH。

尽管V神提出了Casper和分片技术以解决以太坊的拥堵问题,但是目前尚未进入应用阶段。

通证道捷首席架构师孟岩也在接受采访时表示,以太坊君士坦丁堡升级对于性能的提升没有太根本的改进。

除非落实Casper重大性能的提升,否则将不会改变公链点竞争态势。

此次的君士坦丁堡分叉与其说是一次技术升级,倒更像是一场突围之战。 查看全部
201901180236165647.jpg


让我们陷入困境的不是无知, 而是看似正确的谬误论断。 ——马克·吐温

君士坦丁堡升级是什么? 以太坊经历了哪些升级? 此次升级有何意义?



最近即将实施硬分叉的以太坊再次成为币圈为数不多的热点,相较于去年惨烈的BCH分叉大战,此次分叉则更为和谐。

这次分叉为何以曾经辉煌的千年古都君士坦丁堡命名成为一个谜。

作为中古世纪东罗马帝国的国都君士坦丁堡,曾经是公认的西方政治、经济、文化、交通,以及宗教中心。

事实上,俄罗斯在历史上继承了拜占庭帝国的衣钵,加之以太坊创始人Vitalik Buterin俄罗斯的国籍。

因此,以拜占庭和君士坦丁堡为两次硬分叉命名也在情理之中。

在去年12月初举行的核心开发者会议上,以太坊开发团队成员就多次延迟的君士坦丁堡分叉升级时间达成协议,确定将7080000区块作为硬分叉激活点。

随后在上周,以太坊官方正式发文提醒硬分叉注意事项,并确定硬分叉时间预计在北京时间1月17日。

据了解,这一次的升级也被称为社区最期待的升级,以太坊的性能也将在此次升级中大幅提升。

但是,就在君士坦丁堡升级一触即发的时刻,智能合约审计平台ChainSecurity在昨天发现,如果实施以太坊改进提案(EIP)1283,可能为攻击者提供盗取用户资金的代码漏洞。

以太坊开发者们在进行电话会议后决定再度推迟硬分叉时间,具体日期将在本周五的核心开发者电话会议上重新讨论决定。

以太坊核心开发者Afri Schoedon则在Twitter上称硬分叉现预计于下周一进行。


01
 

受到硬分叉再次延期的影响,ETH价格也应声下跌。

此前受硬分叉利好刺激的涨幅几乎被全盘收回,盘中最低一度触及116美元。

针对最新发现的漏洞,区块链分析公司Amberdata首席技术官Joanes Espanol在接受采访时表示,此次的新漏洞可能导致硬分叉后出现“重入攻击”的风险。

事实上,有分析指出新漏洞与The DAO事件的漏洞具有相似之处。

攻击过程大致都是攻击者先假装提现让合约觉得余额减少,随后将提现的ETH重新存入并转移到第二个地址中。

由于当前合约中的余额已经超出合约认为自己持有的数额,因此所有超额部分都能直接被攻击者提取。

作为大都会版本的第二个升级,君士坦丁堡硬分叉也是在“拜占庭”的基础上进一步进行升级。

升级目的在于降低工作成本并简化创建DApps的流程。

此次升级从底层虚拟机到智能合约,整体上提高了整个以太坊网络的性能。

除了“难度炸弹”再度推迟12个月外,引发热议的话题便是区块奖励再次从3ETH减少到2ETH。

这将使挖矿成本相对增加,并直接决定矿工的挖矿收益减少。

受此影响,PeckShield平台数据显示目前以太坊全网只有23.6%的全节点完成了软件升级,而且这一比例在过去几天内增长较缓。

此外,其他在技术方面的升级的目的是让开发者能够高效便捷地运行智能合约,进一步降低成本,并为即将到来的Layer 2扩容方案铺路。

尽管以太坊在第四阶段的核心共识将完成从PoW到PoS的转换,君士坦丁堡又是第三阶段的最后一次升级。

不少人都期待这一次升级中PoW/PoS混合的模式。

但是,在目前看到的Go-Ethereum发布的共识模块中并不支持PoW/PoS混合共识。

由此可见,对于以太坊开发团队来说,引入PoS共识还为时尚早。


02
 

包括此次硬分叉在内,以太坊已经至少经历了五次硬分叉。

不同于BCH由于共识破裂导致的硬分叉,以太坊硬分叉则是社区内部统一认可的技术升级。

早在以太坊发布之初,团队就已把以太坊的发展规划为包括Frontier(前沿)、Homestead(家园)、Metropolis(大都会)以及Serenity(宁静)在内的四个阶段。

此前的两次分叉主要是从Frontier(前沿)到Homestead(家园)的过渡。

目的在于稳定版本的发布以及未来挖矿难度的调整。

相较于Frontier版本,虽然Hometead没有明显的技术性改革,但易用性得到了改善,用户体验也进行了相对优化。

随后的一次分叉起源便是著名的“The DAO”事件。

2016年6月,由于其编写的智能合约存在着重大缺陷,曾经是区块链业界最大的众筹项目TheDAO遭黑客攻击,导致市值近5000万美元的以太币被转移。

为了挽回投资者的损失,以太坊社区投票打算更改代码回滚数据。

随后在7月,以太坊完成硬分叉,最终形成了两条链。

目前,以太坊的“官方”版本ETH由其原始开发者进行维护,以太经典ETC则是由新团队进行维护。

目前,以太坊正处于第三阶段Metropolis。

由于Metropolis为以太坊带来大量重要特性,这些特性无法一次性引入,因此又被分为“拜占庭”和“君士坦丁堡”两个小阶段。

2017年10月,第一阶段“拜占庭”分叉完成升级,在这一次升级后以太坊性能也有了一定的提升。

除了以太坊发行量会进一步减少40%左右,矿工的区块奖励将从5ETH减少至3ETH外,还包括更高的匿名性和网络安全性。

而此前为了确保以太坊矿工们全部加入新链而引入的“难度炸弹”机制被推迟一年。

难度炸弹是指计算难度时除了根据出块时间和上一个区块难度进行调整外,还包括一个呈指数型增长的难度因子。

由于PoW比拼的是算力,为了实现共识算法从PoW向PoS的转变,最简单的办法就是让挖矿难度陡增,这也是以太坊设置“难度炸弹”的根本原因。

随着区块生成时间的增加,最后将面临几乎挖不出区块的状况,矿工除了转向PoS协议之外别无他法。

这也成为以太坊迈入最终阶段Serenity(宁静)的重要一步。


03
 

不少分析师都对即将执行的君士坦丁堡分叉表现出乐观的态度。

其中,创世纪环球贸易首席执行官Michael Moro在谈到此次硬分叉时特别提到了供应减少将减少市场的抛售压力。

他在接受采访时表示:“由于减产33%,这可能会降低来自矿商回报的抛售压力。”

作为曾经的“公链之王”,以太坊旨在通过为其他项目提供区块链应用开发平台来打造更广泛的生态系统。

以太坊曾掀起ICO的热潮,也引领了一波资本的狂欢。时过境迁,ICO已经渐渐淡出了人们的视线。

以太坊的价格也一落千丈。从最高的1237美元跌去了近90%。

就连曾经的DApp 主场,也逐渐被包括EOS在内的公链瓜分市场。

虽然在众多开发者和用户眼中,以太坊依然是公链中的“老大”。

但是,以太坊中存在的诸多性能问题始终无法解决,以太坊将失去这些信仰者。

根据DAppReview数据显示,目前在以太坊运行的DApp总数为1515个,但是日活用户均在1000以下。

已经远远低于在EOS运行的DApp上万的日活用户数。

事实上,以太坊被诟病最多的便是扩容问题。

目前以太坊每秒只能处理14笔交易,而Visa能够每秒处理24000笔交易。

交易拥堵直接导致了交易手续费的升高,这是由于以太坊智能合约计算手续费的算法缺陷。

为了让自己的交易尽快得到确认,发起交易的用户将提高Gas价格,手续费一度飙升至5862个ETH。

尽管V神提出了Casper和分片技术以解决以太坊的拥堵问题,但是目前尚未进入应用阶段。

通证道捷首席架构师孟岩也在接受采访时表示,以太坊君士坦丁堡升级对于性能的提升没有太根本的改进。

除非落实Casper重大性能的提升,否则将不会改变公链点竞争态势。

此次的君士坦丁堡分叉与其说是一次技术升级,倒更像是一场突围之战。

以太坊“君士坦丁堡”升级将延迟

资讯chainb 发表了文章 • 2019-01-16 18:46 • 来自相关话题

以太坊的“君士坦丁堡”(Constantinople)升级面临延迟,因在其中一项变更中发现了一个严重的漏洞。

智能合约审计公司ChainSecurity周二表示,如果实施以太坊改进提案(EIP)1283,可能会为攻击者提供窃取用户资金的代码漏洞。在电话会议上,以太坊开发商以及客户开发商,和其他运营网络项目的开发商同意在评估问题时暂时推迟硬分叉。

参与者包括以太坊创造者Vitalik Buterin,开发人员Hudson Jameson,Nick Johnson和Evan Van Ness,以及Parity发布经理Afri Schoedon等。周五,将在以太坊电话会议期间将决定新的分叉日期。

在讨论漏洞的问题时,项目的核心开发人员得出的结论是,在硬分叉之前修复漏洞需要很长时间,预计将在1月17日04:00左右执行。

这个漏洞被称为可重入攻击,实质上可以允许攻击者多次“重新进入”同一个函数,而无需更新用户的事务状态。在这种情况下,攻击者基本上可以“永远撤回资金”,区块链分析公司Amberdata的首席技术官Joanes Espanol在之前的CoinDesk采访中表示。

他解释说:

    “想象一下,合约中有一个函数可以调用另一个合同......如果我是一个黑客,我能够在前一个功能仍在执行的情况下触发功能,提取资金。”


这就类似于臭名昭著的2016年DAO攻击中发现的漏洞之一。

ChainSecurity的帖子解释说,在Constantinople之前,网络上的存储操作将耗费5,000 gas,超过通常的“转移”或“发送”功能调用合同时发送的2,300 gas。

但是,如果实施升级,“不干净的”存储操作将耗费200 gas。“攻击合同可以使用2300 gas津贴成功操纵弱势合约的变量。”

之前预计Constantinople将在2018年启动,但在Ropsten测试网上启动升级后发现问题后推迟。 


原文:https://www.coindesk.com/ethereums-constantinople-upgrade-faces-delay-due-to-security-vulnerability
来源:coindesk
作者:Christine Kim , Nikhilesh De
编译:Miranda 查看全部
20190116134893239323.jpg

以太坊的“君士坦丁堡”(Constantinople)升级面临延迟,因在其中一项变更中发现了一个严重的漏洞。

智能合约审计公司ChainSecurity周二表示,如果实施以太坊改进提案(EIP)1283,可能会为攻击者提供窃取用户资金的代码漏洞。在电话会议上,以太坊开发商以及客户开发商,和其他运营网络项目的开发商同意在评估问题时暂时推迟硬分叉。

参与者包括以太坊创造者Vitalik Buterin,开发人员Hudson Jameson,Nick Johnson和Evan Van Ness,以及Parity发布经理Afri Schoedon等。周五,将在以太坊电话会议期间将决定新的分叉日期。

在讨论漏洞的问题时,项目的核心开发人员得出的结论是,在硬分叉之前修复漏洞需要很长时间,预计将在1月17日04:00左右执行。

这个漏洞被称为可重入攻击,实质上可以允许攻击者多次“重新进入”同一个函数,而无需更新用户的事务状态。在这种情况下,攻击者基本上可以“永远撤回资金”,区块链分析公司Amberdata的首席技术官Joanes Espanol在之前的CoinDesk采访中表示。

他解释说:


    “想象一下,合约中有一个函数可以调用另一个合同......如果我是一个黑客,我能够在前一个功能仍在执行的情况下触发功能,提取资金。”



这就类似于臭名昭著的2016年DAO攻击中发现的漏洞之一。

ChainSecurity的帖子解释说,在Constantinople之前,网络上的存储操作将耗费5,000 gas,超过通常的“转移”或“发送”功能调用合同时发送的2,300 gas。

但是,如果实施升级,“不干净的”存储操作将耗费200 gas。“攻击合同可以使用2300 gas津贴成功操纵弱势合约的变量。”

之前预计Constantinople将在2018年启动,但在Ropsten测试网上启动升级后发现问题后推迟。 


原文:https://www.coindesk.com/ethereums-constantinople-upgrade-faces-delay-due-to-security-vulnerability
来源:coindesk
作者:Christine Kim , Nikhilesh De
编译:Miranda

比特币10年:920亿枚被“伪造”,比特币曾命悬一线

特写31qu 发表了文章 • 2018-10-28 11:06 • 来自相关话题

比特币诞生于2009年,曾一度被当做极客手中的玩具,并不被重视,于是发生了程序员用1万个比特币换两个披萨的故事。

如今10年过去了,比特币的身份标签已从暗网、犯罪、泡沫,逐渐变成了财富的代名词。价格则从最初的几分钱,暴涨到13万,但是这个过程却并不“顺利”。

10年间,比特币经历200多次被死亡,摆脱竞争币的“围追堵截”,最终稳坐加密货币的“头把交椅”,难以被撼动。

这10年间,比特币就像热血漫画中的主人公一样,与各种“敌人”搏斗。

 
1 比特币的“自杀”


“比特币、以太坊等其他加密货币制造了‘历史上最大的泡沫’。”

最近,拥有“末日博士”之称的美国著名经济学家 Nouriel Roubini 这样评价比特币。而类似唱衰比特币的声音,在这10年里,层出不穷。

事实上,比特币也的确有几次“惊魂时刻”。

2010年,前比特币核心开发者 Jeff Garzik 在 Bitcointalk 上发帖称,他在比特币第24638个区块上,发现了一个溢出漏洞。该漏洞是核心代码的溢出错误所引起,这导致920亿个比特币被“伪造”。

按照中本聪的设计,比特币总量是2100万个,溢出漏洞对比特币来说,着实是致命的。





吓坏了社群的920亿比特币


溢出漏洞吓坏了当年的社群维护们,“如果这个漏洞被成功利用,就不可能见到现在的比特币了,把这称为比特币的自杀,毫不为过”。

幸运的是,在 Garzik 发现该问题之后的5个小时,核心代码被及时修复,同时,伪造的比特币也被“销毁”。

更幸运的是,由于该漏洞事件发生在2010年,当时比特币还只是极客手中的“玩具”,因此“溢出漏洞”事件对比特币几乎没有影响。假设该事件发生在2018年,毫无疑问将会对比特币、乃至加密货币整个行业造成致命打击。

虽然在社群努力下,比特币成功度过此次危机,但并不意味着比特币核心代码绝对安全,不会再发生“自杀”事件。

就在今年10月份,莱特币创始人李启威在《神器密友》的节目现场谈到,比特币的“通胀漏洞”非常糟糕,几乎是比特币面临的最严重的挑战之一。按照李启威的解释,通胀漏洞是指有人利用比特币核心代码漏洞,生产出更多的比特币,进而导致比特币发行处于严重通胀状态。

有人可能会心一笑:“李所说的不就是双花嘛”。

关于该漏洞,李启威还提到了更多细节:“该漏洞产生是由于一名矿工试图通过攻击,制造出更多比特币导致的。”

如果有人能创造出无限多的比特币,这将会完全扼杀比特币的价值,同时也一定会导致整个加密货行业的“雪崩”,尤其是在加密货币行业资金规模达到2000亿美金的今天。

与“溢出漏洞”不同的是,该“通胀漏洞”与比特币网络未验证双花有关,如果攻击者找了将交易打包进入区块的方式,那么这些凭空产生的比特币将会被人接受。进而导致比特币生态不断处于通胀状态,因此被称为“通胀漏洞”。

社群处理通胀漏洞的方式,也相当有趣。

通胀漏洞一经发现,比特币开发者就紧急发布了修复补丁。但是李启威谈到:“开发者并未对外公布威胁漏洞”,他提到,开发人员只表示该错误会导致节点被Dos攻击,进而导致比特币网络崩溃。

在李启威看来,开发人员有意弱化了问题严重性。

比特币网络在运行过程中,经历了多次迭代升级,才成为我们今天看到的版本。任何软件、程序在发展过程中,遇到漏洞,打补丁是再常见不过的了,这就像是施工队在施工过程中“逢山挖洞,遇水架桥”的道理是一样的。

但不可否认的是,比特币自身平稳运行了近10年,已经算得上“奇迹”。

除了源代码漏洞对比特币产生的负面影响,大量竞争币的涌现,也对比特币发展产生了一定的“威胁”。

 
2 竞争者们
 

在比特币生态逐渐发展成熟的过程中,一大批比特币的模仿者与竞争者相继出现。

上千种“竞争者”中,莱特币、以太坊、瑞波币、EOS、恒星币、零币、DCR等加密货币也逐渐进入大众视野,并不断分割比特币的市值份额。作为金融属性较重的加密货币领域,谁的市值最大,“谁才是老大”已成为共识。

从2013年到2018年,比特币市值占比从95%下降到最低点33%,最近再次回升到52%左右。相比比特币核心代码的“致命一击”,竞争币与比特币的市值之争,更像是“拉锯战”。在这场旷日持久的战争中,各种共识、标签被创造。





《忍者神龟》中的斯普林特老师与他的小龟们


莱特币(Litcoin)

“比特金,莱特银”是加密货币领域的共识。

2011年11月,莱特币诞生。在谷歌工作期间,莱特币创始人李启威受比特币启发,基于同样的去中心化数字货币原理开发了莱特币。由于莱特币更易于挖矿,以及更高的社群共识,使得莱特币从众多所谓的“山寨币”中脱颖而出,2013年成为当时仅次于比特币的第二大加密货币。

2018年莱特币涨到历史最高价2480元人民币,流通市值一度达到1350亿人民币。历史上莱特币市值曾达到比特币总市值的6.8%。

由于比特币、莱特币主链难以开发,2013年底,以太坊发明人Vitalik Buterin 离开比特币核心开发团队,并召集了一批认可以太坊理念的开发者,启动以太坊项目。


以太坊(Ethereum)

从2017年1月开始,以太坊市值从7亿美元迅速爬升至162亿美元,在区块链资产中排名第二,仅次于比特币。2017年6月中旬,以太坊市值更是达到比特币总市值的80%。作为比特币的竞争币,以太坊绝对是最得力的干将。

当然,这是有原因的。Vitalik在设计以太坊公链时,加入了智能合约与虚拟机功能,让基于以太坊的开发,就像在Windows系统上开发应用一样方便。而且,最关键的是以太坊解决了发币、募资难题,将链上发币,变成“一键式”。

有了这些优势,以太坊吸成功引了大量资金关注,直接促成了币圈大繁荣。但是以太坊本身却存在诸多问题。





比特币与众多竞争币


柚子(EOS)

以太坊的收费机制将很多用户挡在门外,同时每秒几十笔的交易频次,更不能满足大量Dapp并发,因此EOS应运而生。

EOS是一个全新的Dapp开发平台——EOS。

EOS采用了一套全新的共识算法,即DPOS,这个共识机制在之前的Bitshare、Bteemit有了成功实践,所以被无限看好。

有了这样的共识,EOS生态发展十分迅速。目前有839个Dapp,是以太坊的8倍。市值337亿人民币,总市值最高达到比特币的10%。

EOS的成功,得益于其在应用方面的突破。而瑞波的异军突起,则得益于其在支付领域的突破。


瑞波(Ripple)

由于受到出块速度与区块链容量限制,比特币转账既慢又贵,小额转账很难得到保证,于是瑞波出现了。

Ripple成立时吸引了大量风险投资。 Google支持的高科技创业公司设法从银行机构中提取了超过5000万美元,在众筹时总资金获得了惊人的9亿美元。同时,Ripple提供全球金融解决方案,使世界能够交换价值。Ripple 的解决方案,使银行能够立即直接和确定地进行结算来降低结算成本。

作为比特币的竞争者,Ripple市值增加迅速,目前总市值1259亿人民币,今年5月19年总市值达到比特币的45%。


门罗币(Monero)

比特币最大的特点之一是匿名性,但是由于地址之间的可溯源性,一旦某一笔转账被确认身份,其他所有的交易都会被追踪到,这让那些渴望更加匿名的用户感到“不安”。

门罗币的出现,彻底解决了地址之间可追踪的“弊端”。门罗币允许资产所偶有者“发送和接收资金,而不会在Blockchain上公开显示记录。”但不幸的是,由于门罗币的高度隐私性,导致它已被黑社会和其他犯罪组织所采纳。

虽然门罗彻底匿名了,但是市值目前市值只有121亿美金,今年4月份占到比特币总市值的2.3%。

在比特币发展过程中,核心开发组起到了功不可没的作用,但是开发组内部也会产生很大的分歧,Decred 就是从核心开发组“出逃”的程序员创建。


Decred(DCR)

2015年,几位比特币核心开发人员对比特币现状不满,无法忍受比特币核心开发组垄断比特币的软件开发,认为其已经被“中央化”并且缺乏良好的管理和升级机制。在这样的背景下,他们离开了比特币团队,并开始正式创立Decred。

Decred于2015年9月首次推出,是基于社区管理系统集成到区域块链中的一种开放的和渐进的加密数字货币。

但与比特币最大的区别是,Decred采用PoW和PoS混合方式挖矿,即所有PoW产生的矿都必须先经过PoS验证才能成为合法的块。所以在 DCR 的网络中,几乎杜绝了算力垄断的现象,在一定程度上解决了去中心化项目的治理机制问题。

看来,竞争币不仅在与比特币争市值,还在与比特币争“人才”。

除了这些较为成功的加密货币项目,2017年还涌现了大量公链开发、Dapp应用为主的公链项目。这得益于行业的快速发展,这些新兴项目的体量也在逐渐增大。随着加密货币牛熊更迭,这些项目也偃旗息鼓。在此期间,比特币市值占比也从33%增加到52%,其江湖地位也逐渐稳固。

 
3 比特币的江湖地位


由于比特币的“天然缺陷”,比如交易时间缓慢,不可延展性等,导致1500种加密货币诞生,每一种都在试图克服比特币的一个或者多个缺陷。

但是比特币却始终坐“老大”位置,一统江湖。





比特币与竞争币的市值变化趋势


不可否认,竞争币在2016年以来也取得了长足发展。以以太坊为例,2017年比特币的价格从1700美元左右升至9000美元左右,增幅达到了450%,在同一段时间内,以太坊实现了1000%的收益,达到了当前的700美元左右。

从收益比上来看,以太坊确实潜力无限。但是从流通量上来分析,比特币的流通量是以太坊的五倍还多。这意味着以太坊的市值还不到比特币的一半。比特币的地位已经确立的非常稳固,短时间内并不会失去世界上最有价值的加密货币这一地位。

同时有人认为,像EOS这样的有应用的公链项目,会吸引越来越多的用户。超越比特币指日可待。

但是,从用户增加速度与应用来看,EOS与以太坊生态建设正逐渐繁荣。目前EOS公链与以太坊应用总数为950多个,EOS和ETH上的Dapp总量分别是111个和839个,EOS日活达到32130,ETH为1768。

与纯应用类公链相比,比特币与这类应用型公链不同,比特币本身就是应用——钱。而比特币的地址数,目前已接近3000万,可以说秒杀这类应用型公链。

所以,从应用角度来说,比特币依然是江湖老大。

当然,这比不意味着,比特币永远会一家独大。也许随着市场发展,生态应用的繁荣,应用类公链最终崛起,独占鳌头,也不是不可能。


-------------------------
 

孕育了整个区块链行业的比特币,是否会继续领跑加密货币行业?

没人能给出确切的答案。

区块链行业的快速发展,得益于加密货币价格的不断上涨。财富效应让这个行业快速聚集了大量人才。

因此,站在行业发展角度,留给不同数字货币发展的空间还很大,这些加密货币之间也并不是竞争关系。正如李启威的观点,加密货币之间的竞争并不是胜者为王,败者为寇的游戏。

(文/零界) 查看全部
bitcoin-thumb.jpg

比特币诞生于2009年,曾一度被当做极客手中的玩具,并不被重视,于是发生了程序员用1万个比特币换两个披萨的故事。

如今10年过去了,比特币的身份标签已从暗网、犯罪、泡沫,逐渐变成了财富的代名词。价格则从最初的几分钱,暴涨到13万,但是这个过程却并不“顺利”。

10年间,比特币经历200多次被死亡,摆脱竞争币的“围追堵截”,最终稳坐加密货币的“头把交椅”,难以被撼动。

这10年间,比特币就像热血漫画中的主人公一样,与各种“敌人”搏斗。

 
1 比特币的“自杀”


“比特币、以太坊等其他加密货币制造了‘历史上最大的泡沫’。”

最近,拥有“末日博士”之称的美国著名经济学家 Nouriel Roubini 这样评价比特币。而类似唱衰比特币的声音,在这10年里,层出不穷。

事实上,比特币也的确有几次“惊魂时刻”。

2010年,前比特币核心开发者 Jeff Garzik 在 Bitcointalk 上发帖称,他在比特币第24638个区块上,发现了一个溢出漏洞。该漏洞是核心代码的溢出错误所引起,这导致920亿个比特币被“伪造”。

按照中本聪的设计,比特币总量是2100万个,溢出漏洞对比特币来说,着实是致命的。

1a64aee83a10400c94ad27e4f636fbc7.jpg

吓坏了社群的920亿比特币


溢出漏洞吓坏了当年的社群维护们,“如果这个漏洞被成功利用,就不可能见到现在的比特币了,把这称为比特币的自杀,毫不为过”。

幸运的是,在 Garzik 发现该问题之后的5个小时,核心代码被及时修复,同时,伪造的比特币也被“销毁”。

更幸运的是,由于该漏洞事件发生在2010年,当时比特币还只是极客手中的“玩具”,因此“溢出漏洞”事件对比特币几乎没有影响。假设该事件发生在2018年,毫无疑问将会对比特币、乃至加密货币整个行业造成致命打击。

虽然在社群努力下,比特币成功度过此次危机,但并不意味着比特币核心代码绝对安全,不会再发生“自杀”事件。

就在今年10月份,莱特币创始人李启威在《神器密友》的节目现场谈到,比特币的“通胀漏洞”非常糟糕,几乎是比特币面临的最严重的挑战之一。按照李启威的解释,通胀漏洞是指有人利用比特币核心代码漏洞,生产出更多的比特币,进而导致比特币发行处于严重通胀状态。

有人可能会心一笑:“李所说的不就是双花嘛”。

关于该漏洞,李启威还提到了更多细节:“该漏洞产生是由于一名矿工试图通过攻击,制造出更多比特币导致的。”

如果有人能创造出无限多的比特币,这将会完全扼杀比特币的价值,同时也一定会导致整个加密货行业的“雪崩”,尤其是在加密货币行业资金规模达到2000亿美金的今天。

与“溢出漏洞”不同的是,该“通胀漏洞”与比特币网络未验证双花有关,如果攻击者找了将交易打包进入区块的方式,那么这些凭空产生的比特币将会被人接受。进而导致比特币生态不断处于通胀状态,因此被称为“通胀漏洞”。

社群处理通胀漏洞的方式,也相当有趣。

通胀漏洞一经发现,比特币开发者就紧急发布了修复补丁。但是李启威谈到:“开发者并未对外公布威胁漏洞”,他提到,开发人员只表示该错误会导致节点被Dos攻击,进而导致比特币网络崩溃。

在李启威看来,开发人员有意弱化了问题严重性。

比特币网络在运行过程中,经历了多次迭代升级,才成为我们今天看到的版本。任何软件、程序在发展过程中,遇到漏洞,打补丁是再常见不过的了,这就像是施工队在施工过程中“逢山挖洞,遇水架桥”的道理是一样的。

但不可否认的是,比特币自身平稳运行了近10年,已经算得上“奇迹”。

除了源代码漏洞对比特币产生的负面影响,大量竞争币的涌现,也对比特币发展产生了一定的“威胁”。

 
2 竞争者们
 

在比特币生态逐渐发展成熟的过程中,一大批比特币的模仿者与竞争者相继出现。

上千种“竞争者”中,莱特币、以太坊、瑞波币、EOS、恒星币、零币、DCR等加密货币也逐渐进入大众视野,并不断分割比特币的市值份额。作为金融属性较重的加密货币领域,谁的市值最大,“谁才是老大”已成为共识。

从2013年到2018年,比特币市值占比从95%下降到最低点33%,最近再次回升到52%左右。相比比特币核心代码的“致命一击”,竞争币与比特币的市值之争,更像是“拉锯战”。在这场旷日持久的战争中,各种共识、标签被创造。

dbbd245627c348b8a4896187146d69c9.jpg

《忍者神龟》中的斯普林特老师与他的小龟们


莱特币(Litcoin)

“比特金,莱特银”是加密货币领域的共识。

2011年11月,莱特币诞生。在谷歌工作期间,莱特币创始人李启威受比特币启发,基于同样的去中心化数字货币原理开发了莱特币。由于莱特币更易于挖矿,以及更高的社群共识,使得莱特币从众多所谓的“山寨币”中脱颖而出,2013年成为当时仅次于比特币的第二大加密货币。

2018年莱特币涨到历史最高价2480元人民币,流通市值一度达到1350亿人民币。历史上莱特币市值曾达到比特币总市值的6.8%。

由于比特币、莱特币主链难以开发,2013年底,以太坊发明人Vitalik Buterin 离开比特币核心开发团队,并召集了一批认可以太坊理念的开发者,启动以太坊项目。


以太坊(Ethereum)

从2017年1月开始,以太坊市值从7亿美元迅速爬升至162亿美元,在区块链资产中排名第二,仅次于比特币。2017年6月中旬,以太坊市值更是达到比特币总市值的80%。作为比特币的竞争币,以太坊绝对是最得力的干将。

当然,这是有原因的。Vitalik在设计以太坊公链时,加入了智能合约与虚拟机功能,让基于以太坊的开发,就像在Windows系统上开发应用一样方便。而且,最关键的是以太坊解决了发币、募资难题,将链上发币,变成“一键式”。

有了这些优势,以太坊吸成功引了大量资金关注,直接促成了币圈大繁荣。但是以太坊本身却存在诸多问题。

d8335c6ab46a4eafad9ccdefef9c4099.jpg

比特币与众多竞争币


柚子(EOS)

以太坊的收费机制将很多用户挡在门外,同时每秒几十笔的交易频次,更不能满足大量Dapp并发,因此EOS应运而生。

EOS是一个全新的Dapp开发平台——EOS。

EOS采用了一套全新的共识算法,即DPOS,这个共识机制在之前的Bitshare、Bteemit有了成功实践,所以被无限看好。

有了这样的共识,EOS生态发展十分迅速。目前有839个Dapp,是以太坊的8倍。市值337亿人民币,总市值最高达到比特币的10%。

EOS的成功,得益于其在应用方面的突破。而瑞波的异军突起,则得益于其在支付领域的突破。


瑞波(Ripple)

由于受到出块速度与区块链容量限制,比特币转账既慢又贵,小额转账很难得到保证,于是瑞波出现了。

Ripple成立时吸引了大量风险投资。 Google支持的高科技创业公司设法从银行机构中提取了超过5000万美元,在众筹时总资金获得了惊人的9亿美元。同时,Ripple提供全球金融解决方案,使世界能够交换价值。Ripple 的解决方案,使银行能够立即直接和确定地进行结算来降低结算成本。

作为比特币的竞争者,Ripple市值增加迅速,目前总市值1259亿人民币,今年5月19年总市值达到比特币的45%。


门罗币(Monero)

比特币最大的特点之一是匿名性,但是由于地址之间的可溯源性,一旦某一笔转账被确认身份,其他所有的交易都会被追踪到,这让那些渴望更加匿名的用户感到“不安”。

门罗币的出现,彻底解决了地址之间可追踪的“弊端”。门罗币允许资产所偶有者“发送和接收资金,而不会在Blockchain上公开显示记录。”但不幸的是,由于门罗币的高度隐私性,导致它已被黑社会和其他犯罪组织所采纳。

虽然门罗彻底匿名了,但是市值目前市值只有121亿美金,今年4月份占到比特币总市值的2.3%。

在比特币发展过程中,核心开发组起到了功不可没的作用,但是开发组内部也会产生很大的分歧,Decred 就是从核心开发组“出逃”的程序员创建。


Decred(DCR)

2015年,几位比特币核心开发人员对比特币现状不满,无法忍受比特币核心开发组垄断比特币的软件开发,认为其已经被“中央化”并且缺乏良好的管理和升级机制。在这样的背景下,他们离开了比特币团队,并开始正式创立Decred。

Decred于2015年9月首次推出,是基于社区管理系统集成到区域块链中的一种开放的和渐进的加密数字货币。

但与比特币最大的区别是,Decred采用PoW和PoS混合方式挖矿,即所有PoW产生的矿都必须先经过PoS验证才能成为合法的块。所以在 DCR 的网络中,几乎杜绝了算力垄断的现象,在一定程度上解决了去中心化项目的治理机制问题。

看来,竞争币不仅在与比特币争市值,还在与比特币争“人才”。

除了这些较为成功的加密货币项目,2017年还涌现了大量公链开发、Dapp应用为主的公链项目。这得益于行业的快速发展,这些新兴项目的体量也在逐渐增大。随着加密货币牛熊更迭,这些项目也偃旗息鼓。在此期间,比特币市值占比也从33%增加到52%,其江湖地位也逐渐稳固。

 
3 比特币的江湖地位


由于比特币的“天然缺陷”,比如交易时间缓慢,不可延展性等,导致1500种加密货币诞生,每一种都在试图克服比特币的一个或者多个缺陷。

但是比特币却始终坐“老大”位置,一统江湖。

a016e0313a734643b329c50452d9cc73.jpg

比特币与竞争币的市值变化趋势


不可否认,竞争币在2016年以来也取得了长足发展。以以太坊为例,2017年比特币的价格从1700美元左右升至9000美元左右,增幅达到了450%,在同一段时间内,以太坊实现了1000%的收益,达到了当前的700美元左右。

从收益比上来看,以太坊确实潜力无限。但是从流通量上来分析,比特币的流通量是以太坊的五倍还多。这意味着以太坊的市值还不到比特币的一半。比特币的地位已经确立的非常稳固,短时间内并不会失去世界上最有价值的加密货币这一地位。

同时有人认为,像EOS这样的有应用的公链项目,会吸引越来越多的用户。超越比特币指日可待。

但是,从用户增加速度与应用来看,EOS与以太坊生态建设正逐渐繁荣。目前EOS公链与以太坊应用总数为950多个,EOS和ETH上的Dapp总量分别是111个和839个,EOS日活达到32130,ETH为1768。

与纯应用类公链相比,比特币与这类应用型公链不同,比特币本身就是应用——钱。而比特币的地址数,目前已接近3000万,可以说秒杀这类应用型公链。

所以,从应用角度来说,比特币依然是江湖老大。

当然,这比不意味着,比特币永远会一家独大。也许随着市场发展,生态应用的繁荣,应用类公链最终崛起,独占鳌头,也不是不可能。


-------------------------
 

孕育了整个区块链行业的比特币,是否会继续领跑加密货币行业?

没人能给出确切的答案。

区块链行业的快速发展,得益于加密货币价格的不断上涨。财富效应让这个行业快速聚集了大量人才。

因此,站在行业发展角度,留给不同数字货币发展的空间还很大,这些加密货币之间也并不是竞争关系。正如李启威的观点,加密货币之间的竞争并不是胜者为王,败者为寇的游戏。

(文/零界)

半年黑客盗走20亿美元!你的数字货币,还安全吗?

攻略guigumitan 发表了文章 • 2018-10-24 10:53 • 来自相关话题

今年年初,一家日本数字货币交易所 CoinCheck 宣布遭遇黑客攻击,约 4 亿美元的新经币(NEM)被窃;

今年6月,韩国最大比特币交易平台、世界五大比特币交易所之一 Bithumb 被盗市值 3000 万美元的 token;

……

根据腾讯安全发布的《2018上半年区块链安全报告》显示,从 2013 年到 2018 年上半年,加密数字货币市场共发生过 54 起安全事件,其中 10 件重大安全事故由黑客攻击引起。仅今年上半年,黑客攻击导致 20 亿美元损失,区块链领域因安全问题损失超 27 亿美元。

为什么交易所被黑客频频得手?你的数字货币,是否安全?区块链生态系统中哪一环节更容易出问题?硅谷洞察研究院今日就试图分析、还原出一份属于区块链生态的安全图谱。


方式:传统攻击远多于新型攻击


在讨论生态安全之前,不妨先对区块链现有技术架构进行切割。硅谷洞察研究院参考业内现有的安全报告,对标准区块链架构进行简化、调整,大致可分为:底层硬件、基础层、中间层、应用层四个层次。





(区块链技术架构图,版权属于:硅谷洞察)


可以说,这众多环节里,只要稍有不慎,区块链就会受到安全的威胁、攻击。硅谷洞察研究院发现,尽管区块链属于新兴技术行业,但在遭到各类安全攻击当中,传统攻击仍居多。

荷兰应用科学研究组织与新加坡科技设计大学的研究人员曾建立了一个区块链安全事件数据库(Blckchain Insident Database),把导致资产损失的攻击事件定义为“安全事件”。那么,安全事件一共有多少起呢?从 2011 年到 2018 年,共有 86 起。造成的损失有多少呢?至少高达 35.5 亿美元。

硅谷洞察研究这 86 起攻击发现,主要是传统攻击、智能合约攻击和共识协议的攻击,三种攻击所占的比例大约为:66%、22%、12%。  

这些传统攻击包括什么呢?最典型的就是黑客攻击,常见还有用户电脑感染木马。

专注区块链生态安全的慢雾安全团队告诉密探,这是因为区块链技术并不是基于完全新的、以往没有出现过的技术打造的,而是组合了各种现有的基础设施,加入新的经济、治理模型,所以传统安全攻击会存在。比如像中心化的交易所、钱包,但背后承载形式其实是 Web 系统、移动 App。所以遭到传统攻击,是不可避免的。


攻击对象:交易所与智能合约是重点


从当前多起区块链安全事件的结果导向来看,这恰好符合业界人士对区块链世界安全问题的共识:“区块链 1.0 时代,重心是在密钥和交易所上,而区块链 2.0 时代的重心则是智能合约。”

先来说说交易所。

卡内基梅隆大学研究人员发现,从 2010 年至 2015 年间建立的 80 家交易所当中,有近一半(38家)已经关闭。其中 25 家交易所遭遇安全漏洞,其中 15 个随后关闭。对于交易所而言,在遭遇安全漏洞后同一季度关闭的可能性比没有遭遇安全漏洞的交易所,概率高出 13 倍。

如今对交易所的攻击方式有哪些呢?根据《区块链安全生存指南》中统计,主要有下面四种方式:服务器被攻击、主机安全问题、恶意程序感染、DDoS 攻击。

比如韩国交易所Youbit(原Yapizon)被盗事件,就是在交易所服务器上发现了恶意软件,这被认为是朝鲜黑客组织 Lazarus 发起的。

密探此前介绍过“比特币第一疑案”——门头沟交易所被盗事件。门头沟共发生了两次被盗,第一次在 2011 年,由于门头沟审计人员所使用的一台电脑权限被攻击导致;第二次是遭到恶意程序感染,共损失 75 万个比特币和门头沟自己的 10 万个比特币,当时这批比特币总价值约 4.5 亿美元,按今天币价来看,将近 50 亿美元!第二次攻击事件也直接导致了门头沟交易所的破产。

说完钱包和交易所,我们来看看智能合约。

新加坡国立大学研究人员 Loi Luu和研究团队曾对以太坊智能合约的潜在安全进行长期检测,他们用开源安全分析程序 Oyente 检测后发现,19366 个以太坊智能合约中,有 8833 个是有缺陷的。这意味着接近一半的智能合约是有潜在安全隐患的。

香港理工大学博士生李晓琦和研究团队曾就区块链安全发表了多篇论文,李晓琦告诉硅谷洞察研究院,“很多代币被黑客进行攻击,就是利用了合约漏洞,大都是代码层面的逻辑漏洞”,而智能合约在代码层面遭到攻击,人为因素在其中起到了重要作用。比如在写代码的过程中,一些智能合约的开发没有得到充分优化,从而导致浪费以太币、消耗过多的 Gas,甚至引起对用户节点造成 DDoS 攻击等风险。

也就是说,即使是针对智能合约或交易所发动的攻击,哪怕在中间层——智能合约代码层面的问题,也可能影响到底层节点。对再去中心化的区块链而言,安全也是“牵一发而动全身”。

慢雾安全团队认为,确实会频繁听到关于智能合约的攻击事件,但并不是说只有这些层才有漏洞,而是因为某些层的研究门槛较低,所以才会频繁听到关于这方面的攻击事件。区块链技术的每一层都有独特的攻击面,由于设计逻辑和承载形式不同,针对每一层的攻击都需要深入分析其底层或者说内部原理,挖掘设计或实现上的缺陷。





(图片来自网络,版权属于原作者)


硅谷洞察研究院根据区块链现有常见的安全漏洞,总结出了下表:





(区块链不同技术层常见攻击,版权属于:硅谷洞察)


现有解决方案:学界业界有共性


针对现有的安全问题,学界和业界提出了什么解决方案呢?

据香港理工大学博士生李晓琦介绍,计算机学术界对区块链行业的敏感度很高,因为数据存储、点对点传输、区块链共识机制、加密算法,乃至安全问题,都是计算机技术的集成应用。如今,不少高校研究团队,已针对现有安全问题,提出了相应解决方案:

比如新加坡国立大学研究人员 Loi Luu,在博士生期间提出两个开源项目。一个是针对区块链共识机制的 51% 算力威胁,提出去中心化挖矿协议——SmartPool ,另一个是前面提到的 Oyente——帮助开发者在主网部署合约之前检查智能合约漏洞的软件。Oyente 创始团队告诉密探,目前 Oyente 仍在多家区块链创业公司中使用。

荷兰与新加坡的研究人员则认为,要想减少智能合约的安全隐患,对智能合约的验证和测试则很重要,而且必须纳入智能合约的设计环节当中。因为,智能合约并不像传统的代码可以修补、迭代,相反,一旦部署到链上,是不可逆转的。当检测到漏洞时,必须部署新的智能合约来修复它。

该研究人员提出以下四种方式,作为验证和测试的工具:第一,完善测试文档,让安全测试流程标准化;第二,模糊(Fuzzing)智能合约的输入;第三,为智能合约开发变异工具;第四,搜索区块链已经部署智能合约的痕迹。

如今,市场上的创业公司针对智能合约安全问题,主要有三种方式检验,第一是测试,第二是审计,第三是形式化验证。简单说,测试依靠程序自动跑,审计靠专家的专业知识去审核,形式化验证靠的是数学方法。  

在慢雾安全团队看来,学界和业界具有众多共性,比如针对智能合约,形式化验证和自动化模糊测试,是目前业界不少团队在做的,而前面学界提出的解决方式之一,就有模糊测试。

无论是交易所,还是钱包,或者是Dapp,背后都站着广大的用户。去中心化通证交易平台 Kyber Network 则建议,从用户角度来看,特别是刚刚进入行业的非技术型用户,并不都具有阅读智能合约并判断 Dapp 真正目的的能力,所以应先从保管好自己的密钥/资产安全做起。

进行过数字货币交易的用户应该知道,数字钱包的密钥多半是一串没有任何规律的字母和数字组成,用户为了方便,通常把它保存在一个剪贴簿,当需要使用时再复制粘贴。但是,一旦自己电脑感染木马,则有可能被黑客追踪剪贴簿的地址,数字钱包就有可能被盗了。





(图片来自网络,版权属于原作者)


慢雾安全团队还建议,用户只参与通过专业安全审计机构把关的 DApp 或游戏,并且要求项目方将代码开源,杜绝后门或漏洞。


趋势:市场大,机会多,门槛高


按照腾讯安全发布的《2018上半年区块链安全报告》来看,区块链领域因安全问题损失超27亿美元,也就意味着,安全市场存在着巨大需求,因为它贯穿于区块链技术的每一个环节。

但硅谷洞察研究院发现,无论是 PitchBook 还是 CB Insight 的数据库,对区块链创业公司的类别划分中,安全并未单独成为一类,而把其跟身份认证、监管、数据储存等归位一类。慢雾安全团队认为,在任何行业发展过程中,安全一般是滞后的。在区块链行业不断发展的过程中,会伴随着安全事件的发生,给行业从业者带来警醒作用。





(截图自PitchBook 2018第三季度融资报告)


研究 PitchBook 2018年第三季度融资区块链公司发现,属于安全类别中的初创公司主要专注于交易安全,比如做比特币安全钱包的公司 Xapo 和硬件钱包公司 Ledger。Filament 和 Post-Quantum 则分别关注物联网与区块链的结合,以及区块链网络通讯安全。可见,对于区块链安全领域的创业,参与者并不多,市场很大,机会也很多。

分析 PitchBook 这几家公司可以发现,像 Xapo,成立于2012年,为用户提供在线比特币钱包、离线冷储存和基于比特币的借记卡三种服务。至今总融资额已高达4000万美元。投资人当中,就有领英创始人 Reid Hoffman、Max Levchin 等硅谷大佬。





(Greylock Partners 宣布投资Xapo)


同样做钱包的 Ledger,成立于2014年,如今总融资额高达 8500 万美元,最新一轮融资额高达7500万美元。

除了钱包公司屡获高额融资之外,交易所也瞄准了钱包。

就在 8 月,按交易量计算,全球最大加密货币交易所Binance(币安),对外第一笔收购就是移动钱包公司Trust Wallet。Trust Wallet 作为一款去中心化的加密钱包,目前主要专注于为基于以太坊区块链的数字代币提供安全存储服务,用户的私钥或其他隐私信息并不会保存在该公司的服务器上。

慢雾安全团队认为,这恰好意味着安全逐渐成为区块链的刚需,行业渴望数字资产的安全感。

但是,参与者少,融资额高,并不意味着参与者可以随时进入。总的来说,针对区块链安全生态的创业公司并不多,这是由区块链安全创业的高门槛决定的。慢雾安全团队认为,第一,是安全攻防实战经验的门槛,第二是要有区块链技术门槛。更重要的是,要守正出奇,需要创业者站在攻击者的视角去思考问题。

“你的对手是地下黑客,是亡灵军团,他们往往在暗处,他们毫不留情地收割。你得快,才能保护好用户。安全需要:唯快不破”。慢雾安全团队负责人告诉硅谷洞察研究院。

在安全事件频发的区块链领域,你持有的数字货币被盗过吗?大家又遭遇过什么安全事件?欢迎留言讨论。 查看全部
coincheck-bi-hack.jpg

今年年初,一家日本数字货币交易所 CoinCheck 宣布遭遇黑客攻击,约 4 亿美元的新经币(NEM)被窃;

今年6月,韩国最大比特币交易平台、世界五大比特币交易所之一 Bithumb 被盗市值 3000 万美元的 token;

……

根据腾讯安全发布的《2018上半年区块链安全报告》显示,从 2013 年到 2018 年上半年,加密数字货币市场共发生过 54 起安全事件,其中 10 件重大安全事故由黑客攻击引起。仅今年上半年,黑客攻击导致 20 亿美元损失,区块链领域因安全问题损失超 27 亿美元。

为什么交易所被黑客频频得手?你的数字货币,是否安全?区块链生态系统中哪一环节更容易出问题?硅谷洞察研究院今日就试图分析、还原出一份属于区块链生态的安全图谱。


方式:传统攻击远多于新型攻击


在讨论生态安全之前,不妨先对区块链现有技术架构进行切割。硅谷洞察研究院参考业内现有的安全报告,对标准区块链架构进行简化、调整,大致可分为:底层硬件、基础层、中间层、应用层四个层次。

aq1.png

(区块链技术架构图,版权属于:硅谷洞察)


可以说,这众多环节里,只要稍有不慎,区块链就会受到安全的威胁、攻击。硅谷洞察研究院发现,尽管区块链属于新兴技术行业,但在遭到各类安全攻击当中,传统攻击仍居多。

荷兰应用科学研究组织与新加坡科技设计大学的研究人员曾建立了一个区块链安全事件数据库(Blckchain Insident Database),把导致资产损失的攻击事件定义为“安全事件”。那么,安全事件一共有多少起呢?从 2011 年到 2018 年,共有 86 起。造成的损失有多少呢?至少高达 35.5 亿美元。

硅谷洞察研究这 86 起攻击发现,主要是传统攻击、智能合约攻击和共识协议的攻击,三种攻击所占的比例大约为:66%、22%、12%。  

这些传统攻击包括什么呢?最典型的就是黑客攻击,常见还有用户电脑感染木马。

专注区块链生态安全的慢雾安全团队告诉密探,这是因为区块链技术并不是基于完全新的、以往没有出现过的技术打造的,而是组合了各种现有的基础设施,加入新的经济、治理模型,所以传统安全攻击会存在。比如像中心化的交易所、钱包,但背后承载形式其实是 Web 系统、移动 App。所以遭到传统攻击,是不可避免的。


攻击对象:交易所与智能合约是重点


从当前多起区块链安全事件的结果导向来看,这恰好符合业界人士对区块链世界安全问题的共识:“区块链 1.0 时代,重心是在密钥和交易所上,而区块链 2.0 时代的重心则是智能合约。”

先来说说交易所。

卡内基梅隆大学研究人员发现,从 2010 年至 2015 年间建立的 80 家交易所当中,有近一半(38家)已经关闭。其中 25 家交易所遭遇安全漏洞,其中 15 个随后关闭。对于交易所而言,在遭遇安全漏洞后同一季度关闭的可能性比没有遭遇安全漏洞的交易所,概率高出 13 倍。

如今对交易所的攻击方式有哪些呢?根据《区块链安全生存指南》中统计,主要有下面四种方式:服务器被攻击、主机安全问题、恶意程序感染、DDoS 攻击。

比如韩国交易所Youbit(原Yapizon)被盗事件,就是在交易所服务器上发现了恶意软件,这被认为是朝鲜黑客组织 Lazarus 发起的。

密探此前介绍过“比特币第一疑案”——门头沟交易所被盗事件。门头沟共发生了两次被盗,第一次在 2011 年,由于门头沟审计人员所使用的一台电脑权限被攻击导致;第二次是遭到恶意程序感染,共损失 75 万个比特币和门头沟自己的 10 万个比特币,当时这批比特币总价值约 4.5 亿美元,按今天币价来看,将近 50 亿美元!第二次攻击事件也直接导致了门头沟交易所的破产。

说完钱包和交易所,我们来看看智能合约。

新加坡国立大学研究人员 Loi Luu和研究团队曾对以太坊智能合约的潜在安全进行长期检测,他们用开源安全分析程序 Oyente 检测后发现,19366 个以太坊智能合约中,有 8833 个是有缺陷的。这意味着接近一半的智能合约是有潜在安全隐患的。

香港理工大学博士生李晓琦和研究团队曾就区块链安全发表了多篇论文,李晓琦告诉硅谷洞察研究院,“很多代币被黑客进行攻击,就是利用了合约漏洞,大都是代码层面的逻辑漏洞”,而智能合约在代码层面遭到攻击,人为因素在其中起到了重要作用。比如在写代码的过程中,一些智能合约的开发没有得到充分优化,从而导致浪费以太币、消耗过多的 Gas,甚至引起对用户节点造成 DDoS 攻击等风险。

也就是说,即使是针对智能合约或交易所发动的攻击,哪怕在中间层——智能合约代码层面的问题,也可能影响到底层节点。对再去中心化的区块链而言,安全也是“牵一发而动全身”。

慢雾安全团队认为,确实会频繁听到关于智能合约的攻击事件,但并不是说只有这些层才有漏洞,而是因为某些层的研究门槛较低,所以才会频繁听到关于这方面的攻击事件。区块链技术的每一层都有独特的攻击面,由于设计逻辑和承载形式不同,针对每一层的攻击都需要深入分析其底层或者说内部原理,挖掘设计或实现上的缺陷。

aq2.jpg

(图片来自网络,版权属于原作者)


硅谷洞察研究院根据区块链现有常见的安全漏洞,总结出了下表:

aq3.jpg

(区块链不同技术层常见攻击,版权属于:硅谷洞察)


现有解决方案:学界业界有共性


针对现有的安全问题,学界和业界提出了什么解决方案呢?

据香港理工大学博士生李晓琦介绍,计算机学术界对区块链行业的敏感度很高,因为数据存储、点对点传输、区块链共识机制、加密算法,乃至安全问题,都是计算机技术的集成应用。如今,不少高校研究团队,已针对现有安全问题,提出了相应解决方案:

比如新加坡国立大学研究人员 Loi Luu,在博士生期间提出两个开源项目。一个是针对区块链共识机制的 51% 算力威胁,提出去中心化挖矿协议——SmartPool ,另一个是前面提到的 Oyente——帮助开发者在主网部署合约之前检查智能合约漏洞的软件。Oyente 创始团队告诉密探,目前 Oyente 仍在多家区块链创业公司中使用。

荷兰与新加坡的研究人员则认为,要想减少智能合约的安全隐患,对智能合约的验证和测试则很重要,而且必须纳入智能合约的设计环节当中。因为,智能合约并不像传统的代码可以修补、迭代,相反,一旦部署到链上,是不可逆转的。当检测到漏洞时,必须部署新的智能合约来修复它。

该研究人员提出以下四种方式,作为验证和测试的工具:第一,完善测试文档,让安全测试流程标准化;第二,模糊(Fuzzing)智能合约的输入;第三,为智能合约开发变异工具;第四,搜索区块链已经部署智能合约的痕迹。

如今,市场上的创业公司针对智能合约安全问题,主要有三种方式检验,第一是测试,第二是审计,第三是形式化验证。简单说,测试依靠程序自动跑,审计靠专家的专业知识去审核,形式化验证靠的是数学方法。  

在慢雾安全团队看来,学界和业界具有众多共性,比如针对智能合约,形式化验证和自动化模糊测试,是目前业界不少团队在做的,而前面学界提出的解决方式之一,就有模糊测试。

无论是交易所,还是钱包,或者是Dapp,背后都站着广大的用户。去中心化通证交易平台 Kyber Network 则建议,从用户角度来看,特别是刚刚进入行业的非技术型用户,并不都具有阅读智能合约并判断 Dapp 真正目的的能力,所以应先从保管好自己的密钥/资产安全做起。

进行过数字货币交易的用户应该知道,数字钱包的密钥多半是一串没有任何规律的字母和数字组成,用户为了方便,通常把它保存在一个剪贴簿,当需要使用时再复制粘贴。但是,一旦自己电脑感染木马,则有可能被黑客追踪剪贴簿的地址,数字钱包就有可能被盗了。

aq4.jpg

(图片来自网络,版权属于原作者)


慢雾安全团队还建议,用户只参与通过专业安全审计机构把关的 DApp 或游戏,并且要求项目方将代码开源,杜绝后门或漏洞。


趋势:市场大,机会多,门槛高


按照腾讯安全发布的《2018上半年区块链安全报告》来看,区块链领域因安全问题损失超27亿美元,也就意味着,安全市场存在着巨大需求,因为它贯穿于区块链技术的每一个环节。

但硅谷洞察研究院发现,无论是 PitchBook 还是 CB Insight 的数据库,对区块链创业公司的类别划分中,安全并未单独成为一类,而把其跟身份认证、监管、数据储存等归位一类。慢雾安全团队认为,在任何行业发展过程中,安全一般是滞后的。在区块链行业不断发展的过程中,会伴随着安全事件的发生,给行业从业者带来警醒作用。

aq5.jpg

(截图自PitchBook 2018第三季度融资报告)


研究 PitchBook 2018年第三季度融资区块链公司发现,属于安全类别中的初创公司主要专注于交易安全,比如做比特币安全钱包的公司 Xapo 和硬件钱包公司 Ledger。Filament 和 Post-Quantum 则分别关注物联网与区块链的结合,以及区块链网络通讯安全。可见,对于区块链安全领域的创业,参与者并不多,市场很大,机会也很多。

分析 PitchBook 这几家公司可以发现,像 Xapo,成立于2012年,为用户提供在线比特币钱包、离线冷储存和基于比特币的借记卡三种服务。至今总融资额已高达4000万美元。投资人当中,就有领英创始人 Reid Hoffman、Max Levchin 等硅谷大佬。

aq6.jpg

(Greylock Partners 宣布投资Xapo)


同样做钱包的 Ledger,成立于2014年,如今总融资额高达 8500 万美元,最新一轮融资额高达7500万美元。

除了钱包公司屡获高额融资之外,交易所也瞄准了钱包。

就在 8 月,按交易量计算,全球最大加密货币交易所Binance(币安),对外第一笔收购就是移动钱包公司Trust Wallet。Trust Wallet 作为一款去中心化的加密钱包,目前主要专注于为基于以太坊区块链的数字代币提供安全存储服务,用户的私钥或其他隐私信息并不会保存在该公司的服务器上。

慢雾安全团队认为,这恰好意味着安全逐渐成为区块链的刚需,行业渴望数字资产的安全感。

但是,参与者少,融资额高,并不意味着参与者可以随时进入。总的来说,针对区块链安全生态的创业公司并不多,这是由区块链安全创业的高门槛决定的。慢雾安全团队认为,第一,是安全攻防实战经验的门槛,第二是要有区块链技术门槛。更重要的是,要守正出奇,需要创业者站在攻击者的视角去思考问题。

“你的对手是地下黑客,是亡灵军团,他们往往在暗处,他们毫不留情地收割。你得快,才能保护好用户。安全需要:唯快不破”。慢雾安全团队负责人告诉硅谷洞察研究院。

在安全事件频发的区块链领域,你持有的数字货币被盗过吗?大家又遭遇过什么安全事件?欢迎留言讨论。

比特币DoS漏洞和超发漏洞技术分析,攻击者或无法获利

攻略8btc 发表了文章 • 2018-09-29 17:12 • 来自相关话题

图片来自:Mowie Jak Jest


上周,bitcoin core 0.16.3 版本客户端的突然发布,以及开发者敦促大家尽快升级一事,令比特币世界的人们感到了惊讶。表面上的原因,在于0.14-0.16.2版本客户端中存在一个拒绝服务 (DoS) 向量需要被修补。到后来,我们才发现,在0.15-0.16.2版本core客户端中的另一个漏洞,可能会引起比特币的超发问题。

在这篇文章中,作者试图说明:到底发生了什么?潜在的危险是什么?以及如果有人利用这个漏洞,还将会发生什么?

 
双重支付的两种方式
 

在我们接触实际的漏洞之前,我们需要解释一些东西。我们首先需要定义一下双重支付,因为这个漏洞就可以用于双重支付。

所谓双重支付的情况,就比如说爱丽丝(Alice)向鲍勃(Bob)支付了一笔币,然后她又把相同的币再一次支付给了查利(Charlie),爱丽丝基本上试图进行两次支付,其中的一笔她知道会被拒回。当然,当我们考虑支付时,爱丽丝的某些账户通过写这两次支付被透支了。这很接近比特币的工作原理,但并不是十分准确。

比特币并不是基于帐户模型的,而是基于未花费交易输出(UTXO)。一笔交易的输出基本包含了一个地址以及数量。一旦输出被使用了,它就无法再次被花费。试想一下一个UTXO(作为一笔发送给你的币),它可以是任意数量的,比如说0.413 BTC。

比特币的双重支付意味着一笔币(UTXO)被花费了两次。通常,这意味着爱丽丝将她的0.413 BTC发送给了鲍勃,然后她又把同一笔比特币又发送给了查利。

比特币的解决方法是,其中一笔交易会纳入一个区块,由此来决定实际谁得到了报酬。如果两笔交易不知何故都传递到了多个区块,那么后面发生的区块,就会被软件给拒绝掉。如果两笔交易都在同一个区块当中,那么这个区块也会遭到软件的拒绝。

基本上,比特币软件会检测到双重支付行为,如果有双重支付行为的发生,则应该拒绝掉相应的区块。

然而,在两笔不同的交易中发送同一个UTXO,并不是唯一的双花方法。实际还存在着同一UTXO在同一交易进行双重支付的病态情况。在这种情况下,爱丽丝向鲍勃发送同一笔币两次。所以,爱丽丝实际支付的是0.413 BTC,但鲍勃收到的却是0.826 BTC。这显然不是一个有效的交易,因为只有一笔价值0.413 BTC的UTXO 是被发送的。这就相当于,爱丽丝用同一10美元向鲍勃发送了两次,而鲍勃收到的则是20美元。

 
定义漏洞
 

因此,总结一下我们所定义的两种类型的双重支付尝试:

使用两笔或更多的交易,来花费相同的UTXO;
使用一笔交易花费同一UTXO多次;


结果表明,Bitcoin Core 软件正确地处理了第一个问题,而第二个问题,正是我们要关心的。任何人都可以像这样构造出一笔双花交易,但要让节点接受这种交易,又是另一回事了。

目前有两种方法可以让交易被纳入一个区块当中: 

A. 支付足够的费用,将交易广播到网络上,那么矿工会负责把交易纳入区块当中;

B. 作为一名矿工,把交易纳入一个区块;

(A) 除了创建交易,并将其广播到网络上的节点之外,你不需要做太多的工作。 (B) 需要你找到足够的工作量证明。这也是这次漏洞的关键。

(A) 不是一个可能的攻击向量,因为这些交易会立即被标记为无效的,网络上的节点会拒绝它们。没有矿工们的合作,这种交易就无法进入矿工们的记忆库,因为它们不会得到传播。

(B)是漏洞显现的唯一情况。换句话说,想要利用这个漏洞,你就需要工作量证明,或者说足够的矿机设备和电力。

为了明确起见,双花交易有4种情况需要处理:

1A — 多笔 mempool交易花费了同一UTXO ;

1B — 多笔区块交易花费了同一UTXO ;

2A — 单笔mempool交易花费了同一UTXO多次;

2B — 单笔区块交易花费了同一UTXO多次;

该漏洞有两种表现形式。在0.14.x版本客户端中,存在着一个拒绝服务(DoS)的漏洞,而在0.15.x - 0.16.2版本的客户端,则存在一个超发漏洞。接下来,我们会分别分析它们。

 
拒绝服务攻击
 

故事始于2009年的Bitcoin 0.1版本客户端,这一版本的代码通过拒绝案例1B和案例2B(检查区块没有双重支付)来强制达成共识。





为了清晰起见,作者删除了很多代码


你可以看到“检查冲突”的注释,其代码负责检查每个输入没有被花费。“将输出标记为已使用”注释下面的代码,标记了UTXO的使用。如果任何UTXO的花费超过一次,则会导致错误。

在2011年,PR 443被合并到了比特币代码库。这一改变是为了处理通过mempool (上面的情况2A)传输单笔交易双重支付的情况。这个合并请求注释的目的非常明确:

    “而且,没有具有重复输入的交易会被纳入区块当中......几个星期前,有人尝试过了,但这些交易并没有被纳入区块。我假设某个地方存在了一个检查关,它会阻止这些重复交易进入区块,虽然我没有对这个问题进行任何挖掘。这实际上是为了防止这种明显无效的交易得到中继。”






实际的代码更改,或多或少与上面的ConnectInputs 中的“检查冲突”注释下的代码执行了相同的操作,但位于的是不同的位置。代码更改是在CheckTransaction 中运行的,其负责了所有上述的4种情况(1A, 1B, 2A, 2B)。因此,我们在区块双重支付共识代码中有了一些冗余,正如案例1B和2B都被检查了两次,其中一次检查是在CheckTransaction,另一次则发生在ConnectInputs。

到了2013年,PR 2224被纳入了比特币软件。这一改变的目的是区分共识错误(例如双重支付)和系统错误(例如磁盘空间耗尽)之间的差别,正如PR注释中所表明的那样:

“它引入了CValidationState,它会存储关于区块的元数据,或者正在执行的交易验证数据。它被用于区分验证错误(例如,未能满足网络规则)和运行时错误(比如磁盘空间的不足),从前这些可能会产生混淆,因磁盘空间用完会导致区块被标记为无效。此外,CValidationState还承担了跟踪 DoS级别的角色(因此它不需要存储于交易或区块当中...)”


实际的相关代码更改如下:






在那个时候,ConnectInputs已经被模块化成多个方法,并且这个函数成为了检查双重支付的函数。这里的关键改变是,曾经的error被改为了 assert

assert在C++中是做什么的?它会完全中止程序。程序员为什么要在这里停止程序?这就是Pull请求的目的所在。下面就是那个时候的代码片段:






它会像以前一样处理案例1B和2B。函数名则从ConnectInputs更改为ConnectBlock,但检查案例1B和2B的冗余性仍然在PR 443中保留。正如我们已经看到的,UpdateCoins做了第二次双重支付检查。其中CheckBlock通过调用CheckTransaction进行了第一次双重支付检查:











由于这是第二次检查相同的内容,所以要让UpdateCoins的双花检查失败的唯一方法,就是存在某种UTXO数据库或交易存储损坏。事实上,这似乎是改成assert的原因。因为CheckBlock通过CheckTransaction在UpdateCoins之前已经进行了检查,我们已知道某笔交易并不是双花交易。因此,PR 2224正确地推测到,UpdateCoins中的这个状态必然是一个系统错误,而不是一个共识错误。在这种情况下,为了防止进一步的数据损坏,正确的做法就是停止程序。

到了2017年,PR 9049作为Bitcoin 0.14的一部分被引入比特币网络。随着隔离见证(Segwit)的纳入,它是加快区块验证时间的诸多更改的其中之一,其代码更改实际是非常少的:






你可以看到布尔函数 fCheckDuplicateInputs被添加了进去,用于加快区块检查。我们将在下面看到,这是一个被认为是冗余的检查。不幸的是, UpdateCoins中的代码在PR 2224中被更改为系统损坏检查,而不是共识检查。到了0.14.0版本客户端,其代码进行了更多的模块化更改,而assert也发生了一些改变:






曾经是作为一个冗余检查,现在却成了负责区块单笔交易双重支付检查(案例2B),并负责停止程序。从技术上来说,它仍然是强制执行共识规则。只是在中止程序问题上,它表现地非常糟糕。

PR 9049是如何获得通过的? Greg Maxwell 给了我IRC上的聊天记录。






长话短说,开发者们在讨论PR 9049时,倾向于认为区块级单笔交易双重支付(案例2B)会在PR 443处遭到检查,而没有考虑PR 2224。这使得开发者们并没有密切关注PR 9049;

总而言之:

1、在2011年引入用于防止双重支付交易中继(案例2A)的 PR 443,实际产生了一个副作用,即对区块的双重支付共识规则检查创造了冗余校验(案例1B和 2B)。

2、PR 2224是在2013年引入的,作为一种副作用,将(1)中用于区块验证的代码,从冗余升级到了共识层;

3、PR 9049是在2017年被引入的,并且它跳过了(1)中用于单个区块单笔交易双重支付(案例1B)检查的代码。开发人员错误地认为代码是多余的,因为他们没有考虑到(2)。事实上,这种改变跳过了共识的关键部分。

公平地讲,这些事的汇合导致了这次漏洞。

 
DoS漏洞的严重性
 

这意味着 0.14.x 版本的Core软件可能会因为一个奇怪的区块而崩溃。而要让软件崩溃,攻击者需要做的事是:

创建一笔花费两次同一UTXO的交易;
通过足够的工作量证明,将(1)中的交易纳入一个比特币区块;
将这个区块广播到0.14.x版本软件的节点;


(1) 和 (3) 的成本并不高,而步骤(2)的最小成本为12.5 BTC。

如果你认为从博弈论的角度来看,分裂网络并不是那么好,那么利用这个漏洞的动机就相当低了。充其量,作为攻击者,你花费了12.5 BTC将部分全节点给搞崩溃。由于不可能从分裂网络中获利,攻击者无法轻易地补偿自己的攻击成本。

如果这是唯一的漏洞,那么攻击者可能给很多人带来一些不便,但这不会是持续的,因为这些被攻击的节点可以简单地重启,并连接到其它诚实节点。一旦有一个较长的链,那么恶意区块攻击就会完全失去它的威胁。除非攻击者以每区块12.5 BTC的代价继续创建区块,并将其传播给 0.14.x版本软件的节点,否则攻击就是不可持续的。

换句话说,虽然这个漏洞的确存在着,但对 DoS攻击的经济刺激却是相当低的。

 
超发漏洞
 

从0.15.0版本软件开始,core软件引入了一个新的特性,以便更快地查找和存储UTXO,而这恰恰又引入了另一个漏洞。当一笔具有双重支付单个交易的区块纳入区块链时,软件会将其视为有效,而不会出现崩溃的现象。

这就意味着一笔病理性交易(相同UTXO在同一交易中被使用多次,即案例2B),0.14版本的节点会因此而崩溃,而使用0.15版本软件的节点却会认为交易是有效的,这基本上是凭空在创建比特币。

谈谈它是如何发生的。在0.15中出现的PR 10195 ,引入了很多内容,但它的主要要点在于改变了 UTXO的存储方式,使得它们更有效地进行查找。因此,它出现了很多变化,包括对早期UpdateCoins函数的更改:






注意,assert(false) 周围的代码是如何被完全取出的。注意这一点,0.15.0中的PR 10537也更改了代码。






assert失败的条件现在取决于inputs.SpendCoin,它看起来是这样子的:






本质上,SpendCoin返回“ false”值的唯一方法,就是让币不存在于UTXO集中。但正如你所看到的,这需要币是FRESH的,而不是DIRTY的。这些不是常见的术语,但值得庆幸的是,core开发者Andrew Chow给出了解释:

“现在的问题是,什么时候UTXO会被标记为FRESH?当它们被添加到UTXO数据库时,它们就会被标记为FRESH。但是,UTXO数据库仍然只存在于存储当中的(作为缓存)。当它被保存到磁盘时,存储中的条目将不再被标记为FRESH……”


标记为FRESH的币,是进入交易存储池(memory pool)中的币。而攻击者可以通过 UpdateCoins函数中的assert语句来破坏节点。更糟的是,如果币是属于DIRTY的(基本上从磁盘上读取的),那么这就会导致比特币的超发。

因此,攻击者可以欺骗那些运行 0.15.0- 0.16.2版本软件的矿工接受一个奇怪的、无效的区块,从而导致比特币的供应超发。

 
超发漏洞的严重性
 

这种攻击的经济诱因似乎明显高于DoS攻击,因为攻击者可能会凭空制造出比特币。但你仍然需要有挖矿设备来执行攻击,但考虑到潜在的经济诱因,这可能是值得的,或者看起来是这样的。

下面是使用这种漏洞的一种简单攻击方式:

创造一笔带有双重支付交易的区块,其会向自己支付两次,比方说 50 BTC →100 BTC;
将该区块广播给0.15/0.16版本客户端的所有矿工;


下面是会发生的一些事:

    0.14.x 版本节点会崩溃;
    较旧版本的节点及其它替代客户端会拒绝这个区块;
    很多区块链浏览器是运行在自定义软件上的,而不是基于core,因此,至少有一些浏览器会拒绝该区块,并且不会显示来自该区块的任何交易。
    取决于矿工们运行的软件,我们可能会迎来链分裂;

有可能,所有的矿工都是运行的Bitcoin Core 0.15+版本软件,在这种情况下,不受攻击的客户端可能会停滞不前。也有可能矿工会运行其它东西,在这种情况下,当他们发现一个区块时,链就会发生分叉。

由于这些违规行为,网络上的人们很快就会追踪到这一点,可能已提醒一些开发人员,并且core开发者已经修复了它。如果存在分叉,那么在那个时候,关于哪条链是正确的共识链,将开始得到讨论,而出现意外超发的链,可能会遭到抛弃。如果真的发生了,那么社区可能会自愿进行一次回滚,以惩罚攻击者。

所以对于攻击者来说,这不会带来50 BTC的收入,更可能的是失去12.5 BTC。如果攻击者加倍花费,比如说200 BTC,那么超发漏洞将持续存在的可能性会更小,因为攻击会更明显。

因此,从攻击者的角度来看,这并不是一种好的获利方式。

攻击者可以获利的另一种方式,就是事先做空比特币,然后再执行攻击。这也是具有风险的,因为攻击不能保证比特币价格会下跌,特别是当危机得到迅速和果断处理时。此外,考虑到大多数交易所提供的杠杠交易,都需要AML/KYC,这可能导致攻击者很快暴露。

攻击者不仅面临着巨大的资金风险,而且还会有身体危险。从经济角度来看,这并不是一个容易获利的漏洞。

当然,有一些别有用心的人,可能会用这种漏洞来吓唬那些比特币持有者。投资回报率将变得更抽象,因此从理论上来讲,这可能会达到这些别有用心者的目的。

 
结论
 

毫无疑问,这是一个相当严重的漏洞。尽管我和Awemany之间有着分歧,但我很感激他选择公开地和我辩论。也就是说,考虑到经济博弈理论,我不认为这个漏洞会像他所描述的那样严重。

即使这个漏洞在被发现之前被坏人所利用,攻击者可能也不会选择利用它,因为从经济学上来讲,它是没有意义的。可以肯定的是,这一技术漏洞应该被修复,并且开发者应该做得更好,但真正能够利用这种漏洞的对象其实是非常少的,基本上,只有那些想要摧毁比特币的组织才会这么干。

Bitcoin Core开发者的教训有很多:

1、任何共识变化(即使是微小的变化,例如9049),也需要更多的人进行审查; 2、需要对病理交易进行更多的检查; 3、代码库中哪些检查是冗余的,哪些检查是不冗余的,以及实际代码将要做些什么,需要变得更加清晰; 4、过去存在漏洞,将来也会存在漏洞。现在重要的是,学习并反思这一教训;


原文:https://medium.com/@jimmysong/bitcoin-core-bug-cve-2018-17144-an-analysis-f80d9d373362
作者:Jimmy Song
编译:洒脱喜 查看全部
201809290449331285.jpg

图片来自:Mowie Jak Jest


上周,bitcoin core 0.16.3 版本客户端的突然发布,以及开发者敦促大家尽快升级一事,令比特币世界的人们感到了惊讶。表面上的原因,在于0.14-0.16.2版本客户端中存在一个拒绝服务 (DoS) 向量需要被修补。到后来,我们才发现,在0.15-0.16.2版本core客户端中的另一个漏洞,可能会引起比特币的超发问题。

在这篇文章中,作者试图说明:到底发生了什么?潜在的危险是什么?以及如果有人利用这个漏洞,还将会发生什么?

 
双重支付的两种方式
 

在我们接触实际的漏洞之前,我们需要解释一些东西。我们首先需要定义一下双重支付,因为这个漏洞就可以用于双重支付。

所谓双重支付的情况,就比如说爱丽丝(Alice)向鲍勃(Bob)支付了一笔币,然后她又把相同的币再一次支付给了查利(Charlie),爱丽丝基本上试图进行两次支付,其中的一笔她知道会被拒回。当然,当我们考虑支付时,爱丽丝的某些账户通过写这两次支付被透支了。这很接近比特币的工作原理,但并不是十分准确。

比特币并不是基于帐户模型的,而是基于未花费交易输出(UTXO)。一笔交易的输出基本包含了一个地址以及数量。一旦输出被使用了,它就无法再次被花费。试想一下一个UTXO(作为一笔发送给你的币),它可以是任意数量的,比如说0.413 BTC。

比特币的双重支付意味着一笔币(UTXO)被花费了两次。通常,这意味着爱丽丝将她的0.413 BTC发送给了鲍勃,然后她又把同一笔比特币又发送给了查利。

比特币的解决方法是,其中一笔交易会纳入一个区块,由此来决定实际谁得到了报酬。如果两笔交易不知何故都传递到了多个区块,那么后面发生的区块,就会被软件给拒绝掉。如果两笔交易都在同一个区块当中,那么这个区块也会遭到软件的拒绝。

基本上,比特币软件会检测到双重支付行为,如果有双重支付行为的发生,则应该拒绝掉相应的区块。

然而,在两笔不同的交易中发送同一个UTXO,并不是唯一的双花方法。实际还存在着同一UTXO在同一交易进行双重支付的病态情况。在这种情况下,爱丽丝向鲍勃发送同一笔币两次。所以,爱丽丝实际支付的是0.413 BTC,但鲍勃收到的却是0.826 BTC。这显然不是一个有效的交易,因为只有一笔价值0.413 BTC的UTXO 是被发送的。这就相当于,爱丽丝用同一10美元向鲍勃发送了两次,而鲍勃收到的则是20美元。

 
定义漏洞
 

因此,总结一下我们所定义的两种类型的双重支付尝试:


使用两笔或更多的交易,来花费相同的UTXO;
使用一笔交易花费同一UTXO多次;



结果表明,Bitcoin Core 软件正确地处理了第一个问题,而第二个问题,正是我们要关心的。任何人都可以像这样构造出一笔双花交易,但要让节点接受这种交易,又是另一回事了。

目前有两种方法可以让交易被纳入一个区块当中: 

A. 支付足够的费用,将交易广播到网络上,那么矿工会负责把交易纳入区块当中;

B. 作为一名矿工,把交易纳入一个区块;

(A) 除了创建交易,并将其广播到网络上的节点之外,你不需要做太多的工作。 (B) 需要你找到足够的工作量证明。这也是这次漏洞的关键。

(A) 不是一个可能的攻击向量,因为这些交易会立即被标记为无效的,网络上的节点会拒绝它们。没有矿工们的合作,这种交易就无法进入矿工们的记忆库,因为它们不会得到传播。

(B)是漏洞显现的唯一情况。换句话说,想要利用这个漏洞,你就需要工作量证明,或者说足够的矿机设备和电力。

为了明确起见,双花交易有4种情况需要处理:

1A — 多笔 mempool交易花费了同一UTXO ;

1B — 多笔区块交易花费了同一UTXO ;

2A — 单笔mempool交易花费了同一UTXO多次;

2B — 单笔区块交易花费了同一UTXO多次;

该漏洞有两种表现形式。在0.14.x版本客户端中,存在着一个拒绝服务(DoS)的漏洞,而在0.15.x - 0.16.2版本的客户端,则存在一个超发漏洞。接下来,我们会分别分析它们。

 
拒绝服务攻击
 

故事始于2009年的Bitcoin 0.1版本客户端,这一版本的代码通过拒绝案例1B和案例2B(检查区块没有双重支付)来强制达成共识。

201809290427248594.png

为了清晰起见,作者删除了很多代码


你可以看到“检查冲突”的注释,其代码负责检查每个输入没有被花费。“将输出标记为已使用”注释下面的代码,标记了UTXO的使用。如果任何UTXO的花费超过一次,则会导致错误。

在2011年,PR 443被合并到了比特币代码库。这一改变是为了处理通过mempool (上面的情况2A)传输单笔交易双重支付的情况。这个合并请求注释的目的非常明确:

    “而且,没有具有重复输入的交易会被纳入区块当中......几个星期前,有人尝试过了,但这些交易并没有被纳入区块。我假设某个地方存在了一个检查关,它会阻止这些重复交易进入区块,虽然我没有对这个问题进行任何挖掘。这实际上是为了防止这种明显无效的交易得到中继。”

201809290429217163.png


实际的代码更改,或多或少与上面的ConnectInputs 中的“检查冲突”注释下的代码执行了相同的操作,但位于的是不同的位置。代码更改是在CheckTransaction 中运行的,其负责了所有上述的4种情况(1A, 1B, 2A, 2B)。因此,我们在区块双重支付共识代码中有了一些冗余,正如案例1B和2B都被检查了两次,其中一次检查是在CheckTransaction,另一次则发生在ConnectInputs。

到了2013年,PR 2224被纳入了比特币软件。这一改变的目的是区分共识错误(例如双重支付)和系统错误(例如磁盘空间耗尽)之间的差别,正如PR注释中所表明的那样:


“它引入了CValidationState,它会存储关于区块的元数据,或者正在执行的交易验证数据。它被用于区分验证错误(例如,未能满足网络规则)和运行时错误(比如磁盘空间的不足),从前这些可能会产生混淆,因磁盘空间用完会导致区块被标记为无效。此外,CValidationState还承担了跟踪 DoS级别的角色(因此它不需要存储于交易或区块当中...)”



实际的相关代码更改如下:

201809290429287993.png


在那个时候,ConnectInputs已经被模块化成多个方法,并且这个函数成为了检查双重支付的函数。这里的关键改变是,曾经的error被改为了 assert

assert在C++中是做什么的?它会完全中止程序。程序员为什么要在这里停止程序?这就是Pull请求的目的所在。下面就是那个时候的代码片段:

201809290429336876.png


它会像以前一样处理案例1B和2B。函数名则从ConnectInputs更改为ConnectBlock,但检查案例1B和2B的冗余性仍然在PR 443中保留。正如我们已经看到的,UpdateCoins做了第二次双重支付检查。其中CheckBlock通过调用CheckTransaction进行了第一次双重支付检查:

201809290429374708.png


201809290429418890.png


由于这是第二次检查相同的内容,所以要让UpdateCoins的双花检查失败的唯一方法,就是存在某种UTXO数据库或交易存储损坏。事实上,这似乎是改成assert的原因。因为CheckBlock通过CheckTransaction在UpdateCoins之前已经进行了检查,我们已知道某笔交易并不是双花交易。因此,PR 2224正确地推测到,UpdateCoins中的这个状态必然是一个系统错误,而不是一个共识错误。在这种情况下,为了防止进一步的数据损坏,正确的做法就是停止程序。

到了2017年,PR 9049作为Bitcoin 0.14的一部分被引入比特币网络。随着隔离见证(Segwit)的纳入,它是加快区块验证时间的诸多更改的其中之一,其代码更改实际是非常少的:

201809290429465081.png


你可以看到布尔函数 fCheckDuplicateInputs被添加了进去,用于加快区块检查。我们将在下面看到,这是一个被认为是冗余的检查。不幸的是, UpdateCoins中的代码在PR 2224中被更改为系统损坏检查,而不是共识检查。到了0.14.0版本客户端,其代码进行了更多的模块化更改,而assert也发生了一些改变:

201809290429517782.png


曾经是作为一个冗余检查,现在却成了负责区块单笔交易双重支付检查(案例2B),并负责停止程序。从技术上来说,它仍然是强制执行共识规则。只是在中止程序问题上,它表现地非常糟糕。

PR 9049是如何获得通过的? Greg Maxwell 给了我IRC上的聊天记录。

201809290429561563.png


长话短说,开发者们在讨论PR 9049时,倾向于认为区块级单笔交易双重支付(案例2B)会在PR 443处遭到检查,而没有考虑PR 2224。这使得开发者们并没有密切关注PR 9049;

总而言之:

1、在2011年引入用于防止双重支付交易中继(案例2A)的 PR 443,实际产生了一个副作用,即对区块的双重支付共识规则检查创造了冗余校验(案例1B和 2B)。

2、PR 2224是在2013年引入的,作为一种副作用,将(1)中用于区块验证的代码,从冗余升级到了共识层;

3、PR 9049是在2017年被引入的,并且它跳过了(1)中用于单个区块单笔交易双重支付(案例1B)检查的代码。开发人员错误地认为代码是多余的,因为他们没有考虑到(2)。事实上,这种改变跳过了共识的关键部分。

公平地讲,这些事的汇合导致了这次漏洞。

 
DoS漏洞的严重性
 

这意味着 0.14.x 版本的Core软件可能会因为一个奇怪的区块而崩溃。而要让软件崩溃,攻击者需要做的事是:


创建一笔花费两次同一UTXO的交易;
通过足够的工作量证明,将(1)中的交易纳入一个比特币区块;
将这个区块广播到0.14.x版本软件的节点;



(1) 和 (3) 的成本并不高,而步骤(2)的最小成本为12.5 BTC。

如果你认为从博弈论的角度来看,分裂网络并不是那么好,那么利用这个漏洞的动机就相当低了。充其量,作为攻击者,你花费了12.5 BTC将部分全节点给搞崩溃。由于不可能从分裂网络中获利,攻击者无法轻易地补偿自己的攻击成本。

如果这是唯一的漏洞,那么攻击者可能给很多人带来一些不便,但这不会是持续的,因为这些被攻击的节点可以简单地重启,并连接到其它诚实节点。一旦有一个较长的链,那么恶意区块攻击就会完全失去它的威胁。除非攻击者以每区块12.5 BTC的代价继续创建区块,并将其传播给 0.14.x版本软件的节点,否则攻击就是不可持续的。

换句话说,虽然这个漏洞的确存在着,但对 DoS攻击的经济刺激却是相当低的。

 
超发漏洞
 

从0.15.0版本软件开始,core软件引入了一个新的特性,以便更快地查找和存储UTXO,而这恰恰又引入了另一个漏洞。当一笔具有双重支付单个交易的区块纳入区块链时,软件会将其视为有效,而不会出现崩溃的现象。

这就意味着一笔病理性交易(相同UTXO在同一交易中被使用多次,即案例2B),0.14版本的节点会因此而崩溃,而使用0.15版本软件的节点却会认为交易是有效的,这基本上是凭空在创建比特币。

谈谈它是如何发生的。在0.15中出现的PR 10195 ,引入了很多内容,但它的主要要点在于改变了 UTXO的存储方式,使得它们更有效地进行查找。因此,它出现了很多变化,包括对早期UpdateCoins函数的更改:

201809290430061888.png


注意,assert(false) 周围的代码是如何被完全取出的。注意这一点,0.15.0中的PR 10537也更改了代码。

201809290430102743.png


assert失败的条件现在取决于inputs.SpendCoin,它看起来是这样子的:

201809290430179759.png


本质上,SpendCoin返回“ false”值的唯一方法,就是让币不存在于UTXO集中。但正如你所看到的,这需要币是FRESH的,而不是DIRTY的。这些不是常见的术语,但值得庆幸的是,core开发者Andrew Chow给出了解释:


“现在的问题是,什么时候UTXO会被标记为FRESH?当它们被添加到UTXO数据库时,它们就会被标记为FRESH。但是,UTXO数据库仍然只存在于存储当中的(作为缓存)。当它被保存到磁盘时,存储中的条目将不再被标记为FRESH……”



标记为FRESH的币,是进入交易存储池(memory pool)中的币。而攻击者可以通过 UpdateCoins函数中的assert语句来破坏节点。更糟的是,如果币是属于DIRTY的(基本上从磁盘上读取的),那么这就会导致比特币的超发。

因此,攻击者可以欺骗那些运行 0.15.0- 0.16.2版本软件的矿工接受一个奇怪的、无效的区块,从而导致比特币的供应超发。

 
超发漏洞的严重性
 

这种攻击的经济诱因似乎明显高于DoS攻击,因为攻击者可能会凭空制造出比特币。但你仍然需要有挖矿设备来执行攻击,但考虑到潜在的经济诱因,这可能是值得的,或者看起来是这样的。

下面是使用这种漏洞的一种简单攻击方式:


创造一笔带有双重支付交易的区块,其会向自己支付两次,比方说 50 BTC →100 BTC;
将该区块广播给0.15/0.16版本客户端的所有矿工;



下面是会发生的一些事:

    0.14.x 版本节点会崩溃;
    较旧版本的节点及其它替代客户端会拒绝这个区块;
    很多区块链浏览器是运行在自定义软件上的,而不是基于core,因此,至少有一些浏览器会拒绝该区块,并且不会显示来自该区块的任何交易。
    取决于矿工们运行的软件,我们可能会迎来链分裂;

有可能,所有的矿工都是运行的Bitcoin Core 0.15+版本软件,在这种情况下,不受攻击的客户端可能会停滞不前。也有可能矿工会运行其它东西,在这种情况下,当他们发现一个区块时,链就会发生分叉。

由于这些违规行为,网络上的人们很快就会追踪到这一点,可能已提醒一些开发人员,并且core开发者已经修复了它。如果存在分叉,那么在那个时候,关于哪条链是正确的共识链,将开始得到讨论,而出现意外超发的链,可能会遭到抛弃。如果真的发生了,那么社区可能会自愿进行一次回滚,以惩罚攻击者。

所以对于攻击者来说,这不会带来50 BTC的收入,更可能的是失去12.5 BTC。如果攻击者加倍花费,比如说200 BTC,那么超发漏洞将持续存在的可能性会更小,因为攻击会更明显。

因此,从攻击者的角度来看,这并不是一种好的获利方式。

攻击者可以获利的另一种方式,就是事先做空比特币,然后再执行攻击。这也是具有风险的,因为攻击不能保证比特币价格会下跌,特别是当危机得到迅速和果断处理时。此外,考虑到大多数交易所提供的杠杠交易,都需要AML/KYC,这可能导致攻击者很快暴露。

攻击者不仅面临着巨大的资金风险,而且还会有身体危险。从经济角度来看,这并不是一个容易获利的漏洞。

当然,有一些别有用心的人,可能会用这种漏洞来吓唬那些比特币持有者。投资回报率将变得更抽象,因此从理论上来讲,这可能会达到这些别有用心者的目的。

 
结论
 

毫无疑问,这是一个相当严重的漏洞。尽管我和Awemany之间有着分歧,但我很感激他选择公开地和我辩论。也就是说,考虑到经济博弈理论,我不认为这个漏洞会像他所描述的那样严重。

即使这个漏洞在被发现之前被坏人所利用,攻击者可能也不会选择利用它,因为从经济学上来讲,它是没有意义的。可以肯定的是,这一技术漏洞应该被修复,并且开发者应该做得更好,但真正能够利用这种漏洞的对象其实是非常少的,基本上,只有那些想要摧毁比特币的组织才会这么干。

Bitcoin Core开发者的教训有很多:

1、任何共识变化(即使是微小的变化,例如9049),也需要更多的人进行审查; 2、需要对病理交易进行更多的检查; 3、代码库中哪些检查是冗余的,哪些检查是不冗余的,以及实际代码将要做些什么,需要变得更加清晰; 4、过去存在漏洞,将来也会存在漏洞。现在重要的是,学习并反思这一教训;


原文:https://medium.com/@jimmysong/bitcoin-core-bug-cve-2018-17144-an-analysis-f80d9d373362
作者:Jimmy Song
编译:洒脱喜

比特币现“2010年以来最严重的漏洞”,有人自责、有人抨击社区分裂

资讯8btc 发表了文章 • 2018-09-24 23:26 • 来自相关话题

就在Core开发者John Newbery声称为比特币网络上周曝出的CVE-2018-17144网络漏洞负责之后,Bitcoin Core开发者谴责了比特币(BTC)和比特币现金(BCH)之间的内斗。

 
“感到尴尬和抱歉”
 

9月23日,负责检查比特币代码库的Newbery在Twitter上发表评论说,正是因为他的代码检查工作不到位,这个漏洞才没有被注意到。

Bitcoin Core客户端近日出现漏洞,Core开发者之后迅速修复,敦促整个比特币网络升级到Core客户端补丁,并将此列为紧急事项。

Core团队此后已经发布一份关于这次漏洞的《完整总结报告》,其中包括这次bug的技术规范和根除方法。

“我绝对没有读取到CheckTransaction()。当我看到它时,这个“我们在CheckBlock中跳过它”描述应该会让我注意到。


Newbery在总结报告中表示,他没有注意到它。

“这个描述和 fCheckDuplicateInputs标签很容易引起注意。我应该凭直觉行事。至少我应该查一下Bitcoin Core PR #9049。但我没有。”


尽管Newbery对他的忽略导致的结果感到“尴尬和抱歉”,然而社区的反应似乎表明,他们没有兴趣将此事归咎于任何一方。

与此同时,其他消息来源也对代码监督的问题严重性提出了警告,Bitcoin.org的创建者Cobra称这个问题“非常可怕”,Bitcointalk的Theymos则认为这是比特币“2010年以来最严重的漏洞”。

 
Van Der Laan猛烈抨击社区争吵
 

同为Core开发者的Wladimir van der Laan此前曾表示,合作失败导致了这种情况的出现。

他在周日的推特中表示,“错误代码被合并本来就是错误的。是的,我们搞砸了,但是我们搞砸的东西范围很广。”

整个社区因为没有足够彻底地审查共识更改而搞砸了,需要更多的开发者关注!这是我们所有人的全部责任。

Van der Laan在一场辩论中写道,这个漏洞的发现为比特币(BTC)和比特币现金(BCH)的支持者提供了相互批评对方的不足之处的肥沃土壤。

“‘不专业’这个词甚至都不足以形容他们,”他补充说。


原文:John Newbery: I’m Responsible For ‘Worst Bitcoin Bug Since 2010’
作者:WILMA WOO
编译:Kyle 查看全部
201809241424214799.jpg

就在Core开发者John Newbery声称为比特币网络上周曝出的CVE-2018-17144网络漏洞负责之后,Bitcoin Core开发者谴责了比特币(BTC)和比特币现金(BCH)之间的内斗。

 
“感到尴尬和抱歉”
 

9月23日,负责检查比特币代码库的Newbery在Twitter上发表评论说,正是因为他的代码检查工作不到位,这个漏洞才没有被注意到。

Bitcoin Core客户端近日出现漏洞,Core开发者之后迅速修复,敦促整个比特币网络升级到Core客户端补丁,并将此列为紧急事项。

Core团队此后已经发布一份关于这次漏洞的《完整总结报告》,其中包括这次bug的技术规范和根除方法。


“我绝对没有读取到CheckTransaction()。当我看到它时,这个“我们在CheckBlock中跳过它”描述应该会让我注意到。



Newbery在总结报告中表示,他没有注意到它。


“这个描述和 fCheckDuplicateInputs标签很容易引起注意。我应该凭直觉行事。至少我应该查一下Bitcoin Core PR #9049。但我没有。”



尽管Newbery对他的忽略导致的结果感到“尴尬和抱歉”,然而社区的反应似乎表明,他们没有兴趣将此事归咎于任何一方。

与此同时,其他消息来源也对代码监督的问题严重性提出了警告,Bitcoin.org的创建者Cobra称这个问题“非常可怕”,Bitcointalk的Theymos则认为这是比特币“2010年以来最严重的漏洞”。

 
Van Der Laan猛烈抨击社区争吵
 

同为Core开发者的Wladimir van der Laan此前曾表示,合作失败导致了这种情况的出现。

他在周日的推特中表示,“错误代码被合并本来就是错误的。是的,我们搞砸了,但是我们搞砸的东西范围很广。”

整个社区因为没有足够彻底地审查共识更改而搞砸了,需要更多的开发者关注!这是我们所有人的全部责任。

Van der Laan在一场辩论中写道,这个漏洞的发现为比特币(BTC)和比特币现金(BCH)的支持者提供了相互批评对方的不足之处的肥沃土壤。

“‘不专业’这个词甚至都不足以形容他们,”他补充说。


原文:John Newbery: I’m Responsible For ‘Worst Bitcoin Bug Since 2010’
作者:WILMA WOO
编译:Kyle