Solidity、バージョン0.8.19~0.8.37に影響するYulオプティマイザーのバグを修正
Solidityはバージョン0.8.38で、深刻度の低いYulオプティマイザーのバグを修正しました。このバグは、Solidity 0.8.19~0.8.37でYulオプティマイザーを有効にしてコンパイルしたコントラクトに影響します。特定の条件下では、古くなった管理情報により、実際には重なり合っている2つのメモリまたはストレージの位置を、Yulオプティマイザーが別々の位置として扱うことがあります。その結果、コントラクトが古い値を返したり、必要な書き込みが行われなかったりする可能性があります。
この問題はDaniel Boyeによって報告され、その後Surya Prakash Akulaが、インラインアセンブリを使わない通常のSolidityコードからも発生し得ることを示しました。`--via-ir`でコンパイルしたコントラクトは広く影響を受ける可能性があります。一方、デフォルトのevm assemblyパイプラインでは、影響を受ける範囲はより限定的です。Yulオプティマイザーが無効であれば、このバグは発生しません。
Solidityが約283,000件の検証済み`via-ir`コンパイルと607,000件のevm assemblyコンパイルを調査したところ、修正の有無によるビルド間でバイトコードの差は見つかりませんでした。チームは、これはバグがまれであることを示唆するとしていますが、デプロイ済みコントラクトに影響がないことを保証するものではありません。開発者はSolidity 0.8.38以降にアップグレードし、影響を受けるバージョンでコンパイルされたデプロイ済みコントラクトを評価してください。トレーダーにとっては、これはスマートコントラクトの信頼性に関する限定的な警告であり、Ethereumネットワークや市場全体の広範な混乱を示すものではありません。
Neutral
この発表はセキュリティおよび開発者向けのアップグレード通知であり、エクスプロイト、ネットワーク障害、資金損失の証拠ではありません。Solidityはこのバグの深刻度を低いと評価しており、約89万件の検証済みコンパイルをスキャンした結果、修正あり・なしのビルド間でバイトコードに差異は見つからなかったとしています。また、この問題が発生するにはオプティマイザーやアドレスの再割り当てに関する特定の条件が必要であり、影響が及ぶ可能性のある範囲は限られます。こうした点から、ETHや暗号資産全体の価格に市場全体を巻き込む即時の影響が出る可能性は低いでしょう。
短期的には、Solidity 0.8.19~0.8.37を使用するプロジェクト、特にYulオプティマイザーまたは`--via-ir`を使ってコンパイルしたプロジェクトからの発表が注目される可能性があります。広く利用されているプロトコルが、デプロイ済みの脆弱なコントラクトや悪用可能な損失を報告した場合、信頼感が弱まり、当該プロジェクトのトークン売りや一時的なボラティリティの上昇につながる可能性があります。この記事ではそのような事案は報告されていないため、市場全体に対する弱気な見方を裏付けるものではありません。
長期的には、Solidity 0.8.38の修正と推奨される検証手順により、各チームがアップグレードを行い、影響を受けるデプロイをテストするにつれて、継続的なリスクが低下すると考えられます。他のコンパイラー脆弱性の開示と同様、市場で重要なシグナルとなるのは、確認された悪用、影響を受けるプロトコルのTVL、緊急停止、プロジェクトによる修正対応であり、パッチ済みのコンパイラー問題が存在するという事実だけではありません。総じて、市場の方向性に対しては中立的なニュースですが、スマートコントラクトのリスク監視には関係します。