サイン盗まれた? Uniswap Permit2 署名フィッシングに注意してください

**この記事は、Beosin 氏によって執筆されました。特別招待独立研究者、ほうれん草、ほうれん草です。 (twitter@wzxznl) Beosin 氏、セキュリティ研究者、Sivan 氏との共著投稿です。 *

ハッカー、これは Web3 エコシステムのすべての人を怖がらせる存在です。プロジェクト側にとって、世界中のハッカーがあなたを睨むかもしれないとき、コードのオープンソースの性質により、プロジェクト側は、間違ったコード行を書くことを恐れます。抜け穴を放置しておくと、一度セキュリティインシデントが発生すると、その影響に耐えることが難しくなります。

**個人の場合、自分が何をしているのか理解していないと、オンチェーンでのあらゆるやり取りや署名によって資産が盗まれる可能性があります。 ** したがって、セキュリティ問題は暗号化の世界において常に最も厄介な問題の 1 つであり、ブロックチェーンの特性により、資産が一度盗まれると回復する方法がほとんどないため、特に重要です。暗号化の世界におけるセキュリティの知識。

つい最近、**Beosin; の親友であるほうれん草が、過去 2 か月間活動していた新しいフィッシング手法を発見しました。署名が盗まれている限り、この手法は非常に隠蔽されており、防ぐのは困難です。この記事、Beosin、および独立研究者の Pincai は共同でこの特徴的なフィッシング手法に関する一般科学を実施し、すべての人にとってさらなる資産損失の回避に努めています。 **

以下はホウレンソウの個人的な経験の再話です:

## プロセス

最近、友人 (仮に Xiao;A; と呼びます) が、財布の中の資産が盗まれた後、ほうれん草を見つけました。通常の盗難方法とは異なり、Xiao;A; は秘密キーを公開せず、フィッシング Web サイトの契約にも関与しませんでした。ホウレンソウは資産盗難の捜査を開始した。

!【サイン盗まれた? Uniswap Permit2 署名フィッシングにご注意ください](https://img.gateio.im/social/moments-7f230462a9-038b1c54ab-dd1a6f-62a40f)

ブロックチェーン ブラウザでは、小さな ;A; ウォレットが盗まれました; USDT; が ;Transfer From; Token; を通じて転送されることがわかります。資金を転送するとき、実際には「Token」スマート コントラクトの「Transfer」関数が呼び出されます。 ;Transfer From; とは、第三者がアドレス内の ;Token; を別のアドレスに転送することを意味します。 **これは、ウォレットの秘密キーが漏洩したのではなく、盗まれた資産が別のアドレス、つまりトークンから転送されたことも意味します。

!【サイン盗まれた? Uniswap Permit2 署名フィッシングにご注意ください](https://img.gateio.im/social/moments-7f230462a9-f70470495e-dd1a6f-62a40f)

トランザクションの詳細をクエリすると、いくつかの重要な手がかりが見つかります。

末尾番号;f;d5;1;のアドレスは、small;A;の資産を末尾番号;a;0;c;8;のアドレスに転送します。

この操作は;Uniswap;の;Permit;2;コントラクトと対話します。

ここで疑問が生じます。;f;d5;1; で終わるアドレスはどのようにしてこのアセットの許可を得たのでしょうか?なぜ「Uniswap」と関係があるのでしょうか? !【サイン盗まれた? Uniswap Permit2 署名フィッシングにご注意ください](https://img.gateio.im/social/moments-7f230462a9-6f340f9560-dd1a6f-62a40f)

まず第一に、「Transfer From;」関数を正常に呼び出すためには、呼び出し元が「Token」クォータ権限、つまり「承認」を持っている必要があるという前提があります。一部の「Dapp」を使用する場合、資産の移転が含まれる場合、「Dapp」コントラクトが次の権利を有するように、最初に認可(承認)操作を実行する必要があります私たちの資産を譲渡します。

このパズルを解くには、引き続き掘り下げる必要があります。その答えは、;f;d5;1;, で終わるアドレスのやり取り記録にあります。このアドレスでは、;Transfer From;transfer small;A; Beforeアセットを参照すると、アドレスが「Permit」操作も実行していることがわかります。これら 2 つの操作の相互作用オブジェクトは、「Uniswap;」の「Permit;2」コントラクト、次にこの「Permit」関数と「Uniswap Permit」です。 ; 2; どういう状況ですか?

!【サイン盗まれた? Uniswap Permit2 署名フィッシングにご注意ください](https://img.gateio.im/social/moments-7f230462a9-e1a4e655fc-dd1a6f-62a40f)

Uniswap Permit;2; 契約は; Uniswap; 2022 年末に開始されました; 公式声明によると、これはトークン承認をさまざまなアプリケーションで共有および管理できるようにするトークン承認契約です。より統合され、コスト効率が高く、安全なユーザー エクスペリエンスを実現します。

そして将来的には、Permit; 2、Permit; 2; を統合するプロジェクトが増えるにつれて、すべてのアプリケーションで標準化できるようになり、トークン; 承認されました。 Permit;2 は、スマート コントラクトのセキュリティを強化しながら、トランザクション コストを削減することでユーザー エクスペリエンスを向上させます。

!【サイン盗まれた? Uniswap Permit2 署名フィッシングにご注意ください](https://img.gateio.im/social/moments-7f230462a9-1e0f8ad948-dd1a6f-62a40f)

まず、「Uniswap」が「Permit;2;」を起動したい理由を理解しましょう。特定の「Dex」で「Swap」したい場合、従来の対話方法は、許可(承認)する必要があるというシナリオを想定します。 「Dex」、そして「Swap」では、通常、「Gas」料金が 2 回かかり、ユーザーにとってはフリクションコストが高すぎる。誰もがそのような経験があると思います。 !【サイン盗まれた? Uniswap Permit2 署名フィッシングにご注意ください](https://img.gateio.im/social/moments-7f230462a9-aaf8898d3b-dd1a6f-62a40f)

画像出典:

「Permit; 2」の開始により、「Dapp」のエコロジー ゲーム ルール全体が変更される可能性があります。簡単に言うと、従来の方法では、アセット転送のために「Dapp」を操作するたびに認証が必要で、Permit; 2;このステップは省略できます。これにより、ユーザーの対話コストが効果的に削減され、より良いユーザー エクスペリエンスがもたらされます。

解決策は;Permit;2;ユーザーと;Dapp;の間の仲介者として、ユーザーは;Permit;2;契約に対する;Permit;2;契約の許可を承認するだけでよく、すべて統合されています;Permit;2;契約;Dapp; この承認された金額は共有できます。ユーザーにとっては、インタラクションコストが削減され、ユーザーエクスペリエンスが向上します。「Dapp」にとって、ユーザーエクスペリエンスの向上は、より多くのユーザーと資金をもたらします。これはwin-winの状況ですが、同時にこれは諸刃の剣でもあり、問題は ;Permit;2; の相互作用の方法にあります。

従来のインタラクション モードでは、承認であろうと資金移動であろうと、操作のユーザーにとってはチェーン上のインタラクションです。そして ;Permit;2; はユーザーの操作をオフチェーン署名に変換し、チェーン上のすべての操作は中間役割 (;Permit;2;契約と統合;Permit;2; プロジェクト パーティなど) によって完了します。 )、このスキームによってもたらされる利点は、チェーン上の対話の役割がユーザーから中間の役割に移されるため、ユーザーがウォレットに「ETH」を持っていない場合でも、他の「トークン」を使用して、 「ガス」料金を支払うか、中間役割によって全額返金されるかは、中間役割の選択によって異なります。 !【サイン盗まれた? Uniswap Permit2 署名フィッシングにご注意ください](https://img.gateio.im/social/moments-7f230462a9-2cd8736230-dd1a6f-62a40f)

画像出典:

「Permit;2」の登場は将来の「Dapp」ゲームのルールを変える可能性があるが、これは強力な両刃の剣であることが分かる。ユーザーにとって、オフチェーン署名はガードを解除する最も簡単な方法である。 、たとえば、ウォレットを使用して一部の「Dapp」にログインする場合、接続するには署名が必要ですが、ほとんどの人は署名の内容を注意深く確認せず、署名の内容を理解していません。一番怖い場所。

理解しました;許可;2;契約、小さな話に戻ります;A;イベント、資産が盗まれて相互作用する理由を理解しました;許可;2;契約、それからほうれん草にこれを再現させます;許可; 2.署名フィッシング手法、まず第一に重要な前提条件は、フィッシングされるウォレットが「Uniswap」に対して承認された「トークン」を持っている必要があることです。「Permit;2; ;Dapp; または ;Swap; on Uniswap;」、すべてが ;Permit; に対して承認されている必要があります。 2; 契約します (下の写真のほうれん草はセキュリティ プラグインを使用しています)。 !【サイン盗まれた? Uniswap Permit2 署名フィッシングにご注意ください](https://img.gateio.im/social/moments-7f230462a9-9b7f868543-dd1a6f-62a40f)

もう 1 つの恐ろしい点は、「スワップ」したい量に関係なく、Uniswap; の「Permit;2」コントラクトではデフォルトで「トークン」を許可できるが、「MetaMask」では入力を定義できることです。量ですが、ほとんどの人は最大値またはデフォルト値を直接クリックすると思います。デフォルト値の ;Permit;2; は無制限の量です。

!【サイン盗まれた? Uniswap Permit2 署名フィッシングにご注意ください](https://img.gateio.im/social/moments-7f230462a9-ffa3793098-dd1a6f-62a40f)

これは、「Uniswap」とやり取りし、2023 年以降に「Permit; 2」契約に金額を承認している限り、このフィッシング詐欺のリスクにさらされることも意味します。

;f;d5;1; で終わるアドレスの ;Permit;2; コントラクトと対話する ;Permit; 関数に焦点を当てているため、この関数は単純にウォレットを使用して ;Permit; 2; を許可します。契約の「トークン」は別のアドレスに転送されます。つまり、署名が得られる限り、ハッカーはあなたのウォレット内の「トークン」権限を取得し、あなたの資産を移すことができます。

イベントの詳細分析

許可; 機能:

!【サイン盗まれた? Uniswap Permit2 署名フィッシングにご注意ください](https://img.gateio.im/social/moments-7f230462a9-63071bf04a-dd1a6f-62a40f) 「Permit」機能は、オンラインで契約に署名する方法と考えることができます。この機能を使用すると、あなた (PermitSingle) が、将来のある時点で他の人 (支出者) があなたのトークンの一部を使用できるようにする「契約」に事前に署名することができます。

同時に、紙の契約書に署名するのと同じように、この「契約書」が本当にあなた自身によって署名されたものであることを証明する署名(サイン)も必要になります。

では、この機能はどのように機能するのでしょうか?

  1. まず、現在時刻が署名の有効期間 (sigDeadline) を超えているかどうかを確認します。署名した契約には有効期限があるのと同じように、現在時刻が有効期限を超えると、この「契約」は使用できなくなり、プログラムは直接停止します。
  2. 次に、あなたの署名が本当にあなたのものであるかどうかがチェックされます。プログラムは特別なメソッド (signature.verify) を使用して署名をチェックし、その署名が本当にユーザーによって署名されており、他人によって偽造されていないことを確認します。
  3. 最後に、チェックに合格すると、プログラムはレコードを更新して、他の人にトークンの一部の使用を許可したことを記録します。

主に ;verify; 関数と _updateApproval; 関数に焦点を当てます。

検証; 機能:

!【サイン盗まれた? Uniswap Permit2 署名フィッシングにご注意ください](https://img.gateio.im/social/moments-7f230462a9-3ee250fd3e-dd1a6f-62a40f)

verify; 関数は署名情報パラメーターから 3 つのデータ v、r、s; を取得し、v、r、s; はトランザクション署名の値であり、アドレスを復元するために使用できることがわかります。上の図に示すように、トランザクション署名のコードからわかるように、コントラクトがトランザクション署名のアドレスを復元した後、それを受信トークン所有者のアドレスと比較し、それらが同じであれば検証に合格します。 _updateApproval; 関数の呼び出しは続行されます。これらが異なる場合、トランザクションはロールバックされます。

_updateApproval; 機能:

!【サイン盗まれた? Uniswap Permit2 署名フィッシングに注意してください](https://img.gateio.im/social/moments-7f230462a9-8d0a677dda-dd1a6f-62a40f)署名が盗まれましたか? Uniswap Permit2 署名フィッシングにご注意ください

署名の検証に合格すると、_updateApproval; 関数が呼び出されて認証値が更新されます。これは、アクセス許可が転送されたことを意味します。このとき、以下のコードのように;transferfrom;関数を呼び出して、認可後にトークンを指定アドレスに転送すると便利です。

!【サイン盗まれた? Uniswap Permit2 署名フィッシングに注意してください](https://img.gateio.im/social/moments-7f230462a9-e0bae3f39f-dd1a6f-62a40f)署名が盗まれましたか? Uniswap Permit2 署名フィッシングにご注意ください

「許可」機能について説明した後、チェーン上の実際のトランザクションを見てみましょう。この対話の詳細を確認できます。

所有者;小さい;A;のウォレットアドレス(末尾番号;308;a)

詳細: 承認されたトークン、契約アドレス (USDT) および金額およびその他の情報を確認できます。

Spender; は末尾番号;f;d5;1; を持つハッカーのアドレスです。

sigDeadline; は署名の有効時刻、;signature; は small;A; の署名情報です。

!【サイン盗まれた? Uniswap Permit2 署名フィッシングにご注意ください](https://img.gateio.im/social/moments-7f230462a9-0fe8c4f796-dd1a6f-62a40f)

そして、xiao;A; のインタラクション記録を振り返ると、**xiao;A; は以前に「Uniswap」を使用し、ほぼ無制限であるデフォルトの承認額をクリックしたことがわかります。 **

!【サイン盗まれた? Uniswap Permit2 署名フィッシングにご注意ください](https://img.gateio.im/social/moments-7f230462a9-b2bb67f992-dd1a6f-62a40f)

簡単なおさらいとしては、が小さい; A; 以前「Uniswap」を使用する過程で「Uniswap Permit」を許可された; 2; 無制限; USDT; 金額は小さいが; A; ウォレット操作を実行する際に誤って に陥る; ということです。 Permit;2;signature フィッシング トラップはハッカーによって設計され、ハッカーは small;A; の署名を取得し、その;Permit;2;contract;Permit;and;Transfer From; の 2 つの操作で small;A; の署名を使用しました。小さな;A; の資産は離れています。そしてほうれん草が観察したことは、「Uniswap; の;Permit;2;契約がほんの数か月前に有効になったばかりであるということです。」

!【サイン盗まれた? Uniswap Permit2 署名フィッシングにご注意ください](https://img.gateio.im/social/moments-7f230462a9-7f888a69c7-dd1a6f-62a40f)

ソース:

そして、やり取りの記録では、そのほとんどがフィッシング アドレス (Fake_Phishing) としてマークされており、人々は常に騙されていることがわかります。

!【サイン盗まれた? Uniswap Permit2 署名フィッシングにご注意ください](https://img.gateio.im/social/moments-7f230462a9-cda4078c48-dd1a6f-62a40f)

ソース:;

どうやって防ぐのか?

今後「Uniswap Permit; 2;」契約がさらに普及し、認可や共有のためのプロジェクト統合「Permit; 2;」契約が増える可能性を考慮すると、効果的な防止方法は以下のように考えられます。

1 署名の内容を理解して認識する:

Permit; の署名形式には通常、所有者、支出者、値、ノンス、および形式が含まれます。 (セキュリティプラグインをダウンロードすることをお勧めします)

!【サイン盗まれた? Uniswap Permit2 署名フィッシングにご注意ください](https://img.gateio.im/social/moments-7f230462a9-a97994563c-dd1a6f-62a40f)

すべての読者と友人に次の「Beosin」フィッシング対策プラグインをお勧めします。これは、Web3 分野のほとんどのフィッシング Web サイトを識別し、全員の財布と資産のセキュリティを保護します。

!【サイン盗まれた? Uniswap Permit2 署名フィッシングにご注意ください](https://img.gateio.im/social/moments-7f230462a9-3d767d0921-dd1a6f-62a40f)

フィッシング対策プラグインのダウンロード:

2 アセット ウォレットとインタラクティブ ウォレットは別々に使用されます。

大量の資産をお持ちの場合は、すべての資産をコールド ウォレットに保管し、少量の資金をチェーン上のインタラクティブ ウォレットに保管することをお勧めします。これにより、フィッシング詐欺の場合の損失を大幅に軽減できます。

3 あまりにも多くの量を認可しないでください;許可;2;契約または認可をキャンセルします:

「Uniswap」で「Swap」する場合、やり取りしたい金額だけを承認するため、各やり取りには再承認が必要となり、ある程度のやり取りコストは発生しますが、「Permit;2; Sign」に悩まされることは避けられます。釣り。クォータをすでに承認している場合は、対応するセキュリティ プラグインを見つけて承認をキャンセルできます。

**4 トークンの性質、サポート、許可、機能: ** を特定します。

将来的には、この拡張プロトコルを使用して「許可」機能を実現する「ERC;20」トークンが増える可能性があります。保有しているトークンがこの機能をサポートしているかどうかに注意する必要があります。トークン トランザクションや操作には特に注意し、未知の署名が「許可」関数の署名であるかどうかを厳密にチェックしてください。

5 騙された後に他のプラットフォームにトークンが保存されている場合は、包括的な救済計画を策定する必要があります。

ハッカーによって詐欺に遭い、トークンが流出したことがわかったものの、プレッジなどの方法で他のプラットフォームにトークンが保存されている場合は、トークンを引き出して安全なアドレスに転送する必要があります。今度は、ハッカーが常にあなたを監視している可能性があることを知っておく必要があります。アドレスのトークン残高は、ハッカーがあなたの署名を持っているため、盗まれたアドレスにトークンが表示されている限り、ハッカーはそれを直接転送できます。このとき、完全なトークン救済プロセスを策定する必要があります。トークンの抽出とトークンの転送の 2 つのプロセスを同時に実行する必要があります。そこにハッカーのトランザクションを挿入することはできません。ブロックチェーンを必要とする「MEV」転送を使用できます。知識とコード スキル、トランザクション プリエンプティブ スクリプトを使用して達成する Beosin チームなどの専門のセキュリティ会社を探すこともできます。

今後、「Permit; 2; **」に基づくフィッシングがますます増加すると考えられています。この代表的なフィッシング手法は非常に隠蔽されており、防ぐのが困難であり、「Permit; 2;」の適用範囲が広がることで、その下にアドレスがどんどん増えていきますので、この記事を読んで、より多くの人に情報を広めて、より多くの人が盗まれないようにしていただければ幸いです。 **

### 参照:

原文表示
内容は参考用であり、勧誘やオファーではありません。 投資、税務、または法律に関するアドバイスは提供されません。 リスク開示の詳細については、免責事項 を参照してください。
  • 報酬
  • コメント
  • 共有
コメント
0/400
コメントなし
  • ピン
いつでもどこでも暗号資産取引
qrCode
スキャンしてGate.ioアプリをダウンロード
コミュニティ
日本語
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)