CryptoNote 系列加密貨幣存在重大漏洞的資訊揭露

總覽

我們已在 Monero 上找到並修復一個重要的漏洞,這個漏洞同時影響了所有使用 CryptoNote 演算法的加密貨幣,藉由這個漏洞,無限量的錢幣可以被不知不覺的產生。

我們已在好一段時間以前就將這個漏洞修復完成,並且確認過 Monero 的區塊鏈從未被利用這個漏洞產生出偽造的錢幣,但直到數周前的硬分叉後我們才能確保整個 Monero 網路都已經更新這項修復。

在分叉完成後,當我們一確認整個網路都已經更新,我們就將此漏洞通知了其他所有還在開發的 CryptoNote 加密貨幣專案包括CryptoNote本身、 Bytecoin、Forknote、Boolberry、DashCoin 與 DigitalNote。

請注意,發文(原文)的此刻,只有Monero、Aeon、Boolberry與Forknote已修復這個漏洞。我們已盡量提供其他貨幣專案盡可能足夠的時間修復,但已無法再繼續限制這項資訊揭露。

我們強烈建議避免使用、交易、兌換或使用以下被此漏洞影響的貨幣相關服務: Bytecoin、DashCoin、DigitalNote

事件時間軸

2017-02-19: 一位 Monero Research Lab 的成員發現了這項漏洞,是來自於一串關於Curves mailing list上的XEdDSA signature schemes 詳細的討論。
2017-02-20: Monero 的區塊鏈在經過掃描比對後,確認並沒有被利用這個漏洞所攻擊過。
2017-02-21: 修復的更新檔 (pull request #1744)迅速低調的被更新入程式碼中。這項消息被保密以免漏洞會被用來攻擊其他的加密貨幣專案。
2017-02-22: 推出一個重要的發佈版本,偽裝成可以防止RingCT DoS的攻擊更新(實際上沒有這個攻擊但是個比較容易的合理解釋),以便讓礦池和交易所可以先行更新。
2017-03-15: 這個問題的詳細資訊hash被提交至 Monero 區塊鏈中:tx dff7a79e44f9392e19fe5205c389d3e799f89c62d90d624219618d754b806e04。
2017-03-26: 進一步發佈重要版本更新準備進行四月的硬分叉。
2017-04-14: Monero 網路進行硬分叉以增大動態區塊大小,但這也同時確保了整個網路的軟體版本都已更新並受到保護。
2017-04-17: 通知所有的 CryptoNote 貨幣專案,並告知他們需要在五月中前修復這個漏洞,並將會有個揭露此項漏洞的公開訊息。
2017-04-17: Riccardo “fluffypony” Spagni 在 Twitter 上紀錄送出給各個貨幣專案通知訊息的hash值  

造成的問題

有個所謂的”key image”在CryptoNote貨幣中利用到的elliptic curve ed25519可以在特殊的狀況下被修改,這問題造成雙花(double-spends)的狀況被允許。這個漏動使得某人可以非常有效率的從中創造無限量的錢幣,並且只能由發現這個漏洞後所設計出來的檢查程式碼所偵測到。  

可採取的應變措施

有數種方法可以應對這項漏洞,最簡單也不會大量更動程式碼的方法如下。

藉由 multiplying by the curve order l 檢查 key image 的正確性。

檢查結果是identity element。

Hexadecimal values of each:

Identity element = “0100000000000000000000000000000000000000000000000000000000000000”

Curve order (little endian) = “edd3f55c1a631258d69cf7a2def9de1400000000000000000000000000000010”

對每一個交易的key image 檢查((key image * curve order) == (identity element)); 若結果為false則拒絕此交易。

  以上翻譯來自官方網站原文