どうも墨汁うまい(@bokujyuumai)です。イーサリアムの大型アップデートであるコンスタンティノープルは、テストネットでのコンセンサスバグからの延期の後、実装まで後1日と迫っていました。そんな中、コンスタンティノープルで実装されるEIP-1283に致命的な脆弱性が発見、延期されることになりました。
ETH超速報:コンスタンティノープルが脆弱性により延期が決定。コントラクト監査期間のChainSecurityによると、実装予定のEIP-1283でThe DAOでも同様に行われたリエトランシー攻撃が可能となり、ハッカーがETHを盗むことができる #イーサリアム #コンスタンティノープル #ハードフォーク #仮想通貨 https://t.co/4hIAw5Hwbc
— 墨汁うまい(Bokujyuumai) (@bokujyuumai) 2019年1月15日
EIP-1283の脆弱性とリエントランシー攻撃とは?
EIP-1283は、コンスタンティノープルに実装されるEIPの一つです。コントラクトを実行するEVMのOPCODEのSSTOREを使用する際、連続したオペレーションの場合、それに比例してガスコストが非常に高くなるという問題を改善するというものでした。
今回、スマートコントラクト監査会社のChainSecurityによると、Solidityでコントラクトを書く際にaddress.transfer(…) またはaddress.send(…) を使用するとリエントリー攻撃の脆弱性となる可能性が指摘されています。
リエントリー攻撃(Re-entrancy attack)は簡単に説明すると、「送金する前の段階でハッカーに割り込まれてETHを盗まれる」という攻撃です。このリエントリー攻撃は、2016年にイーサリアムクラシック誕生のきっかけとなったThe DAOハックの原因です。また、イーサリアムのコントラクトの自由度が高い代わりにコントラクトの監査を慎重に行わないといけないという教訓を与えました。
The DAOハックとイーサリアムクラシックの歴史
The DAOはイーサリアムベースのプロジェクトで、2016年5月に約50億円の資金調達を黎明期以前に行っています。同プロジェクトのコントラクトにリエントリー攻撃を可能とする脆弱性があり、同年6月リエントリー攻撃によって合計1,200万ETHが悪意のあるハッカーDark DAOとイーサリアムを援助する正義のホワイトハッカーのWhiteHat Groupにより不正に送金。その後WhiteHat Groupは返金を行っています。
イーサリアムのコントラクトはデプロイしたら誰でも確認できる透明性と変更できないという不変性により、非中央集権のスマートコントラクトモデルを実現しているものの、複雑な仕様を1つのコントラクトで実装していたことなども原因で不変条件を変更するフォークを行いました。
この不変条件の変更はイーサリアムの非中央集権モデルを揺るがすものだとし、破棄されたイーサリアムチェーンをイーサリアムクラシックとして支持したものが現在のETCです。
延期後のコンスタンティノープル予定とユーザーガイド
イーサリアムファンデーションは公式にコンスタンティノープルの延期を発表し、今週の金曜日に行われるコアデベロッパー会議で次のブロックターゲットを決定します。
ETH速報:イーサリアムファンデーションは公式にコンスタンティノープル延期を発表。元々予定されていたハードフォークは32時間後なので、それまでにノードを建てている各自はGethとParityまたはその他クライアントのアップデートorダウングレードを行ってください #イーサリアム #仮想通貨 https://t.co/pq9SEq6k0R
— 墨汁うまい(Bokujyuumai) (@bokujyuumai) 2019年1月15日
すでにこの発表がされてからイーサリアムのメジャークライアントであるGethはホットフィックス版となるGeth v1.8.21がリリースされているので、取引所、ソロマイナー、Ethereum Wallet、ノードを建てているユーザーはアップデートを行って下さい。Parityもv2.2.7をリリースしており、アップデートするかv2.2.4へダウングレードを行う必要があります。
必ず、元のコンスタンティノープルハードフォークのブロックナンバー#7,080,000前までにアップデートが必要です。特に企業などのソロマイナーの場合、アップデートを行わないとフォークしてしまい、マイニングしたETHは現在のビザンチウムチェーンでは無効となるので注意が必要です。
https://github.com/ethereum/go-ethereum/releases/tag/v1.8.21
◆Parity
https://github.com/paritytech/parity-ethereum/releases/tag/v2.2.7
ハードウェアウォレットや取引所を使用しているユーザー、MetamaskやMyEtherWalletなどのウェブウォレット、コントラクト保有者は特に行うことはありません。
結論と考察
今回の可能性のある脆弱性の発見は問題であり、結果としてChainSecurity発表からETH価格が12ドル下落する形となりました。ですが、EIP-1283がコンスタンティノープルで実装された際には、特定のコントラクトがリエントリー攻撃を受ける可能性がありましたが、イーサリアムのコントラクト監査会社によって未然に防ぐことができました。
イーサリアムがOSSで開発している利点は、その巨大なエコシステムによりコード監査されることで、このような致命的な脆弱性を未然に防ぐまたは発見することにあります。つまり、エコシステムが大きければ大きいほどセキュリティ監査能力が高いとも言えるでしょう。
対して、Vitalik氏などのリードデベロッパーたちはETH1.xや2.0の開発やリサーチにばかり集中することで、今回のようなコンスタンティノープルの延期が起きたといっても過言ではありません。
★イーサリアム(ETH)のリアルタイム価格・チャートを確認>>
関連:イーサリアムのコンスタンティノープル実装迫る!ETHホルダーが知っておくべき事とは?(2019年1月11日公開)
▼墨汁サロンでは日々価格分析と最新ニュース、価格に影響する技術についての相場影響などの考え方などを詳しく解説しています。