2016年9月19日 03:04:56にイーサリアムクライアントのGethノードがDDoS攻撃によりメモリーエラーを起こし停止、ブロック生成ができなくなりました。問題のブロックは2,283,416から起き、イーサリアムネットワークのハッシュレートは一時的に1.5TH/sまで下落を記録しました。
スポンサーリンクGeth1.4.15「おい かかってこいよ」をリリース。DoS攻撃などの問題を修正 #イーサリアム #イーサリアムクラシック #ビットコイン #ブロックチェーン #マイニング #マイナー #スマートコントラクト #フィンテック #暗号通貨 #仮想通貨 #投資 #金融 https://t.co/ox1h4AkVwX
— 墨汁うまい(Not giving away ETH) (@bokujyuumai) October 3, 2016
1.DDoS攻撃の内容
イーサリアムネットワークはDEVCON2の開催中にDDoS攻撃を受け、一部のマイナーとノードはブロック生成時間に長時間割く必要がありました。原因はオペコードのEXTCODESIZEが極端にガスコストが低い点をつかれたためです。
オペコードについては下記を参照してください
2.イーサリアムに対するトランザクションスパムアタック
イーサリアムへのDoSアタックの正体はトランザクションスパムアタックでEXTCODESIZEのガスコスト問題でした。その結果ブロック生成の際20~60秒、トランザクションプロセスのため5万回のディスクフェッチを検証する必要があり、攻撃中2~3倍のブロック生成レート低下が生じましたが、コンセンサスの失敗ではなく、ネットワークまたはクライアントが完全に停止したわけではありません。現在ネットワークはなんとか回復している状態です。
2-1.攻撃に対する対策
とりあえずの解決策として、Gethユーザーは下記のフラッグにて起動
–cache 1024 –targetgaslimit 1500000 –gasprice 20000000000
Parityの場合
–cache-size-db 1024 –gas-floor-target 1500000 –gasprice 20000000000 –gas-cap 1500000
結果キャッシュサイズを上げ(デフォルトが128だから約9倍)、ノードがディスクの読み込みする回数を減らし~3倍にすることによってガスリミットをダウン、スパムアタックの際ブロックの最大処理時間を減少させました。
2-2.ガスリミット
マイナーがブロックプロセスに5秒以上かかるのを発見した際一時的に2倍以下のガスリミットを自動でカットするマイナーソフトウェアの変更。 自動で本日起こった様な修正を行うことを許可する
・キャッシュの設定のツイーク
・追加のキャッシュ
・EXTCODESIZEに追加のキャッシュ(ほとんどEXTCODESIZE読み込みは~18KB長いコントラクトから他のIO-heavyオペレーションより数回遅い)
・ディスク型キャッシュの状態値はアクセス速度向上を許可する( O(log(n))スピードアップ)
3.プロトコル変更のハードフォークの可能性
スポンサーリンクLeveldbデータベースと高性能なユースケースを最適化するオプションの置き換えを検討しているが、現状すぐというわけにはいきませんが、Parityチームは独自にパフォーマンスの改善に取り組んでいます
長期的にはローレベルのプロトコルの修正も同じく検討しいる。例えば、アカウントステータス(SLOAD, EXTCODESIZE,CALL,etc…)の読み込み要求をするオプコードのガスコストの値上げ、そして特に外部アカウントの読み込みオペレーションはガスコストを少なくとも500上昇させることで十分でしょう。
しかしすでに存在するコントラクトを避ける必要があります(例えば同時に実装するEP-90は十分)
そしてトランザクションが読み込む最大バイト数よりも低い上限となり、今回の攻撃の様な全ての潜在的攻撃に対して安全性を向上することができ、マークルプルーフのサイズの減少、その結果両クライアントのセキュリティをサイドエフェクトの様に改善する
スポンサーリンク
ビットコインやイーサリアムその他仮想通貨の情報はツイッター上で速報を出しています。
Follow @bokujyuumai Tweet
仮想通貨ランキング Tweets by bokujyuumai