買以太坊 買以太坊
Ctrl+D 買以太坊
ads

BLOCK:XVG 惡意挖礦事件透視:「算力優勢 時間劫持」攻擊案例分析_ABLOCK幣

Author:

Time:1900/1/1 0:00:00

鏈聞ChainNews:

本文針對XVG的數字貨幣幣價翻漲的攻擊事件進行分析,攻擊者主要利用自己算力的優勢偽造時間戳,使得自己挖礦難度不斷降低,從而保持自己最長鏈的優勢,讓正常的礦池挖到的都是孤塊,通過「作弊」挖礦的方式去獲利。根據XVG黑皮書的描述多種加密算法可以預防51%算力攻擊,通過這次安全事件我們知道世事無絕對,攻擊者根據代碼邏輯構造的一系列組合攻擊利用還是可以進行成功攻擊的,目前而言,51%攻擊對于pow機制的加密貨幣來說還是一個逃不開的話題。

來源|巴比特技術指南

作者|360埃癸斯實驗室

1.XVG挖礦異常事件簡要回顧

最近幾天,一個叫XVG的數字貨幣在普遍都不太好的幣市中大出風頭,短短幾天之中,幣價翻了好幾倍,但前段時間,一起安全事件讓XVG的開發團隊和持有它的礦工出了一身冷汗。4月4日,bitcointalk論壇上ID為ocminer的用戶發帖反饋XVG遭到51%攻擊。據反饋自XVG區塊高度2007365之后,出塊時間變得很快,在某些塊高度上面,甚至是一秒出一個塊,并且這些區塊都是利用scrypt算法挖到的,如圖一所示。

在ocminer發帖之后的一段時間里,起初XVG的開發團隊并不認為這是一次攻擊事件,并安撫大家不要太焦慮,但是隨著事件的發酵,很多礦池已經無法正常工作了,開始不斷挖到孤塊,正常情況下,礦池一天挖到的孤塊數量不會太多,連續挖到孤塊的情況更不太可能發生,如下圖所示,自從4月4號13點54開始,挖到的塊都是孤塊,因此礦池決定暫停XVG的挖礦服務。隨后XVG開發團隊開始響應這次事件,對于代碼進行了兩次patch,這樣才讓這次安全事件漸漸平息下來。

公告 | 火幣暫停XVG充提業務:據火幣公告,由于XVG錢包升級,火幣全球站現已暫停XVG的充幣和提幣業務。[2019/7/21]

雖然這次事件并沒有讓XVG的幣價一蹶不振,但是背后還是有些問題值得安全從業者去研究的,其一,這到底是不是一次有預謀的攻擊事件?其二,如果是,攻擊者到底如何實施攻擊的?其三,XVG的團隊為何要進行兩次patch?下文會一一為大家解答這幾個問題。

2.XVG簡介和挖礦安全事件分析

2.1加密貨幣XVG簡介

XVG又名verge,是基于比特幣技術的開源加密貨幣,主打匿名性,與門羅,達世類似。XVG最初是在2014年推出的,由于快速增長的社區,這個數字貨幣迅速流行,并不斷吸引世界各地的用戶前來投資。XVG的挖礦算法有Scrypt/X17/lyra2rev2/MYRgroestl/blake2s這5種,并且出塊時間僅為30秒,大大小于比特幣的10分鐘。因為支持的算法多,可以使更多礦工能夠挖到XVG幣,從而確保每個人都有平等的機會獲取XVG幣。在生成新塊的時間戳校驗方面,XVG是借鑒了舊版的比特幣的代碼。在checkblock()和acceptblock()函數當中調用了時間戳校驗的算法,與bitcoin0.8.2相同,分別是按照如圖四中的函數執行流程獲得調用。

2.2XVG難度的調整

XVG的難度調整算法會向前回溯取相同算法12個區塊的難度平均值做一個計算,如果實際出塊時間間隔小于理想出塊時間間隔的三分之一則調整難度為均值的三倍,如果大于理想出塊時間間隔的三倍則調整難度為均值的三分之一。這樣做的目的是通過對比實際出塊時間間隔和理想出塊時間間隔進行動態難度調整,如果出塊慢了,那么就降低難度,如果出塊快了,就增加難度,但是調整的時候使用上下限進行限制,這是為了慢慢的調整難度值,防止難度過快的變化,相關代碼如圖五所示。

分析 | XMR、DASH、XVG、GRIN等隱私幣市值已處于偏低狀態? ?:據 TokenGazer量化模型顯示,目前XMR、DASH、XVG、GRIN市值已處于偏低狀態。日前,門羅完成了分叉升級,強化了隱私和安全方面的問題,但是從門羅的市場表現來看,市場對門羅的動態缺乏回應,包括此前熱議的grin,在經歷了一段時間的市場追捧之后,也重歸平靜。而隨著數字貨幣的發展,隱私需求越來越強,隱私幣的應用場景越來越豐富,其價值將逐漸凸顯。所以,TokenGazer認為,隱私類區塊鏈項目在未來數字貨幣領域將占據重要席位,投資者需關注相關項目發展進程。[2019/3/12]

2.3下面是我們對攻擊流程的分析

首先攻擊者擁有很大的算力,攻擊者很快使得自己的挖到的區塊所在的鏈成為了主鏈。因為區塊鏈的一個特點就是最長的鏈就是主鏈。同時修改時間戳,讓其他礦工所挖的區塊通過不了時間戳范圍校驗,成為孤塊。這就造成了只有攻擊者可以挖到塊,而其他正常礦工不能在攻擊者控制的主鏈上挖到塊。

2.3.1初始階段通過觀察發現,攻擊者最開始修改時間戳的塊是2007355,并不是ocminer所說的2007365,如圖六:

從區塊2007355到2007363可以看出,攻擊者修改出塊時間為每五分鐘一個(上圖紫色顏色的時間),當然實際上攻擊者的出塊時間比顯示的時間戳快很多。由于偽造的時間戳間隔遠遠大于正常出塊時間的30秒,XVG會降低難度,通過這9個塊,XVG的挖礦難度已經下降了一半.正常情況下,9個塊的時間45分鐘左右相當于攻擊者將正常挖礦時間提前了40分鐘左右。在Checkblock()中,因為攻擊者偽造了時間戳,使得pindexPrev->GetMedianTimePast()的值增大,即前11個區塊的時間戳中值,使得正常時間戳出的塊無法滿足大于前11個塊時間戳中值的條件,從而正常時間戳出的塊無法添加到攻擊者挖掘的這條長鏈上。圖七是Checkblock()中校驗時間戳的代碼。

XVG疑遭四月以來的第三次51%雙花攻擊:據bitcoinist消息,5月27日Bitcointalk論壇上名為“CHIEF56”的用戶發帖稱,XVG一個區塊鏈地址上面有一些奇怪的交易。經檢查,這些交易似乎有奇怪的時間戳,無法在其它探測器上找到,這表明XVG有可能正在被雙花攻擊。CHIEF56表示,其中一個地址中共有142,853,089個XVG令牌被盜。然而,XVG的支持者指出,在過去一周內沒有出現異常的區塊,這證明自5月22日以來沒有發生過任何攻擊。[2018/5/30]

下面對代碼做簡單解釋。圖七代碼的意思為只要新塊的時間戳大于之前11個block的時間戳的中位數,且不超過當前網絡時間2個小時,則這個塊都被認為有效。GetBlockTime()只是簡單返回位于classCBlockHeader中的nTime成員,也即本塊生成的時間戳。GetMedianTimePast()的實現如圖八:

新塊的時間戳需要大于前11個block的時間戳的中位數這個容易理解,但是nMaxClockDrift為什么要設置為2個小時,將nMaxClockDrift寬泛的設置成2個小時主要是考慮到blockheader上的時間戳并不像NTP服務器那樣是一個嚴格準確的時間,新塊的開采也需要一定的時間,比方說對于比特幣可能是10分鐘左右才能創建成功一個新塊,極端情況下可能會遠遠超過10分鐘,一旦nMaxClockDrift時間設置的過小,后續合法產生的新塊的時間戳,由于時間戳過大,很可能沒辦法滿足時間戳校驗條件,造成區塊鏈沒有辦法再添加的區塊。

2.3.2控制修改時間戳,使得難度不至于快速下降

XVG, EOS, ONT三種加密貨幣引領市場恢復:據coindesk分析,加密貨幣日前終于顯示出一個季度以來的上漲走勢,總交易額在周四提升325億美元,達到了自3月26日以來的最大漲幅。周五顯示一周來加密貨幣總市值提高了31%。這種廣泛的上漲可能與比特幣一周21%的漲幅有關,其打破了50周均線的支撐點,在周五上漲到8200美元。同時,25中加密貨幣中,XVG表現最好,其次是EOS和ONT,三種貨幣都實現了顯著增長。[2018/4/15]

經過第一階段,攻擊者已經基本上可以獨占挖礦了,難度也已經下降了很多,這一階段攻擊者已經不需要很大的算力了,因為這時候,正常礦工挖出的塊,已經不能通過時間校驗了,攻擊者可以不受干擾的挖礦,自己也完全可以控制挖礦難度。同時為了不至于難度下降過快,從而導致其他礦工發現和其他問題出現,攻擊者有意的控制了出塊的時間戳。第一種方式:故意交替的改變時間戳,大約差值為一個半小時(從2007365塊高度開始)當前一個塊減去后一個塊時間為正的一個半小時,這時候難度是下降的當前一個塊減去后一個塊時間戳為負的一個半小時,這時候難度是增長的。如下表所示

第二種方式:每隔9個塊,使得連續的三個塊時間間隔改為1秒(圖二紅色字體)很顯然根據難度調整的函數,我們知道這里出塊的速度非常的快。導致這里難度極速回調。下表是紅色的塊的難度情況。

當然總體的趨勢是難度不停的下降,如圖九所示。

綜上所述,攻擊者就可以獨占自己的這條長鏈進行挖礦,根據最長鏈原則,這條鏈就變成了主鏈,并使得自己挖礦難度不斷降低,從而保持最長鏈的優勢,某些區塊的難度被攻擊者降為接近于0。由于XVG每30秒就出塊一次,它的分叉會比特幣頻繁很多。同樣挖掘第2007433高度的塊,正常礦工和攻擊者挖礦難度不同,因此正常礦工所挖的分叉鏈遠遠沒有辦法同攻擊者的最長鏈做競爭,導致最后都成為了孤塊。

Verge官方已收到2000多萬個XVG:據XVG接受捐贈的錢包地址顯示,目前Verge官方已經收到了大約2153萬個XVG(約104萬美元)的捐贈。此前,XVG宣稱將公布重大合作關系,但公布之前要求投資者向特定地址捐贈7500萬個XVG(約308萬美元)。[2018/3/27]

圖十是礦池挖到的孤塊,圖十一是攻擊者挖到的區塊,兩圖對比可以看到高度2007433上的一個孤塊在挖掘的時候同攻擊者獨占挖掘的最長鏈不是同一個鏈。并且難度也不同。

3.XVG團隊的對代碼的修改

3.1firstpatch

XVG團隊第一次的patch可以在這里看到。https://github.com/vergecurrency/VERGE/commit/a3dd53f40aaedd28bd4d0fc720f034492f7ded81patch改動如下三圖。

Patch的代碼是以區塊高度2040000為限,小于等于2040000高度的區塊時間戳檢查依然采用之前的邏輯,即新塊的時間戳要大于之前11個block的時間戳的中位數、且不超過當前網絡時間2個小時。而大于2040000高度的區塊時間戳檢查變更為,新塊的時間戳要大于前一個區塊的時間戳,并且不可以超過當前網絡時間20分鐘。很明顯第一次patch的第一個條件if(GetBlockTime()<pindexPrev->GetBlockTime())returnerror(“AcceptBlock():block’stimestampistooearly”);會大量誤傷礦工合法產出區塊。因為即使是正常出塊,下一個區塊的時間戳也不能總是保證比上一個塊的時間戳大。由于XVG是30秒左右出一個塊,不同于比特幣10分鐘的出塊時間,后一個條件設置將nMaxClockDrift由2小時縮短到20分鐘也不會造成XVG區塊鏈無法接續的情況。XVG團隊的第一次patch主要是想通過縮短nMaxClockDrift的值加強時間戳校驗,阻止例如2007385和2007386,2007387和2007388這樣的間隔超過20分鐘的區塊產生。縮短nMaxClockDrift的值以及校驗前后區塊時間戳順序從表面上看似可以阻止攻擊,但是如果使用大算力的scrypt繼續挖礦,攻擊者依然可以按照相應的時間戳判定邏輯偽造時間戳,并繞過代碼檢測。

3.2xvg團隊的第二次patch

由于XVG支持5種算法競爭挖礦,正常挖礦的情況下,取10個區塊如下截圖。

由于競爭關系,可以看到10個區塊不全都是一種算法產生的。而在被惡意挖礦的區塊,截圖情況如圖十六,scrypt算法在這段時間壟斷了出新塊的挖礦。

第二次patch的在如下鏈接https://github.com/vergecurrency/VERGE/commit/80c81aef63272231fc39c2af4b8db9f3f2e9

如圖十七和十八,代碼主要的改動是將上次改動的判斷時間戳校驗的代碼進行恢復,nMaxClockDrift由20分鐘調整回2小時。修復了代碼if(GetBlockTime()<pindexPrev->GetBlockTime())returnerror(“AcceptBlock():block’stimestampistooearly”);可能誤傷正常產出的區塊的問題。

為了阻止單一算法獨占挖礦,新加入CheckPreAlgo()函數,如圖十九和圖二十所示,從塊高度2042000開始,在執行checkblock()函數的時候開始調用新加入的檢查邏輯。自當前區塊共向前回溯10個區塊,檢查單一算法挖出的區塊數,當每10個區塊有6個或者6個以上的區塊是由單一算法挖出的時候,新出的這個區塊不會被鏈接受,從而緩解單一算法獨占挖礦引發的安全問題。

XVG「算力優勢時間劫持」攻擊事件總結根據ocminer的論壇反饋和我們的區塊高度統計,攻擊者的兩次獨占挖礦造成其他礦工的損失統計如圖二十一,有15000左右個區塊被攻擊者惡意挖礦。

兩次攻擊可疑的收幣地址如下圖所示,更詳盡的信息可見https://pastebin.com/K7L1G5FE。

就這次攻擊分析來看,攻擊者主要利用自己算力的優勢偽造時間戳,使得自己挖礦難度不斷降低,從而保持自己最長鏈的優勢,讓正常的礦池挖到的都是孤塊,通過「作弊」挖礦的方式去獲利。根據XVG黑皮書的描述多種加密算法可以預防51%算力攻擊,通過這次安全事件我們知道世事無絕對,攻擊者根據代碼邏輯構造的一系列組合攻擊利用還是可以進行成功攻擊的,目前而言,51%攻擊對于pow機制的加密貨幣來說還是一個逃不開的話題。

最后希望我們的聲音能讓更多人去關注區塊鏈安全!

更多精彩內容,關注鏈聞ChainNews公眾號,或者來微博@鏈聞ChainNews與我們互動!轉載請注明版權和原文鏈接!

來源鏈接:www.8btc.com

本文來源于非小號媒體平臺:

鏈聞研究院

現已在非小號資訊平臺發布1篇作品,

非小號開放平臺歡迎幣圈作者入駐

入駐指南:

/apply_guide/

本文網址:

/news/3630322.html

XVG

免責聲明:

1.資訊內容不構成投資建議,投資者應獨立決策并自行承擔風險

2.本文版權歸屬原作所有,僅代表作者本人觀點,不代表非小號的觀點或立場

上一篇:

中本聰托付的私鑰即將公開,有些競爭幣要遭殃了

下一篇:

美國司法部門開展暗網打擊行動,查獲價值2000萬美元加密貨幣

Tags:XVGLOCLOCKBLOCKxvg幣最新消息INLOCKLucky BlockABLOCK幣

比特幣價格今日行情
TST:外媒:ETC團隊可能延遲Atlantis硬分叉_bitstamp比特幣套利

ETC開源團隊在周四的電話會議中,未能就ETC網絡升級達成共識,目前仍然需要進一步探討,相當于回到草案提交階段.

1900/1/1 0:00:00
ENT:BTTC糖果空投活動_BitTorrent

親愛的SilkTrader星客用戶:為慶祝BTTC上線星客交易所,SilkTrader星客交易所聯合BTTC項目方福利大放送! 活動對象:星客注冊用戶 活動規則及獎勵方式: OKEx將停止對TR.

1900/1/1 0:00:00
BOOK:同樣是突破8000美元,2017年與2019年的比特幣基本面有何變化?_數字貨幣交易所開發安全解決方案

半年前幣圈還沉浸在“比特幣會不會跌破3000美刀”的消極氛圍中,4月份之后幣價突飛猛進,沖破重重壓力位站到8000美元,攻勢勇猛不得不讓人聯想到2017年瘋漲的畫面.

1900/1/1 0:00:00
AP3:海伯利安Map3升級為全球首款支持加密傳輸協議的服務網絡_PAN

海伯利安正式推出全球首款支持加密傳輸協議(Https)的升級版去中心化地圖服務網絡Map32.0,旨在有效激活地圖社區邊緣節點使其通過安全性的傳輸協議加入到去中心化地圖服務網絡.

1900/1/1 0:00:00
ETF:比特幣與納什均衡、凱恩斯選美比賽_45萬亞馬遜幣值多少人民幣

前言:在一個沒有估值共識的市場,投資的行為更像是凱恩斯選美比賽,大家對其他人認為有價值的資產進行投資,同時,也沒有一個明確的納什均衡來形成最終的穩定.

1900/1/1 0:00:00
COI:FCoin發布最新公告《FMex合約交易平臺通證發行預告》,FT短線價格拉升_EnterCoin

5月31日,FCoin發布最新公告《FMex合約交易平臺通證發行預告》。預告中宣布FCoin平臺提供技術支持的合約交易平臺FMex預計將于2019年9月初正式上線.

1900/1/1 0:00:00
ads