BCH 升级攻击事件安全分析

来源: 巴比特

本文来源:巴比特

 


5 月 15 日 BCH 升级遭到攻击,慢雾安全团队及时跟进,并在社区里注意到相关分析工作,通过交流将此分析文完整转载于此。这是一场真实攻击,从行为上分析来看确实预谋已久,但 BCH 响应很及时,成功化解了一场安全危机。

BCH 的 5 月 15日 升级遭到攻击,导致节点报出 too many sigops 错误。经分析,攻击载荷为一个精确构造的 P2SH Transaction,利用了 BCH 去年 11 月升级引入的 OP_CHECKDATASIG 操作码。

攻击导致了矿工节点无法打包,BCH 方面通过类似于空块攻击的方式,紧急挖出十个空块以触发滚动检查点保证升级。攻击发生约 1 小时后,BCH 矿池上线紧急修复后的代码成功继续出块。

不过同时也有人观察到,在 582698 区块高度,有矿工挖出了哈希结尾为 6bf418af 的区块,大小 139369 字节。但随后该区块被 10 分钟后 BTC.top 挖出的哈希结尾为 449e2bb4 区块所重组。或许是一次误伤,不过可见 BCH 对于升级防守之严密。

攻击原理分析

捕捉到的攻击载荷 TXID 为

4c83ab55623633c86ec711b3d68ccdea506b228178ff1533f287ab744b006c44

其内容点击附件查看。

该攻击载荷由 1334 个 Input 构成,每一个 Input 均是 P2SH 格式。

其内容为


OP_FALSE OP_IF OP_CHECKDATASIG OP_CHECKDATASIG OP_CHECKDATASIG OP_CHECKDATASIG OP_CHECKDATASIG OP_CHECKDATASIG OP_CHECKDATASIG OP_CHECKDATASIG OP_CHECKDATASIG OP_CHECKDATASIG OP_CHECKDATASIG OP_CHECKDATASIG OP_CHECKDATASIG OP_CHECKDATASIG OP_14 OP_CHECKDATASIG OP_ENDIF OP_TRUE

可见其中包含 15 个 OP_CHECKDATASIG

该攻击载荷利用了一个 CORE 曾经帮 ABC 修复,但未完全修复的漏洞,制造了组块和验证之间的差异,从而导致矿工组出的区块不被节点接受。

漏洞背景

OP_CHECKDATASIG 是一种椭圆曲线签名校验指令(SigOP),这类指令由于需要进行椭圆曲线运算,执行开销远高于其他指令。因此在节点代码中,对于这类指令的数量做出了限制,以避免拒绝服务攻击。

相关代码位置:src/consensus/consensus.h#L27

static const uint64_t MAX_TX_SIGOPS_COUNT = 20000;

即,单个 Transaction 中 SigOP 的数量不能超过 20000。

漏洞原理

细心的话,你已经发现了,攻击载荷的 SigOP 数量为 1334 * 15 = 20010,这个攻击载荷 TX 会被节点拒绝,报错即是 too many sigops,这是导致节点拒绝包含该 TX 的区块的原因。

相关代码位置:src/validation.cpp#L1936

if (nSigOpsCount > nMaxSigOpsCount) {

return state.DoS(100, error("ConnectBlock(): too many sigops"),
REJECT_INVALID, "bad-blk-sigops");
}

然而在组块时为什么没有拒绝这个 TX 呢?我们可以在 Bitcoin-ABC 的补丁中发现端倪。

补丁位置:https://reviews.bitcoinabc.org/D3053

相关代码位置:src/validation.cpp#L592

// 原代码

int64_t nSigOpsCount = GetTransactionSigOpCount(tx, view, STANDARD_SCRIPT_VERIFY_FLAGS);

// 补丁代码
int64_t nSigOpsCount = GetTransactionSigOpCount(tx, view, STANDARD_CHECKDATASIG_VERIFY_FLAGS);

所在的函数为:AcceptToMemoryPoolWorker

可见原代码组块过程中在计算 Transaction 中的 SigOP 数量时,错误地使用了 STANDARD_SCRIPT_VERIFY_FLAGS,而非 STANDARD_CHECKDATASIG_VERIFY_FLAGS。

这两个标志有什么区别呢?

在 policy 中我们可以找到他们。

相关代码位置:src/policy/policy.h#L108

static const uint32_t STANDARD_CHECKDATASIG_VERIFY_FLAGS =

STANDARD_SCRIPT_VERIFY_FLAGS | SCRIPT_ENABLE_CHECKDATASIG;

所以我们可以见到,当仅使用了 STANDARD_SCRIPT_VERIFY_FLAGS 时,计算脚本中 SigOP 数量时,是不包含 OP_CHECKDATASIG 的。所以这个包含 20010 个 SigOP 的攻击载荷,在组块时,统计出来的 SigOP 数量为零。

因此,攻击载荷会在矿工组块的时候被包含进区块中,然而,由于其他代码正确地统计了 SigOP,节点会拒绝该区块,这导致了 BCH 无法出块。

总结

攻击者利用了 BCH 引入 OP_CHECKDATASIG 时产生的,又未完全修复的漏洞,巧妙地构造了攻击载荷。攻击者应该高度了解客户端代码,并熟悉 OP_CHECKDATASIG 漏洞。

来源:慢雾科技

文章标签:

 

 

    • 5月16日,由巴比特主办的2019杭州区块链周·老友记在杭州开幕。在下午的“创业很苦,我们很酷—来自创业前线的声音”的圆桌中,量子链创始人兼CEO帅初表示,目前整个行业没有明确的方向,加密货币去中心化是没有问题的,但是应用则需要中心化和去中心化的结合。纯粹的DApp是错误的方向,而基于区块链技术搭建的应用是有前途的,任何一个账户都是由公私钥创立的账户体系,有一套内部的支付体系,其金融属性和流动性可衍生出更多的应用场景。他还指出,未来区块链行业会不断分成不同的赛道,货币是一个赛道,去造就一个货币的品牌,比特币就是非常好的货币品牌,但比特币未来不可能成为应用的平台。目前所考虑的一个方向是把区块链完全地往cloud(云服务)的方向融合,“区块链的特征+传统的cloud(云)的服务”的深度融合,是区块链走向大规模商用的必经之路。直播链接:http://t.cn/EK0f3WY 来源:

 

    • Blockstream昨日在推特上宣布推出 Liquid Securities平台,允许用户使用该公司的比特币侧链Liquid推出自己的证券类代币。 来源:推特

 

    • 截至今日16点45分,以太坊合约精英账户中,多头平均持仓比例为19.52%、空头平均持仓比例为22.98%,空头持仓超过多头。当前ETH合约持仓总量约为66.21万个ETH,较昨日无明显变化。 来源:OKEx

 

    • 据中国民用航空网报道,国务院发展研究中心主任李伟在十届中国民航发展论坛上演讲表示,数字技术创新已经从过去的单点突破进入多技术协同推进、群体性演变的爆发期。源于数字技术的颠覆性,云计算、物联网、区块链等新兴技术不断涌现,呈现出扩散速度加快,迭代周期缩短的时代特点。 来源:中国民用航空网

 

    • 据AMBcrypto报道,Blockstream首席执行官Adam Back接受采访时表示,他坚信中本聪是一个人,而不是一个团队。他通过中本聪的电子邮件和论文中的“编码和写作风格的一致性”来支持这一主张。 来源:AMBCrypto

 

    • 2019年5月16日下午,在由巴比特主办的“2019杭州区块链周·老友记”活动中, imToken 创始人兼CEO何斌在《区块链布道者:共识之火可以燎原》圆桌论坛上表示,钱包在扮演越来越重要的角色,一方面它面向用户,你需要提供一个安全保障的保险柜的机制。第二,在这个基础之上,让用户更有自主权、参与权,能够参与到区块链的网络里面,行使自己的权利,维护好自己的价值。我觉得未来不管是交易所还是钱包,其实大家的界限非常模糊,交易所也要做钱包,其实钱包本身也会拓展交易的能力。所以这两者的界限,会越来越模糊。当下整个大环境还处在中心化交易所占主导的现状,我觉得未来在这个方向上,其实大家可能会走到一块。 来源:

 

    • 截至今日14点33分,比特币合约精英账户中,多头平均持仓比例为15.38%、空头平均持仓比例为22.68%,空头持仓仍超过多头。当前BTC合约持仓总量约为5.01万个BTC,持仓量较昨日无明显变化。 来源:OKEx

 

    • 据MarketWatch报道,比特币大亨及支持者Erik Finman表示,对于那些有勇气至少在未来十年内持有或直接投资比特币的人来说,比特币及其同类产品可能是名副其实的彩票。 Finman表示,随着比特币从最近的低点反弹,他表示:“我12000%相信,我相信你可以通过投资区块链和比特币成为百万富翁。”他表示,区块链技术可以转化为带来巨额回报的投资。“如果你在未来10年里不是亿万富翁,那是你自己的错。” 来源:MarketWatch

 

    • 据Cryptonewsreview消息,以太坊目前涨至260美元以上,本周累计上涨33%,回升至2018年10月的水平。以下是此轮上涨的五个原因分析:1:跟随比特币上涨趋势。2:大型企业的支持,微软将为其客户提供在其Azure云平台上构建基于以太坊的区块链解决方案,星巴克将使用Azure和以太坊区块链来跟踪并使其咖啡农受益,有传言称三星考虑使用以太坊平台以及CFTC(美国商品期货交易委员会)正在考虑批准以太坊衍生品。3.以太坊正在积极开发和改进,以太坊联合创始人Joseph Lubin最近表示,在与以太坊2.0相关的一系列升级被激活后,未来18到24个月内,以太坊平台的可扩展性将提高约1,000倍。4:金融巨头富达将为客户提供一系列主流加密资产交易。5:今年最大的加密会议纽约区块链共识大会正在举行。大会重新关注加密社区的创新,为行业发展注入动力。 来源:Cryptonewsreview

 

    • 2019年5月16日下午,在由巴比特主办的“2019杭州区块链周·老友记”活动中,巴比特、比原链创始人长铗在《区块链布道者:共识之火可以燎原》圆桌论坛上表示,区块链会从一种亚文化成为主流文化,最好的推广方式是,润物细无声,也就是做出一个杀手级应用,让大众自发底使用你的应用,让他能够享受链圈给他带来的改变,链圈就会无形中流行起来,走向大众。直播链接:http://t.cn/EKWLfZk 来源:

 

    • 2019年5月16日下午,在由巴比特主办的“2019杭州区块链周·老友记”活动中,比特股理事巨蟹在《区块链布道者:共识之火可以燎原》圆桌论坛上表示,稳定币有两个方向:一个是法币抵押稳定币,典型的是USDT,另一个是靠抵押加密资产产生的稳定币。这两种稳定币各有优缺点,前者可以随时满足需求,但缺点是高度依赖于现有银行系统。对于抵押型稳定币,像Dai等,优点是不受银行系统或国家系统的制约,这样的稳定币更符合区块链去中心化精神,缺点是供应量无法保证。 来源:

 

    • 05月16日A股收盘,区块链板块整体下跌0.58%,122只概念股中,43只上涨,73只下跌,净流出资金30.39亿,成交额为259.11亿。涨幅前三的为博彦科技(+10.04%)、北大荒(+5.42%)和奥马电器(+4.04%),跌幅前三的为新晨科技(-9.36%)、精准信息(-8.39%)和聚龙股份(-5.38%) 来源:同花顺

 

    • 据慢雾分析,5月15日 BCH 升级遭到攻击,这是一场真实攻击,从行为上分析来看确实预谋已久,但BCH 响应很及时,成功化解了一场安全危机。攻击者利用了 BCH 引入 OP_CHECKDATASIG 时产生的,又未完全修复的漏洞,巧妙地构造了攻击载荷。攻击者应该高度了解客户端代码,并熟悉 OP_CHECKDATASIG 漏洞。不过同时也有人观察到,在 582698 区块高度,有矿工挖出了哈希结尾为 6bf418af 的区块,大小 139369 字节。但随后该区块被 10 分钟后 BTC.top 挖出的哈希结尾为 449e2bb4 区块所重组。或许是一次误伤,不过可见 BCH 对于升级防守之严密。 来源:慢雾

 

    • 据BitcoinExchangeGuide报道,最近,加密货币交易所黑客攻击频现,专家们正在考虑新的解决方案和实施,以提高用户在这些平台中的安全性。国际反网络钓鱼工作组(APWG)主席Dave Jevans建议推广3FA身份验证(三因素身份验证),以减少黑客攻击的可能。 来源:BitcoinExchangeGuide

 

    • 据Tokenview监测数据显示,0x1c开头的以太坊地址于今日14:35向0x74开头的以太坊地址转账75000 ETH,约合1987万美元。交易哈希-0xe5aaa16480f24e841807b249d67306ca7d187117c453fbf92d21ab9f784350a3 来源:Tokenview

 

    • 巴比特现场报道,5月16日,由巴比特主办的“2019杭州区块链周·老友记”在杭州开幕。ChainNode链节点 CEO屈兆翔在下午的演讲中表示,ChainNode链节点是由创立于2011年的“巴比特论坛”品牌升级而来。启用全新品牌是为了回答一个存在已久的问题—如何让区块链流行起来?他还指出,我们当前正处于“人类数字化大迁徙”的伟大进程中,虚拟世界和现实世界的界限愈发模糊,90后、00后是互联网的原住民,而10后将是区块链的原住民。链大星作为ChainNode的使者,在整个区块链宇宙中与各个项目进行互动与连接,后续会基于这一世界观推出更多区块链宇宙的形象,组成ChainNode Family,为推广区块链文化而努力。 来源:

 

    • 5月16日,由巴比特主办的2019杭州区块链周正式开幕。下午,区块链老友记暨ChainNode第一次线下见面会在杭州黄龙饭店召开。区块链早期布道者大话共识,创业“老鸟”回顾踩过的大坑,行业女神畅聊区块链江湖,更有区块链老物展呈现区块链发展十年的缩影和故事。精彩尽在区块链老友记,直播链接http://t.cn/EKWLfZk 来源:

 

    • 据CCN报道,5月7日起,美国巴尔的摩市遭遇加密货币勒索软件“robbinhood”攻击,造成包括房地产交易系统和财产税网站在内的大部分政府系统瘫痪。新任市长Jack Young拒绝支付13枚比特币的赎金。 来源:CCN

 

    • 据爱尔兰时报报道,去年爱尔兰的勒索软件和恶意软件攻击数量下降,但黑客现在转而转向网络钓鱼和加密挖矿。 微软今年2月发布的的安全情报报告显示,全球范围内的恶意软件攻击总体下降了60%。爱尔兰是事故发生率最低的国家之一。就恶意软件而言,爱尔兰的月遭遇率为1.26%,是报道的最低数字。此外, 微软爱尔兰解决方案总监Des Ryan表示,“我们看到犯罪黑客的行为发生了重大变化,他们希望访问受害者的计算机和组织的网络来访问数据,但也利用他们的计算能力来挖掘加密货币。 来源:Irish Times

 

    • 据CNBC报道,Fundstrat联合创始人Tom Lee最近在采访中表示,FOMO(害怕错过)效应,以及加密货币之外传统领域投资者的加入,可能会使比特币达到历史最高点。他之前在推特上发起一项“BTC在什么价格将会出现FOMO(害怕错过)效应”的调查问卷。调查数据显示,32%的人认为在BTC超过2万美元(新高)时;45%的人认为当BTC达到1万美元;23%的人认为是现在。 来源:CNBC

 

参与评论
收藏
qrcode
相关资讯
写评论

icon-emoji表情