イーサリアム・ジャパン

イーサリアムに対するトランザクションスパムアタック

Pocket

2016年9月19日 03:04:56にイーサリアムクライアントのGethノードがDDoS攻撃によりメモリーエラーを起こし停止、ブロック生成ができなくなりました。問題のブロックは2,283,416から起き、イーサリアムネットワークのハッシュレートは一時的に1.5TH/sまで下落を記録しました。

スポンサーリンク

1.DDoS攻撃の内容

イーサリアムネットワークはDEVCON2の開催中にDDoS攻撃を受け、一部のマイナーとノードはブロック生成時間に長時間割く必要がありました。原因はオペコードのEXTCODESIZEが極端にガスコストが低い点をつかれたためです。

オペコードについては下記を参照してください

OPCODEとは?

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は十分)

そしてトランザクションが読み込む最大バイト数よりも低い上限となり、今回の攻撃の様な全ての潜在的攻撃に対して安全性を向上することができ、マークルプルーフのサイズの減少、その結果両クライアントのセキュリティをサイドエフェクトの様に改善する







スポンサーリンク


ビットコインやイーサリアムその他仮想通貨の情報はツイッター上で速報を出しています。





仮想通貨ランキング

次へ 投稿

前へ 投稿

返信する

© 2018 イーサリアム・ジャパン

テーマの著者 Anders Norén