前言
隸屬伊利諾伊大學香檳分校的去中心化系統(tǒng)實驗室(Decentralized Systems Lab)在最新的研究中發(fā)現(xiàn),很多以權益證明(Proof-of-Stake, PoS)為基礎的加密數(shù)字貨幣都存在一系列的漏洞,該漏洞會耗盡系統(tǒng)資源。
該研究團隊提出的是一種拒絕服務(DoS)攻擊,一次只能針對單個節(jié)點運行,使節(jié)點無法正常運行,因此該漏洞不存在任何資金安全上的風險。
實驗室研究人員提出了兩種類型的攻擊:
1. 無權益的攻擊:利用節(jié)點無法單獨通過區(qū)塊頭確定有效權益的特性造成內存或磁盤的過度占用
2. 已花費權益的攻擊:受到攻擊的加密數(shù)字貨幣會被多次轉移,但此前用于權益證明的數(shù)據(jù)仍然繼續(xù)使用 (Qtum 量子鏈不存在這種漏洞的可能)
正如英文原文所述,只有“無權益的攻擊”漏洞可能會對 Qtum 產(chǎn)生影響; 但是,在 Qtum Core 0.16.2版本(已于2018年11月16日發(fā)布)中,我們已經(jīng)實施了一系列的緩解措施,杜絕了這種攻擊向量的風險。
“無權益的攻擊”由兩種相似但不同的攻擊向量組成。
在第一種攻擊向量下,攻擊者會導致受害者節(jié)點內存耗盡;在第二種攻擊向量下,會導致受害者的磁盤空間耗盡,因此無論哪種攻擊都不會與資金安全風險相關。
第一種攻擊向量的產(chǎn)生是由于將區(qū)塊頭存儲在內存空間之前未進行充分的驗證引起的。因此,潛在的攻擊者可以通過泛洪攻擊使用大量無效的區(qū)塊頭耗盡受害者節(jié)點的內存資源。在 Qtum 中可能存在這種漏洞的原因是,Qtum 繼承了 Bitcoin 0.10.0版本的區(qū)塊頭優(yōu)先的特性。
在 Bitcoin 中,在將區(qū)塊頭存儲在內存之前會對區(qū)塊頭的工作量證明(PoW)進行驗證。但是,Qtum 的權益證明協(xié)議中并不涉及任何 PoW 的相關內容,同時由于 coinstake 交易只存在區(qū)塊當中,Qtum 中的 PoS 只有在接收到完整的區(qū)塊后才能完全驗證。因此,潛在的攻擊可以創(chuàng)建大量無效的區(qū)塊頭并將它們發(fā)送給已連接的其他節(jié)點,從而導致它們耗盡內存資源。
這種攻擊向量的第二種變體與 Qtum 如何/何時進行完整區(qū)塊的驗證有關。 在 Qtum 中,當接收到新的區(qū)塊的總鏈“工作量”比上一個 tip 的“工作量”更多時,將執(zhí)行完整區(qū)塊的驗證和 coinstake 驗證。 事實上,這意味著僅當新塊附加到當前 TIp,或者接收到分叉鏈的 TIp,且該TIp具有比當前 TIp 更多的總鏈“工作量”時,才會對 PoS 進行完全驗證,并因此觸發(fā)區(qū)塊重組。 但是,在先前版本的 Qtum 中,如果節(jié)點收到一個鏈工作量大于或等于當前 tip 的鏈工作量的區(qū)塊時,就會將這些新的區(qū)塊提交到磁盤空間。因此,攻擊者可以在所連接的節(jié)點沒有完全驗證 PoS 的情況下讓被攻擊節(jié)點將區(qū)塊提交到磁盤,從而導致它們耗盡磁盤空間。
Qtum 的 v0.16.2 是一個推薦的更新版本,包括改進的網(wǎng)絡安全性和錯誤修復,形式如下:
1. 實施網(wǎng)絡垃圾防護
2. 只有當區(qū)塊的鏈工作量嚴格大于當前 tip 工作量時,才會向 peer 節(jié)點請求區(qū)塊
3. 為 PoS 時間戳,區(qū)塊索引,簽名類型(LowS),同步和滾動檢查點添加額外的區(qū)塊頭檢測。
4. 添加最近的檢查點
5. 更新 nMinimumChainWork,defaultAssumeValid 和chainTxData
6. 更新 BLOCK_CHAIN_SIZE
7. 修復在 OSX Mojave 上進行編譯 (make) 檢測時失敗的 Qt 測試
8. 修復用于 PoS 區(qū)塊的 getblocktemplate RPC
9. 修復 walletpassphrase 和 getnetworkhashps RPC 的幫助消息
當 Qtum 將區(qū)塊提交到磁盤時,針對區(qū)塊/磁盤的攻擊只需要稍微進行一點修改。 現(xiàn)在只有當區(qū)塊作為鏈的一部分,鏈的 tip 工作量大于當前 tip 的鏈工作量時,才會將區(qū)塊提交到磁盤。
區(qū)塊頭/內存攻擊可以通過實施潛在的區(qū)塊頭垃圾檢測以及斷開和禁止任何有問題的 peer 來進行緩解。 之前僅在收到完整區(qū)塊時才進行的幾項檢測也被添加到了獨立的區(qū)塊頭檢測中。 例如,在將區(qū)塊頭提交到內存之前,要確保區(qū)塊頭中包含的簽名格式的正確性,因為攻擊者可以使用大量無效的簽名來放大其表觀權益。
v0.16.2 中實施的網(wǎng)絡垃圾防護會對試圖運行此類“無權益的攻擊”的 peer 進行檢測并禁止它們。 現(xiàn)在,只有當區(qū)塊的鏈工作量嚴格大于當前尖端工作量時,節(jié)點才會向 peer 請求區(qū)塊。 除了這些對策之外,我們還為 PoS 時間戳,區(qū)塊索引,簽名類型(LowS)以及同步和滾動檢查點添加了額外的區(qū)塊頭檢測。
Qtum 量子鏈開發(fā)團隊通過去中心化系統(tǒng)實驗室關于“偽造權益”的研究成果,使得 Qtum 量子鏈開發(fā)團隊在攻擊被公之于眾之前就已修復該漏洞,及時避免了對用戶造成的影響。
由于實現(xiàn)了額外的復雜性和安全特性,這些補丁能很大程度防御任何類似的攻擊。與此同時,Qtum 量子鏈也正在進行一個更為全面的修復,該修復已通過了我們的初始測試,但由于它是對協(xié)議的一個相對更加重大的修改,所以我們需要在正式發(fā)布前進行更多的測試。