アップデート未完了のノードがイーサリアムにもたらす脆弱性
イーサリアムでも進んでいないノードのアップデート
仮想通貨イーサリアムのネットワークにおいて多くのノードが最新版のソフトウェアクライアントであるParityかGethに更新していないことがセキュリティ企業SRLabsのレポートで判明。ノードのパッチ適用事情と詳細を解説する。

未だに残るアップデート未完了の「古い」ノード

2019年5月、報告された。

このクラッシュは、2つのノード間でチェーンを同期している間に、整数のオーバーフローが原因で発生しうる。すべてのノードは任意の接続要求を受け入れてメインネットワークとの同期を維持するため、攻撃者は イーサリアム・ネットワークにおいて、パッチが適用されていない Parity ノードをクラッシュさせることができる、というものだ。

Gethでも44%が未更新

Parity Ethereum では、ノードをスキャンした結果、15%が2月のパッチを未適用だったという。 さらに、3月2日にリリースされたバージョンについても同様に調査し、5月2日時点で30%でパッチが未適用だった。

さらに、7%は9か月間もパッチを当てていない。2018年7月にはテストネットの脆弱性がメインネットに波及する可能性が指摘され、

出典:Security Research Labs

更新されない理由

Gethには自動更新の機能は存在しない。したがって約44%のGethノードが脆弱という報告は、アーキテクチャの設計そのものにおける問題と言い換えてもいい。

ただし、すべてのソフトウェアに自動更新を実装すべきかどうか、という点は議論の余地がある。CCleaner や ASUSのアップデートツールのように、アップデート機能を悪用される例も出てきているからだ。

加えて、Electrumのようにクリティカルなセキュリティアップデートを装った攻撃も確認されている。結局のところ、各自が少しずつ注意を払うしかないのが現状だろう。

Parity Ethereum にはセキュリティアラートを出してアップデートを促してはいるが、これも効果のほどは未知数だ。

攻撃は可能か?

詳細についてはハッシュレートの多数を占めるマイナーのバージョンを分析する必要がある。しかし、現実的には難しいはずだ。

ノードをクラッシュさせることができるなどの脆弱性は単体ノードにとっては致命的だが、ネットワーク全体で見た場合、単一ノードのクラッシュによる影響は微々たるものであり、他の攻撃手法と組み合わせない限り有用性は高くない。

ハッシュレートの過半はマイナープールが握っており、彼らが報酬のために正しく動作している限り、二重支出攻撃などを行うためのコストは非常に高いままだろう。

なお、仮想通貨情報統計サイトEtherscanで直近7日間のハッシュレートを見ると、上位4つのプールが75%を占めていることがお分かりいただけるだろう。

出典:Etherscan

まとめ

先日お伝えしたビットコインの事例と同様、イーサリアムでも脆弱なノードが放置されている実態が分かった。

ただちに問題につながるわけではないものの、コミュニティベースで運営されるという前提を考えると、早急な対応が望ましいだろう。 これをお読みになった読者各位におかれても、お手元でノードを運用されている場合、ご確認いただくことをお勧めする。