
編集者注: この記事は 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. 脆弱性分析の概要
上記の分析を通じて、慎重に構築された攻撃により、特定のユーザー資産が無期限に抵当に入れられ、償還できなくなります。軽減策を適用してコードにパッチを適用すると、この脆弱性を効果的に軽減して修正できます。