Attacks

乙太坊虛擬機中的一個潛在漏洞可以用來在乙太坊網路的每個節點上部署木馬嗎?

  • April 27, 2018

很長一段時間以來,這一直在我的腦海中浮現,但隨著最近的 dos 攻擊再次浮出水面。

智能合約的建構子在合約部署時由所有節點執行。

因此,如果乙太坊虛擬機存在允許在主機節點上執行任意程式碼的錯誤,則可以通過在區塊鏈上插入惡意合約,立即在整個網路上部署病毒/木馬。

這很可能已經在其他地方經過深思熟慮和討論,但我找不到任何相關資訊。

那麼,這樣的攻擊可能嗎?什麼是對策?

假設 EVM 本身沒有指定一些可以執行任意程式碼的行為(規範中的一個錯誤),那麼理論上可以逃脫 EVM 以啟用任意程式碼執行的攻擊。沒有理由相信藍色藥丸、針對 VMWare 虛擬化解決方案的各種攻擊以及針對 Java VM的攻擊是孤立的,並且 EVM 是安全的。

EVM 有許多實現(例如 Parity 和 中的實現geth)。這既是一個優勢(一個軟體中的漏洞不會導致整個網路癱瘓)也是一個弱點(更大的整體程式碼庫會導致更大的攻擊面)。由於 EVM 有多種實現,包括一些在其他 VM 中執行的實現(例如Python VM中的Pyethereum和 Java VM 中的EthereumJ),並且都執行在不同的作業系統上,單個木馬不太可能能夠同時pwn整個網路。

節點級別的對策包括物理隔離(例如在專用硬體上執行)和邏輯隔離(使用虛擬化)。還可以使用只讀介質使節點留空並帶來區塊鏈碎片。顯然,對於需要持續連接到網路的應用程序來說沒有用處。

此外,根據威脅模型,可以採取其他預防措施。如果擔心私鑰被盜,執行 EVM 的節點不需要儲存密鑰:交易簽名可以在單獨的氣隙機器上完成。如果擔心資源被劫持(例如加入殭屍網路),則可以通過不包括獨立顯卡(可能用於挖礦)、使用功能較弱的硬體以及使用外部防火牆來降低節點的吸引力。使節點更難為殭屍網路所有者做有用的工作。可以通過使用滾動備份來減輕勒索軟體中的數據修改。

引用自:https://ethereum.stackexchange.com/questions/9654