Ethereum開発者はBesuクライアントのガス過剰エラーによりEVMチェーンが動かなくなるバグを発見しました
。
Ethereum開発者はBesu Ethereumクライアント内で、”複数のEVM実装を持つネットワークでコンセンサス失敗 “につながる可能性のあるバグを発見しました。
Gary Schulte氏がHyperledger GitHubリポジトリに問題を報告し、Martin Holst Swende氏が発見したものです。この失敗を引き起こすようなトランザクションを持つ本番ネットワークはない」と理解されています。”
Bug identified during The Merge code review
Swende氏は、「イーサリアムのファジングをしているときにバグを発見した」と文書で述べています。私たちのジャーナリストへの回答として、SwendeはBesuノードを実行しているユーザーはスタックして “canonチェーンに従えなくなる “と述べています。さらに、あらゆる「Besu支配のネットワークは、その軌道を止められたかもしれない」
。
正典の連鎖に従うことができず、立ち往生していただろう。
– M H (((Swende))) (@mhswende) September 27, 2022
Besuクライアントは、Gethに次いでEthereumネットワーク上で2番目に人気のあるクライアントです。ethernodes.org経由で入手可能なデータによると、The BesuクライアントはEthereumメインネットクライアントの7.81%で使用されています。
脆弱なBesuクライアントのバージョン
。
Besuクライアントのバージョン22.7.1には、”過剰なガスが内部トランザクション呼び出しに割り当てられないようにする修正と過剰ガスエラーの修正 “が含まれています。
22.1.3より前のバージョンでも「不正な実行を防ぐ」ことができますが、Ethereum mainnetでは後のバージョンでしか利用できない他の機能が必要です。クライアントバージョン22.4.0から22.7.0は現在、ガスバグの脆弱性があると考えられています。
そのため、メインネット上のBesuクライアントユーザーは、パッチが適用されたバージョンにアップグレードする必要があります
。
影響と解決方法
Danno Ferrinは、9月21日に公開されたHackmdの記事で、この問題の完全な記述を作成しました。Ferrin氏の分析では、
は次のように述べられています。
「適切にコーディングされたスマートコントラクトが、署名されていないデータを署名されたデータとして扱う際の欠陥により、渡された以上のガスを返す関数コールを作成できる」
と述べています。
バグに関するさらなる技術的な情報は、Ferrinの投稿に記載されています。しかし、主な収穫は、このバグがイーサリアムのメインネット上で何の問題もなく解決されたことです。悪意を持ってバグを悪用する悪質な行為者は、緻密な方法で行動しなければならなかったでしょう。
“これをチェーンハルティングバグに昇格させるためには、EIP-150の “all but one 64th” ルールとの相互作用と、呼び出し側の契約に対して利用可能なガスの一部を予約する、意図的に細工した呼び出しが必要でした “
“。
バグが発見されなかった場合、Besuクライアントが多く参加するチェーンでは、スマートコントラクトの「無限ループ」が発生し、コントラクトが「本当に永遠に実行される」可能性があった。
フェリンは、ファジングによって開発者がバグを特定し、問題なくパッチを当てることができたと述べている。ファジングとは、ソフトウェア開発者が使用する手法で、「コンピュータ・プログラムへの入力として、無効なデータ、予期しないデータ、またはランダムなデータを提供することを含む」
のことです。
「この悪用によって示された最大の教訓は、ファジングの実行におけるトレースデータの比較は、単に最終結果を比較するよりも多くのバグを捕らえることができるということです」
「この悪用によって示された最大の教訓は、ファジングの実行におけるトレースデータの比較は、単に最終結果を比較するよりも多くのバグを捕らえることができるということです。
過剰ガスバグは、イーサリアムの開発者がネットワークの保護に専念したため、非事象となりました。しかし、それが引き起こす可能性のあった被害は、問題なくマージを実行することの背後にある複雑さを示しています。
このバグは、バージョン22.7.1で「符号付き変換の問題を避けて、オーバーフロー値を最大期待値に「クランプ」する別の変換方法」を用いてパッチが適用されました。Ferrin氏は、脆弱性の範囲内にあるノードを実行しているユーザーは、最新バージョンにアップデートする必要があるとコメントしています。