2024年1月26日、2つのDeFiプロトコル—SwapNetとAperture Finance—が連携攻撃の犠牲となり、合計1700万ドルの資金が流出しました。セキュリティ調査会社BlockSecの研究者は、Foresight Newsのためにこの事件を分析し、両方の侵害の根底にある共通かつ致命的な欠陥を明らかにしました。それは、スマートコントラクトにおける入力検証の不備です。## 脆弱性:弱い入力検証が扉を開くこの問題の根本原因は、被害者のコントラクトが受信する関数呼び出しを処理する際の安全策の不足にあります。この脆弱性により、攻撃者はコントラクトに対して任意の関数呼び出しを実行できるようになり、内部ロジックへの不正アクセスを獲得しました。攻撃者は、最初からカスタムの攻撃手法を構築するのではなく、より洗練されたアプローチを利用しました。それは、既にこれらのプロトコルに付与されているトークンの権限を武器にしたのです。## 既存のトークン承認が負債に変わる仕組みこの攻撃の仕組みは、DeFiの基本的なパターンであるトークン承認を悪用しました。ユーザーは通常、transferFrom関数を通じてスマートコントラクトにトークンの使用許可を与えます。これは、分散型取引所(DEX)の取引やイールドファーミングの標準的な手法です。このケースでは、攻撃者は入力検証の欠陥を利用して正規の取引を装い、transferFrom呼び出しをトリガーし、ユーザのウォレットやプロトコルのリザーブから直接トークンを流出させました。コントラクトは、実際に何がリクエストされているのかを適切に検証できず、これらの悪意のある転送を抵抗なく実行してしまったのです。## これがDeFiセキュリティに示す教訓この1700万ドルの流出事件は、コントラクト設計の構造的な見落としが壊滅的な損失につながることを浮き彫りにしています。入力検証—関数パラメータが正当であることを事前に確認すること—is、一般的には基本的なチェックリストの項目とみなされます。しかし、BlockSecの分析が示すように、経験豊富なプロトコルでさえ基本的な部分でつまずくことがあります。DeFiエコシステム全体にとっての教訓は明白です:堅牢な入力検証はオプションのセキュリティ対策ではなく、運用の安全性と完全な侵害の差を決定づける重要な境界防御なのです。--- *図1:脆弱性の概要*## 具体的な攻撃の流れ攻撃者はまず、トークンの承認を利用して、被害者のウォレットやプロトコルのリザーブから資金を引き出すための権限を獲得しました。次に、入力検証の不備を突いて、正規の取引を装いながら、transferFrom関数を呼び出し、資金を自分のアドレスに送金させました。これにより、被害者の資産が一瞬にして流出し、合計1700万ドルの損失となったのです。## 今後の対策と重要性この事件は、スマートコントラクトの設計において、入力検証の徹底がいかに重要かを改めて示しています。すべての関数呼び出しに対して、パラメータの正当性を厳格に検証し、不正な操作を未然に防ぐ仕組みを構築する必要があります。DeFiの安全性を高めるためには、基本的なセキュリティ原則を軽視せず、継続的な監査と改善を行うことが不可欠です。
$17 百万の損失がSwapNetとAperture Financeにおける重大な入力検証のギャップを明らかにする
2024年1月26日、2つのDeFiプロトコル—SwapNetとAperture Finance—が連携攻撃の犠牲となり、合計1700万ドルの資金が流出しました。セキュリティ調査会社BlockSecの研究者は、Foresight Newsのためにこの事件を分析し、両方の侵害の根底にある共通かつ致命的な欠陥を明らかにしました。それは、スマートコントラクトにおける入力検証の不備です。
脆弱性:弱い入力検証が扉を開く
この問題の根本原因は、被害者のコントラクトが受信する関数呼び出しを処理する際の安全策の不足にあります。この脆弱性により、攻撃者はコントラクトに対して任意の関数呼び出しを実行できるようになり、内部ロジックへの不正アクセスを獲得しました。攻撃者は、最初からカスタムの攻撃手法を構築するのではなく、より洗練されたアプローチを利用しました。それは、既にこれらのプロトコルに付与されているトークンの権限を武器にしたのです。
既存のトークン承認が負債に変わる仕組み
この攻撃の仕組みは、DeFiの基本的なパターンであるトークン承認を悪用しました。ユーザーは通常、transferFrom関数を通じてスマートコントラクトにトークンの使用許可を与えます。これは、分散型取引所(DEX)の取引やイールドファーミングの標準的な手法です。このケースでは、攻撃者は入力検証の欠陥を利用して正規の取引を装い、transferFrom呼び出しをトリガーし、ユーザのウォレットやプロトコルのリザーブから直接トークンを流出させました。コントラクトは、実際に何がリクエストされているのかを適切に検証できず、これらの悪意のある転送を抵抗なく実行してしまったのです。
これがDeFiセキュリティに示す教訓
この1700万ドルの流出事件は、コントラクト設計の構造的な見落としが壊滅的な損失につながることを浮き彫りにしています。入力検証—関数パラメータが正当であることを事前に確認すること—is、一般的には基本的なチェックリストの項目とみなされます。しかし、BlockSecの分析が示すように、経験豊富なプロトコルでさえ基本的な部分でつまずくことがあります。DeFiエコシステム全体にとっての教訓は明白です:堅牢な入力検証はオプションのセキュリティ対策ではなく、運用の安全性と完全な侵害の差を決定づける重要な境界防御なのです。
図1:脆弱性の概要
具体的な攻撃の流れ
攻撃者はまず、トークンの承認を利用して、被害者のウォレットやプロトコルのリザーブから資金を引き出すための権限を獲得しました。次に、入力検証の不備を突いて、正規の取引を装いながら、transferFrom関数を呼び出し、資金を自分のアドレスに送金させました。これにより、被害者の資産が一瞬にして流出し、合計1700万ドルの損失となったのです。
今後の対策と重要性
この事件は、スマートコントラクトの設計において、入力検証の徹底がいかに重要かを改めて示しています。すべての関数呼び出しに対して、パラメータの正当性を厳格に検証し、不正な操作を未然に防ぐ仕組みを構築する必要があります。DeFiの安全性を高めるためには、基本的なセキュリティ原則を軽視せず、継続的な監査と改善を行うことが不可欠です。