暗号通貨と分散型金融は共有制御と促進されたセキュリティの概念に基づいて構築されており、それらは集中的な権限を介した作業を回避してユーザーの身元を非公開にすることで安全な慣行を強制することでユーザー間での権限の分散に取り組んでいます。
しかし、多くの攻撃者らはこれらの基本概念を悪用して違法行為やサイバー詐欺を行っているのです。暗号通貨において他者への侵害やハッキング行為は非常に大きい懸念事項であり、ハッカーが他人への暗号通貨ウォレットから資金を横領したり送金を乗っ取って自分たちの方向に流用したりすることがよく見られています。
38億ドル相当の暗号通貨が2022年の1年間で盗まれており、それらは豚の屠殺詐欺ブリッジ攻撃、ラグプル、最新のサンドイッチ攻撃などによって引き起こされています。
この記事では現在最も危険なハッキングの1つでヴィタリック・ブテリン氏も危険視するDeFiのサンドイッチ攻撃について説明していきます。
重要なポイント
- “サンドイッチ攻撃”とは市場の動向や資産のバランスを自分たちの利益になるように操作するブロックチェーン詐欺を指します。
- サンドイッチ攻撃では保留中のトランザクションをフロントランニングすることでスリッページを引き起こした後に別のトランザクションをバックランニングして利益を得ます。
- DeFiのサンドイッチ詐欺ではAMMメカニズムを使用して市場と流動性プールのバランスをとるデックスが使用されています。
“サンドイッチ”とは何か?
暗号通貨におけるサンドイッチ攻撃では1つの取引を2つの悪意のある取引で囲むことでその取引の利益を奪うことを目的としています。
この攻撃は主にmempoolのブロックチェーンで保留中のトランザクションによく見られます。まず先に1つの購入を行ってその後に別の1つを購入してターゲットのトランザクションを間に挟む(サンドイッチ)した後にフロントランニングとバックランニングによって引き起こされます。
この攻撃の目的は分散型取引所やDeFiプラットフォームを通じた市場の操作であることから、サンドイッチ攻撃にはコードの侵害やブロックチェーンシステムへの侵入という意味ではハッキングには含まれず市場操作のみに依存しています。
まず、攻撃者 (フロントラン) が検証前に元のトランザクションと同じトークン/暗号通貨を購入します。これによってそのコインの価値が増加してターゲットが購入するトランザクションはより高い価格で処理されますが、その後に再度攻撃者 (バックラン) がそのトークンをより高い価格で販売することでその差額が利益として攻撃者の懐に入っていきます。
暗号通貨におけるサンドイッチ攻撃はどのようにして起こるのですか?
メモリプールはブロックチェーンの保留中のトランザクションリストとなりますが、これは基本的にガス代が十分に高くないなどの理由によって検証ノード (マイナー) がまだデータの取得および検証を行っていないことを表しています。
一部のユーザーは暗号通貨を購入する際のガス代を出来る限り安くすることに全力を尽くしていることから、メモリプールでトランザクションを取得することで手数料が下がった際のトランザクションの完了を心待ちにしています。
ただしメモリプールはパブリックに共有されていて誰でも保留リストを参照できることから、攻撃者はターゲットのトランザクションを特定する事でより高いトランザクションコストで新しいトランザクションをフロントランニングしてマイナーに最初に検証するよう促すことが出来るのです。
この行為によって購入価格が高くなって予想される執行価格の上昇に繋がることから、結果として予期せぬ事態が発生した際の取引がより高価になり、価格のスリッページによって被害者が受け取るコインが少なくなります。
その後、攻撃者はサンドイッチの2番目の層による新たな高値での売り注文のバックランニングによって利益を手にすることが出来ます。
サンドイッチ攻撃の背景にある財務上の考慮事項
このタイプの攻撃はフラッシュローン攻撃やラグプル攻撃とは異なり、無実の暗号通貨ユーザーを犠牲にターゲットにした一方的な攻撃者の金銭的利益を目的としています。
しかしこれらの取引の実行には多くのコストがかかるため、サンドイッチ攻撃を成功させるのは容易ではありません。市場操作によって起こるのはほんのわずかな価格変化であり、さらに攻撃者は2回目の購入に対する取引コストを支払う必要があります。
したがって、攻撃者は有益な侵害を成功させるかメモリプールを慎重に検索して適切なキャッチを見つける前にこのトリックを複数回繰り返さなければなりません。
DeFiのサンドイッチ攻撃の様々な種類
分散型取引所にはより多くのユーザーが集まるため、サンドイッチ攻撃はいつでも発生する可能性が高くその予測は非常に難しいです。プラットフォーム上に多数のユーザーが存在すると、以下の2つの方法によってDeFiのサンドイッチ攻撃が発生する場合があります。
流動性テイカーとテイカー
ここでは流動性テイカーがフロントランとバックランの金銭的利益に繋がる可能性のある多額の保留中のトランザクションを見つけて互いに攻撃し合います。
このサンドイッチ攻撃は自動マーケットメーカースタンダードにおける流動性プールの需要と供給のダイナミクスの変化に対処する作用を逆手に取って行われます。
後続のトランザクションは資産価格を操作して最初の購入プロセスを不利な立場に置くことを目的としていることから、最終的に受け取るコインやトークンが少なくなります。
しかしマイナーが最初に悪意のあるトランザクションを検出して被害者よりも先にそれを検証するという保証はないことから、それによってサンドイッチ攻撃が失敗することも十分にあり得るのです。
流動性プロバイダーとテイカー
もう1つのサンドイッチ攻撃は流動性プロバイダーが市場の流動性を変更する能力を利用して市場参加者を攻撃することで予期せぬスリッページ レートを引き起こします。
このアプローチは前者のサンドイッチ攻撃と同じ様に機能しますが、ここでの悪意のある攻撃者は流動性を操作しながらさらにもう1つのステップを実行します。
それはまず市場から流動性を取り除いてターゲットに予期せぬ価格のスリッページを引き起こすことで予想される約定価格との差異を引き起こします。
次にターゲットのトランザクションが完了して再び流動性を追加して元のユーザーの操作と逆のスワイプを行う前に、攻撃者は最初のプール残高に戻すことで生まれる価格差を手に入れるのです。
サンドイッチ攻撃を引き起こす市場ダイナミクス
サンドイッチ攻撃は主にUniswap and PancakeSwapのような需要と供給が変化した後の流動性プールの自動マーケットメーカー取引所が悪用されて引き起こされます。
市場でスリッページが起こらないとサンドイッチ攻撃の価値は無くなってしまうことから、市場ダイナミクスを利用したサンドイッチ攻撃が発生する可能性が非常に高いのです。
サンドイッチ攻撃を機能させるもう1つの要因は価格スリッページの側面であり、これは実際の約定価格が希望価格と異なる場合に発生します。
これは市場の流動性の劇的な変化や供給レベルの変化による資産残高の変動が起きた際に発生します。
暗号通貨で発生するサンドイッチ攻撃の避け方
残念ながらDeFiでサンドイッチ攻撃が発生する場合には、ターゲットの保留中のトランザクションを見つけて数秒以内に行われるためにそれを回避する方法はありません。さらに、血も涙もない詐欺師はサンドイッチ攻撃を継続して行う可能性があります。
ただし、低スリッページを保証するプラットフォームや最小限のスリッページ保険を提供するプラットフォームを介して取引するなどのいくつかの予防措置が行えます。これらのプラットフォームの多くはサンドイッチ攻撃の可能性を軽減するための特別なメカニズムを導入しています。
もう1つの予防措置としては、ノードを検証することで購入処理を迅速化するためにより高いトランザクションコストを支払うことです。
まとめ
分散型金融におけるサンドイッチ攻撃は市場のダイナミクスを利用して保留中のトランザクションを2つの悪意のあるトランザクションで囲むことで、市場の不均衡と予期せぬスリッページレートが発生してその差額を攻撃者は取得することができます。
DeFiのサンドイッチ攻撃ではターゲットの取引の為替レートを上昇させた後にそれを逆転させて経済的利益を得ることが目的であり、これらの攻撃は市場の流動性テイカー間や流動性プロバイダーからテイカー間で発生します。
このようなAMM詐欺は多数のユーザーが集まる分散型取引所のプラットフォームやプロトコルをターゲットにしていることから詐欺の被害者の数は増加傾向にあります。