悪用される可能性のあるスマートコントラクトの分析 イーサリアムファンデーション公式発表
イーサリアムファンデーションが前回Solidityのセキュリティアラートを発表しましたが実際に攻撃を受ける可能性のあるスマートコントラクトの調査報告となります。
過去記事をご覧になられていない方は下記にて参照してください。
ストレージ破損バグの分析
この記事は先週見つかったストレージの破損バグの調査結果の報告です。
まとめると、バグは当初イーサリアムファンデーションが予測したよりはシビアなものではなく、イーサリアムファンデーションの発見したごく少数の影響を受けるコントラクトはオーナーのみが利用可能なもの、またその悪用はユーザーインターフェイスの停止を引き起こし、これは実際のコントラクトのロジックではありません。
補足:現存のコントラクトは12,645件でそのうち4つのみが影響を受けます。
Result of 5h of checking code: 4 out of 12645 contracts exploitable by storage corruption bug, none critical. #solidity #ethereum
— Chris (@ethchris) 2016年11月1日
全ての悪用可能なコントラクトとDapp(分散型アプリケーション)はコントラクト自体をアップグレードせずに修正が可能でが、常にあなたのコントラクトが安全であるということを確認してください。
ソースコードの確認
Solidityコンパイラのストレージ破損バグの発見、バグがすでにデプロイされたアップデートのできないコントラクトに重大な影響を及ぼすという認識のため、イーサリアムファンデーションはどれほど一般的なバグがあるかと悪用可能なコントラクトにどのようにして対処することが出来るかの調査を行いました。
重要なスマートコントラクトと人気のスマートコントラクトはコンパイルを確認できるユーザーから信用を得るためにイーサースキャンにソースコードを公開するため、イーサースキャンに公開されているスマートコントラクトとソースコードに注目しました。その上もしソースコードが得られない場合はアタックするために最適なエクスプロイト(脆弱性を利用したソースコード)を見つけるのはとても難しくなるためです。
最後に、プライベートに使用されるコントラクト(従ってソースコードを公開する必要はない)は通常特定のアドレスからよびだされいることを確認するため、アタッカーはストレージに書き込むことができないということです
イーサースキャンの全てのコントラクトの調査を自動化するため、バグを引き起こす状態を自動的に検知するモディファイされたSolidityコンパイラを作成しました。
このモディファイにより潜在的に脆弱なコントラクトを167件まで絞込み、その後潜在的にストレージの破損攻撃に晒される脆弱性を持つコントラクトを手動で確認を行いました。
補足:約5時間かかったそうです。
悪用される可能性のある10件のコントラクト
その結果10件のコントラクトが脆弱であることが判明し、イーサリアムファンデーションはコントラクトのオーナー/デベロッパーに連絡を行うことが可能となりました。
7件のコントラクト:オーナーのみが許可された範囲外のパラメータを変更するという悪用を行えるものまたは、ロックされたか以前のコントラクトをアンロックすることができる
1件のコントラクト:権限のないユーザーにより悪用される可能性があるが、そのデザインに他の主要な欠陥のあるもの
2件のコントラクト:権限のないユーザーによりもし悪用しても利点のないものまたはユーザーインターフェイスにのみの影響
長くなるので切ります。
結論と考察
当初のセキュリティアラートを見たときはストレージ内のファイルが消去などのかなりひどい問題という報告でしたが実際に権限のない外部からの影響の与えるコントラクトは3件のみであり、実際の影響はほぼないと見ていいでしょう
これがイーサリアム(ETH)とイーサリアムクラシック(ETC)の価格に影響を与えるかというと現状の80kを目指しているビットコインの煽りを受け下げているのを見るに、更なる下げ止めとなったものと信じたいですね
イーサリアムもイーサリアムクラシックも両者とも現状のトレンドに逆らわずあまりいい情報を出さないようにしているように見えます。アルトコインにはきびしい冬になりますね
このブログは下記サイトへと移転しています。