推廣 熱搜: 破碎機  代辦  潛水泵  機械  建造師  鉚接機    武漢  行情  電玩城開發 

辽宁35选7:解析 | 針對PoS加密貨幣的“偽造權益”攻擊|重火力激活碼

   日期:2019-01-29     瀏覽:1649    

辽宁35选7 www.jnqqg.com 權益證明(PoS)加密貨幣,尤其是基于PoSv3(第三版本PoS)的那些幣種,它們和比特幣是很相似的,因為它們使用的是UTXO模型和最長鏈共識規則。關鍵的區別在于,它們用幣的所有權證明取代了工作量證明(PoW)。

PoS機制的潛在好處包括減少環境影響,以及更好地抵御51%攻擊。事實上,很多PoS加密貨幣是比特幣代碼庫的分叉(或者至少是其后代),然后植入了PoS機制。然而,一些設計思想被不安全地復制,導致這些幣種出現了一些新的漏洞,而它們在比特幣父代碼庫中是不存在的。

我們將這些漏洞稱為“偽造權益”攻擊。本質上,它們之所以起作用,是因為PoSv3實現在提交寶貴的資源(磁盤和RAM)之前沒有充分驗證網絡數據。其結果是,沒有太多權益(幣)的攻擊者(在某些情況下甚至不需要幣)可通過偽造數據填充受害者的磁盤或RAM,來導致其節點崩潰。我們認為,所有基于UTXO和最長鏈PoS模型的加密貨幣都很容易受到這種 “偽造權益”攻擊。本文的最后,列出了經研究人員調查并被認為會受影響的加密貨幣列表。

背景

在深入研究這些漏洞的細節之前,我們先介紹一下基于PoS機制的鏈是如何工作的。

PoS挖礦:

與工作量證明(PoW)挖礦類似,PoS中的挖礦也包含比較區塊頭的哈希值和難度目標。PoS的高層次目標是確保每個利益相關者挖掘下一個區塊的機會與他們持有的token數量成正比。為了實現這一點,在基于PoS的區塊鏈中,哈希不僅取決于區塊頭,還取決于利益相關者插入區塊中的特殊“CoinShare”交易中包含的幣數量。關于PoS挖礦的完整細節,你可以在Earlz的博客文章中找到一個詳盡的解釋。對于這篇文章,重要的是檢查 PoS取決于

1) coinstake交易,

2) 以及被coinstake交易所使用的UTXO。

工作量證明(PoW)在?;で檠櫓ぷ試捶矯嫻淖饔茫?/p>

眾所周知,PoW在比特幣共識中起著至關重要的作用。但是,PoW也起到了第二個不太被重視的作用:即?;ざ越詰閿邢拮試矗ㄈ绱排?、帶寬、內存和CPU)的訪問。在無許可的加密貨幣網絡中,對等節點不需要信任。因此,為了防止資源耗盡攻擊,比特幣節點在提交更多資源(如將區塊存儲在RAM或磁盤上)之前,首先會檢查 PoW是否有任何接收到的區塊。然而,事實證明,檢查PoS比驗證PoW要更復雜,其對環境也更加敏感。因此,很多基于PoS的鏈實現,忽略了適當的驗證。

為了理解這是如何導致資源耗盡漏洞的,我們必須在驗證之前提供一些關于如何存儲區塊的詳細信息。一個節點不僅必須在當前時刻跟蹤最長鏈,還必須跟蹤鏈的分叉數(其中任何一個都可能會成為最長鏈,在這種情況下,節點需要“重新組合”才能切換到它)。這可能發生,例如,在一次拙劣升級、一次雙花攻擊(等51%攻擊)或在一次臨時網絡分區期間。

驗證這些脫離主鏈的區塊是困難的。要完全驗證這些區塊,你需要前一區塊時間的一組未用幣(UTXO)。比特幣將UTXO集保留在了最佳鏈的當前尖端,而不是在過去的其他區塊。有兩種主要方法可以完全驗證分叉上的區塊:

1.“回滾”當前視圖(UTXO集)到分叉開始前的點

2.或存儲所有早期區塊的UTXO集副本。

在將區塊存儲到磁盤之前,比特幣代碼庫根據PoW執行一些初步驗證(但忽略交易)。此初步檢查僅依賴于前一個區塊頭和當前區塊頭,因此節點可以非??燜俚刂蔥寫瞬僮?。這是一個有效的防御,因為其生成有效的POW,通過它是非常昂貴的。也就是說,雖然我們可欺騙比特幣節點在磁盤上存儲一個無效的區塊,但進行這樣的資源耗盡攻擊,其代價是非常昂貴的。

PoS中類似的初步檢查,是驗證coinstake交易,并檢查與當前一個區塊的內核進行哈希時,它是否通過難度目標。計算coinstake 交易的哈希是很容易的,而困難的部分是檢查coinstake交易的輸入UTXO是否有效和未使用,因為這需要檢查UTXO集,正如前面提到的,該集對于過去的區塊是不可用的。由于完全驗證coinstake 交易是困難的,大多數基于PoS 機制的鏈提供了啟發式或近似檢查。結果表明,這些近似值往往不充分,可被加以利用。

漏洞1: 不需要權益的攻擊

當我們第一次調查這個問題時,我們發現有5種加密貨幣:Qtum(量子鏈)、Particl、Navcoin、HTMLcoin以及Emercoin表現出這一漏洞的相當輕微的形式:即在將區塊提交到RAM或磁盤之前,它們根本沒有檢查任何coinshare交易。這五種加密貨幣的共同點是,它們采用了比特幣的“區塊頭優先”功能,其中,區塊傳播被分成兩條單獨的消息,即區塊和區塊頭。節點只有在區塊頭通過PoW檢查才會請求區塊,而它是最長(或更長)鏈。由于coinstake交易只存在于區塊當中,而不存在區塊頭中,因此節點無法單獨驗證區塊頭。相反,它直接將區塊頭存儲到內存中的數據結構(mapBlockIndex)。因此,任何網絡攻擊者,即使他們不持有幣,也可以填滿受害者節點的RAM。

這種攻擊的第二種變體,可針對相同的代碼庫執行,盡管它的工作方式略有不同,且目標是不同的資源(即受害者的磁盤而非RAM)。有爭議的是,涉及磁盤的攻擊對受害者更有害:如果RAM已滿,節點崩潰,則只需重新啟動即可。但是,如果磁盤已滿,則需要手動干預(例如,運行外部腳本以清除磁盤上的過時區塊)。

當接收區塊而不是接收區塊頭時,會執行不同的初步檢查。理想情況下,由于區塊確實包含coinstake交易,因此節點軟件應在將區塊提交到磁盤之前檢查這個coinstake交易。但是,如前所述,如果區塊位于分叉上,那么節點無法輕松地訪問coinstake交易所使用的UTXO。也許正因為這個原因,這些代碼庫并不能驗證coinstake交易。

這些漏洞中的任何一個,都可以在不持有幣的情況下對加密貨幣進行攻擊。RAM版本的攻擊相對微不足道,但出于技術原因,磁盤版本的攻擊需要稍微多加小心。這些細節將在2019年的《金融密碼學》上發表的一篇短文中加以解釋。 

漏洞2:偽造權益攻擊

通過跟蹤這些代碼庫的“血統”,我們注意到,在將比特幣的“區塊頭優先”功能合并到PoSv3代碼庫的情況下,漏洞1就會被引入。攻擊不適用于早期版本的PoS幣(例如點點幣),因為在磁盤上存儲區塊之前,還需要進行兩次額外的初步檢查:

1.檢查正在使用的輸出是否存在于主鏈當中;

2.檢查PoS內核哈希是否滿足難度目標;

關注點A:檢查1可確保幣存在,但不能確保它未被使用。這種洞察立即導致我們接下來會討論到的漏洞。

關注點B:即使我們在驗證主鏈分叉上的區塊,coinstake交易也會針對主鏈本身的TxDB進行驗證。

基于問題A,我們也找到了一種欺騙這類檢查的方法,我們將這種微妙的攻擊方法稱為“花費權益攻擊”。為了繞過檢查1,我們使用了一個輸出,該輸出由節點看到,但已被占用。通常,為了繞過檢查2,我們需要挖掘一個通過難度目標的有效區塊,而這又需要大量的幣。然而,事實證明,我們可利用不完全驗證,使用我們稱之為“權益放大”的技術生成任意數量的表觀權益。

權益放大(Stake Amplification)技術

為了通過少量的權益實施攻擊,攻擊者必須放大其表觀權益。表觀權益是指總的候選權益輸出,甚至是已花費的權益輸出。如果攻擊者以數量為k的UTXO開始,那么攻擊者可以創建多筆交易,將幣花回攻擊者,如下圖所示。只有UTXO(n+1)才允許進行權益增值(staking),但是由于上面的檢查2,我們可以從1到n+1的所有UTXO進行權益增值,從而使表觀權益增加為n*k。這增加了找到PoS區塊的機會,因為攻擊者可以繼續這樣做來增加其表觀權益。具體過程如下圖左側的“權益放大步驟”所示。

權益放大和花費權益攻擊

例如,即使在系統中只擁有0.01%的權益,攻擊者也只需要通過5000筆交易來挖掘具有50%的表觀權益權力的區塊。在攻擊者收集了大量表觀權益之后,他可使用新收集的表觀權益輸出繼續挖掘PoS區塊,最后,攻擊者用無效區塊填充受害者對等節點的磁盤,如上圖右側所示。例如,攻擊者可以從交易所購買一些PoS幣,如我們所描述的那樣通過自我花費擴大表觀權益,然后將這些幣賣給交易所,并在之后的任何時候執行攻擊。攻擊者唯一要付出的代價就是交易費用。

協調漏洞披露

我們首先在Particl和Qtum加密貨幣的背景下調查了漏洞#1,為了確定這種漏洞的影響,我們從coinmarketcap.com(2018年8月9日)按市值排序,收集了已知加密貨幣的列表,并選出了PoS共識類型的鏈。我們只研究了那些從比特幣代碼庫分叉出去的PoS幣種,總共檢查的加密貨幣共有26種,其中只發現5種PoS幣受到該漏洞的影響,它們分別是Qtum, Navcoin, HTMLcoin, Emercoin和Particl,而我們的攻擊方式對其余的PoS幣似乎都不起作用。為了確認漏洞,我們在五個受影響的代碼庫中分別實施了攻擊。我們利用了比特幣軟件中現有的測試套件,特別是regtest模式,該模式支持模擬時間戳并易于創建區塊,以及基于python的測試節點(基于比特幣測試框架),該節點可通過攻擊者行為進行擴展。我們使用Docker容器將這些測試、它們的依賴項和受影響的特定提交哈希,打包到一個再現性工具包中,而這個工具包,我們可以輕松地將其分享給五個受影響的開發團隊,以此作為漏洞公開的一部分。

然后,我們更深入地了解為什么未受影響的加密貨幣不易受到漏洞1的攻擊影響,然后認識到漏洞2幾乎同樣嚴重(需要少量的權益),但它們是更普遍的。在計劃一項協調披露時,我們認為向經濟活動不活躍和開發團隊不活躍的加密貨幣披露該漏洞可能會適得其反(例如,風險在于,如果漏洞被泄露,在其他人有時間部署緩解措施之前,它可能會影響其他人)。最終,我們決定將注意力集中到15個最有可能受到攻擊的加密貨幣(前200名的加密貨幣)。

一個復雜的因素是,這些代碼庫中的大多數沒有使用regtest模式,因此我們不能輕易地演示攻擊,也不能為每個代碼庫提供一個再現性工具包。因此,我們只提供了stratisX的C++代碼庫演示?;詿肟庵械南嗨菩?,我們通知了所有我們認為會受到影響的15個團隊。其中,有5個團隊承認了這一漏洞,有3個團隊仍在調查當中,3個團隊反駁了這一漏洞(指出其已實施了減輕影響的措施),另外有4個團隊沒有做出回應。對于沒有響應的四個團隊,我們通過他們的網站找到的渠道聯系他們。這里可以找到我們的Github漏洞再現性工具包,以及關于漏洞1的簡短論文。我們還為漏洞保留了CVE,其應該很快就會被公開。 

緩解措施

我們看到有團隊針對我們的漏洞披露實施了一系列緩解措施。一些加密貨幣實現了檢測攻擊并斷開與攻擊對等體連接的緩解措施。簡單地說,節點監視其對等節點的異常行為(例如,在fork上發送多個區塊頭)。這種啟發式方法的挑戰在于,很難區分實際攻擊和經歷合法重組的誠實節點,因此該方案存在錯誤禁止誠實節點的風險。到目前為止,我們看到的緩解措施看起來是合理的,但這是一個值得進一步調查的領域。

其他一些加密貨幣在固定長度范圍內添加了部分驗證。如果對等方接收到一個從主鏈分叉超過該長度的區塊,那么該區塊就被丟棄了。例如,在BCH(比特幣現金)的ABC代碼庫中也采用了這種方法,該代碼庫使用一個10區塊的滾動檢查點。這種方法的缺點是它引入了“鏈分裂”的可能性。當誠實的節點最終位于區塊鏈的不同分叉上時,就會發生鏈分裂。例如,如果網絡連接不良,導致節點彼此失去同步的時間足夠長,從而創建沖突的檢查點,則可能發生這種情況。即使節點重新獲得連接,它們也無法實現鏈的同步。我們注意到,即使沒有這種緩解措施,也存在鏈分裂的風險?;毓飼懊嫻墓刈⒌鉈,由于 coinstake交易是使用當前鏈中的交易輸出進行驗證的,因此,如果節點臨時發現自己在一個分叉上,則可能無法切換到實際的主鏈。

鏈分裂風險也為敵對礦工引入了新的攻擊手段。攻擊者可以嘗試秘密挖取一個長鏈,然后將其發布到節點的一個子集,以導致鏈分裂。IBD(初始塊下載)中的節點,或長時間離線后剛重啟的節點特別易受這種攻擊。這種攻擊可以與Eclipse攻擊結合起來,將誠實的節點引入由攻擊者控制的鏈中。

所有這些緩解措施可使攻擊難以執行,但仍然無法替代完全驗證。一些加密貨幣,如量子鏈,計劃在未來版本中全面驗證非主鏈區塊。

應建議以下受影響加密貨幣的用戶將其節點更新為最新的補丁軟件,需要注意的是,未更新的節點,我們可利用此漏洞導致節點RAM或磁盤消耗增加,并最終導致其崩潰。

下表顯示了我們認為受上述兩大漏洞影響的加密貨幣。我們還沒有驗證所有的PoS幣,我們也沒有研究那些反駁我們的說法的幣種團隊為什么沒有受到影響。

最后的想法

雖然“偽造權益”攻擊在原理上是很簡單的,但它們強調了一個困難的設計挑戰:在工作量證明(PoW)中有意義的一些想法,不能安全地轉換到權益證明(PoS)??悸塹紹itcoin Core作為PoSv3加密貨幣的“先輩”,它們的代碼共享程度是很高的,我們認為這值得進一步審查。在調查這些漏洞時,我們發現了幾個針對各種緩解措施和特別防御措施的在建工程代碼庫。對我們來說,這表明PoS開發者意識到在這一設計空間中的權衡和需求,還沒有被完全理解。挑戰在于,一方面,我們希望盡快拒絕無效的區塊,另一方面,我們不希望陷入鏈分裂或在處理實際的主鏈時被延遲。處理這一問題的系統方法,仍然是未來需要探索的工作。

盡管我們看到最近的漏洞例子(例如比特幣中的CVE 2018–17144)至少影響了兩個加密貨幣的代碼庫,但據我們所知,這是第一次跨如此多(20+)獨立加密貨幣的協調安全漏洞披露??悸塹講煌用芑醣抑淥枷氳慕徊媧ズ痛脛賾玫氖?,我們預計將來會有更多這樣的漏洞。我們發現,這些代碼庫的安全過程幾乎沒有一致性。例如,它們中的大多數沒有專門的安全聯系人。為協調披露建立最佳實踐,可能有益于整個生態系統。

[1]這個漏洞的想法起源于2018年夏季,當時Andrew Miller正在與Unit-E開發人員合作。我們感謝Munto Sunbasz和Gil Danziger的有益討論和DTR基金會(HTTPS://DTR.OR/)的研究資助。

[2]Emercoin實現了一種啟發式對等檢測。https://github.com/emergoin/emergoin/commit/ec32762B99cc68fb9ab2909dda96bc7a13bd819

[3] 在Qtum 中的滾動檢查點 https://github.com/qtumproject/qtum/commit/8d208d0bee8449c1e4a3904f3fc97ed26156648

[4]PoS的特別檢查示例如下:https://github.com/peercoin/peercoin/blob/ebb4003ce8367501020181f7e734d52c4b1ab5ea/src/main.cpp l2564

[5]我們通過電子郵件聯系了一些團隊,列出了他們的網頁或“發送便條”功能。

[6]從11月開始,我們多次嘗試通過PIVX網站上的聯系方式聯系他們,截至撰寫這篇文章是,我們才意識到PIVX還啟動了一個名為Hacker One的項目,我們注意到,即使到今天,PIVX網站上的bug賞金頁面本身,也根本沒有提到Hacker One項目。

[**] StratisX已經從脆弱的C++代碼庫轉移到C#代碼庫。


特別提示:本信息由相關企業自行提供,真實性未證實,僅供參考。請謹慎采用,風險自負。


0相關評論
相關行情
推薦行情
辽宁35选7  |  VIP套餐介紹  |  關于我們  |  聯系方式  |  使用協議  |  版權隱私  |  網站地圖  |  排名推廣  |  廣告服務  |  積分換禮  |  網站留言  |  RSS訂閱  |  違規舉報
 
{ganrao}