EOS 住宅ローンの脆弱性の詳細を 1 つの記事で読む
星球君的朋友们
2018-06-26 12:07
本文约1048字,阅读全文需要约4分钟
セキュリティ意識をオンラインに高める時期が来ています。

編集者注: この記事は Digital Comet Technology からのものであり、許可を得て公開されています。

先日のEOSの脆弱性問題を受けて、この記事では全体の内容を振り返っていきますので、皆様もセキュリティ意識を高めていただきながら、あまりパニックにならず、セキュリティ問題を正しく捉えていただければ幸いです。

1. イベント概要

6月22日未明、EOS公式コミュニティは、EOSの脆弱性が発見され、脆弱性が修正されるまでユーザーが投票を約束したトークンを引き換えることができないというメッセージを発表した。その後、関連情報に従って脆弱性を検証し、脆弱性が存在することを確認しました。脆弱性が修正される前に、慎重に作成された攻撃により、特定のユーザー資産が無期限に抵当に入れられ、償還できなくなりました。

EOS が DPoS コンセンサス メカニズムを採用していることはわかっています。このメカニズムは、コミュニティ投票を通じて 21 のスーパー ノードを選出することで EOS ネットワークを維持し、EOS ネットワークにコンピューティング能力、帯域幅、ストレージのサポートを提供します。ユーザーは投票するために EOS を消費する必要はありませんが、EOS はロックされます。ユーザーはいつでも抵当EOSの償還を申請することができ、償還申請から72時間後にクレジットが到着し、同時に投票が差し引かれます。

この脆弱性は EOS の償還プロセス中に発生し、他のユーザーが償還ユーザーに EOS を抵当に入れると、システムは最初に償還ユーザーの償還プロセスで EOS を再度抵当に入れます。償還を申請した EOS がアカウントに到着するまでに 72 時間かかることはすでにわかっていますが、前述したように、慎重に構築された攻撃は、理論的には指定されたユーザーの資産を無期限に抵当に入れ、ユーザーに重大な損害を与えます。

2. 脆弱性攻撃プロセス

1. 攻撃を受けたユーザーは 0.0005 EOS を所有しており、償還手続き中であると仮定します。

2. この時点で、攻撃者は引き換えユーザーに 0.0001 EOS を抵当に入れます。

3. トランザクションが有効になった後、攻撃者の残高は変化していないことがわかり、償還中のユーザーが償還しようとしている 0.0001 EOS が再び抵当に入れられることになります。

3. 脆弱性の原則の分析

攻撃フローチャートの攻撃コマンドは次のとおりです。

cleos --wallet-url http://localhost:6666 --url http://mainnet.genereos.io:80 system delegatebw (attacker) (victim) "0.0001 EOS" "0.0000 EOS" --transfer

攻撃者はコマンド呼び出し時に --transfer パラメータを追加したため、モーゲージ関数 delegatebw が呼び出されたときに changbw 関数が呼び出され、この時点では transfer が true になります。

転送変数が true の場合、送信元アドレスは攻撃されたオブジェクトのアドレスになります。

次に、攻撃対象のデータが改ざんされ、EOSが再び抵当に入れられます。

4. 脆弱性軽減計画

上記の分析に基づいて、このペーパーでは、住宅ローンの脆弱性を軽減および修復するために、いくつかのビジネス ロジックを変更することを推奨します。

1. 移転パラメータが真であるか否かに関係なく、住宅ローン開始者の残高から直接差し引かれるべきです(償還プロセスはこの制限の対象ではありません)。

2. 該当するビジネスロジックを整理し、同様の抜け穴がないか確認します。

V. 脆弱性分析の概要

上記の分析を通じて、慎重に構築された攻撃により、特定のユーザー資産が無期限に抵当に入れられ、償還できなくなります。軽減策を適用してコードにパッチを適用すると、この脆弱性を効果的に軽減して修正できます。


星球君的朋友们
作者文库