DApps を操作する際、ユーザーは承認されたトークンの数の管理、署名の内容、および異常な承認状況の確認に注意を払う必要があります。
作者: リサ
## バックグラウンド
5月11日、Twitterユーザー「pineapple.eth」は、フィッシングWebサイト(syncswap[.]network)の誤クリックにより財布が盗まれ、100ドル以上を失ったとツイートした。
(
損失額は大きくありませんが、その中には大きなセキュリティリスクが潜んでいて、被害者は「見えない」という「目立たない」サインリスクにより、巨額の資産を失うケースが少なくありません。それがこの記事を書いた理由です。
被害者の説明によると、盗まれた取引は次のとおりです。
これら 2 つのトランザクションから、コントラクト呼び出し元 (0x00002…d0000) は、被害者のアドレス (0xA4089…82C3) で 34.87 USDC を (0x8256…D6B8) に転送し、81.36 USDC を (0x5A69… 1C17) に転送します。 transferFrom 関数だけを見ると、この関数の機能が、第三者が関連するデジタル資産を所有者のアカウントから受信者のアカウントに転送するトランザクションを開始できるようにすることであることがわかります。
次に、コントラクト呼び出し元のアドレス (0x00002...d0000) を分析し、被害者のトランザクション記録にはない追加の許可操作があることを発見します。許可の役割は何ですか?
公式の紹介によると、EIP-2612 で ERC20 プロトコルに許可が導入され、ユーザーは事前の許可なしに許可署名 (許可) を添付することでアプリケーション コントラクトを操作できるようになります。具体的には、ERC20 通貨のトランザクションでは、A が Approve 関数を呼び出して B を承認できること、つまり、A が指定したトークンを別のアカウントに操作することを承認できること、そして Approve を呼び出すにはこのアカウントの所有者である必要があることは誰もが知っています。関数。許可関数の機能は、A がチェーンの下で許可オブジェクトに事前に署名し、取得した署名を B に通知することです。B はこの署名を使用して許可を呼び出し、A の許可操作を実現できます (許可の転送には transferFrom を使用します)。 )、A はトランザクションを送信せずに指定されたトークンを転送でき、アカウントの所有者であるかどうかに関係なく、操作を承認するための許可を実行できます。さらに、Uniswap は新しいトークン認証標準 Permit2 をリリースしました。
以下は承認と許可の比較です。
関数 accept(address usr, uint wad) 外部戻り値 (bool)
{
手当[メッセージ送信者] [usr] = 札束;
…
}
関数許可(
アドレス保持者、アドレス使用者、
uint256 nonce、uint256 有効期限、ブール値許可、
uint8 v、bytes32 r、bytes32 s
) 外部の {
手当 [holder] [spender] = 札束;
基本を理解した後、フィッシング イベント自体に戻り、7 つのパラメーターを指定してこの許可関数を送信できます。
このうち、期限は 1714509304969、値は 116239404 です。これは、承認が 8 月 22 日 00:42 (GMT) 56300 まで、ほぼ無期限に有効であることを意味します。また、認可されたトークンの数は 116.239404 USDC で、これは被害者が盗んだ量と同じです。 v、r、sの値は、ユーザー(所有者)がフィッシングサイト上で署名した後の署名データであり、許可機能は署名データの正当性を検証します。署名検証に合格すると、ユーザーのトークンがハッカー (支出者) に認可されます。
全体のプロセスは非常に明確です: 被害者は署名に署名してフィッシング Web サイトに送信しましたが、チェーンにはアップロードしませんでした。署名情報を取得した後、ハッカーはチェーン上で許可を送信しました。つまり、承認の承認を呼び出しました。 。署名はガスを消費せずにオフチェーンで行われます。ただし、ここでガスがないことはガス消費がないことを意味するのではなく、署名者 (被害者) が認証と転送のためにガスを支払う必要がないことを明確にする必要があります。
疑いもなく、署名が盗まれている限り、認可は得られることになるため、認可フィッシングの承認と同様に、許可の方が認可フィッシングの承認よりも危険です。例えば、dex の指値注文機能では、ユーザーは特定のメッセージに署名するだけで、ガスを支払うことなく資産を dex に委託して処理することができますが、ユーザーの資産が失われる可能性があります。私たちが知る限り、一部のウォレットは承認認可フィッシングの署名情報をデコードして表示しますが、ウォレットには許可署名フィッシングに対する警告がほとんどなく、ユーザーは攻撃を受ける危険性が高くなります。同時に、許可署名はオフチェーンの動作であるため、ユーザーが自分の署名が漏洩したかどうかに気づくのは困難です。
現在、ハッカーのアドレスは MistTrack によって悪意のあるフィッシング アドレスとしてマークされています。
アドレス 1: 0x00002644e79602F056B03235106A9963826d0000
アドレス 2: 0x82563Ba592986Cb277d67B2E7c56ab3BB3FDD6B8
アドレス 3: 0x5A697967F0791d12db8A0f92344Abc6DD07a1C17
被害者のUSDCは両方ともETHに交換されました。
MistTrack を使用して ETH、WBTC、USDT、USDC、SHIB、DAI、WETH、DAI、stETH、APE を分析すると、アドレス 1 の現在の利益は約 120,000 米ドル、アドレス 2 の利益は約 200,000 米ドル、利益は住所 3 の価格は約 2,000 ドルです。さらに、Web3 詐欺対策プラットフォーム Scam Sniffer の分析によると、5 月 9 日の時点で、Permit2 に基づく悪意のある署名により、合計 300 人以上の被害者が約 69 万米ドルの資産を盗まれています。これまでのところ、イーサリアムメインネット上の約 670,000 のアドレスが Permit2 を承認しています。もちろん、このデータはこのギャングの全体像の氷山の一角にすぎません。
この記事では主に実際の盗難事件から始まり、許可証のサインの危険性について紹介します。 SlowMist セキュリティ チームは、出所不明の Web サイトを開いて勝手に操作しないように注意しています。DApps を操作するときは、契約に認可されたトークンの数の管理に注意し、署名内容を注意深く確認してください。RevokeCash などの認可ツールを定期的に使用してください。時間までに(異常な権限があるかどうかを確認し、Uniswap Permit2 の権限管理ツールを使用して確認できます。)異常な権限がある場合は、時間内に権限をキャンセルしてください。
参考リンク:
223328 投稿
188292 投稿
141424 投稿
78509 投稿
65440 投稿
61770 投稿
59908 投稿
56425 投稿
51810 投稿
50357 投稿
署名分析を許可する: オフチェーン署名もトークンをキャッチできますか?
作者: リサ
## バックグラウンド
5月11日、Twitterユーザー「pineapple.eth」は、フィッシングWebサイト(syncswap[.]network)の誤クリックにより財布が盗まれ、100ドル以上を失ったとツイートした。
(
損失額は大きくありませんが、その中には大きなセキュリティリスクが潜んでいて、被害者は「見えない」という「目立たない」サインリスクにより、巨額の資産を失うケースが少なくありません。それがこの記事を書いた理由です。
被害者の説明によると、盗まれた取引は次のとおりです。
(
これら 2 つのトランザクションから、コントラクト呼び出し元 (0x00002…d0000) は、被害者のアドレス (0xA4089…82C3) で 34.87 USDC を (0x8256…D6B8) に転送し、81.36 USDC を (0x5A69… 1C17) に転送します。 transferFrom 関数だけを見ると、この関数の機能が、第三者が関連するデジタル資産を所有者のアカウントから受信者のアカウントに転送するトランザクションを開始できるようにすることであることがわかります。
次に、コントラクト呼び出し元のアドレス (0x00002...d0000) を分析し、被害者のトランザクション記録にはない追加の許可操作があることを発見します。許可の役割は何ですか?
(
許可とは何ですか?
公式の紹介によると、EIP-2612 で ERC20 プロトコルに許可が導入され、ユーザーは事前の許可なしに許可署名 (許可) を添付することでアプリケーション コントラクトを操作できるようになります。具体的には、ERC20 通貨のトランザクションでは、A が Approve 関数を呼び出して B を承認できること、つまり、A が指定したトークンを別のアカウントに操作することを承認できること、そして Approve を呼び出すにはこのアカウントの所有者である必要があることは誰もが知っています。関数。許可関数の機能は、A がチェーンの下で許可オブジェクトに事前に署名し、取得した署名を B に通知することです。B はこの署名を使用して許可を呼び出し、A の許可操作を実現できます (許可の転送には transferFrom を使用します)。 )、A はトランザクションを送信せずに指定されたトークンを転送でき、アカウントの所有者であるかどうかに関係なく、操作を承認するための許可を実行できます。さらに、Uniswap は新しいトークン認証標準 Permit2 をリリースしました。
以下は承認と許可の比較です。
関数 accept(address usr, uint wad) 外部戻り値 (bool)
{
手当[メッセージ送信者] [usr] = 札束;
…
}
関数許可(
アドレス保持者、アドレス使用者、
uint256 nonce、uint256 有効期限、ブール値許可、
uint8 v、bytes32 r、bytes32 s
) 外部の {
…
手当 [holder] [spender] = 札束;
…
}
基本を理解した後、フィッシング イベント自体に戻り、7 つのパラメーターを指定してこの許可関数を送信できます。
このうち、期限は 1714509304969、値は 116239404 です。これは、承認が 8 月 22 日 00:42 (GMT) 56300 まで、ほぼ無期限に有効であることを意味します。また、認可されたトークンの数は 116.239404 USDC で、これは被害者が盗んだ量と同じです。 v、r、sの値は、ユーザー(所有者)がフィッシングサイト上で署名した後の署名データであり、許可機能は署名データの正当性を検証します。署名検証に合格すると、ユーザーのトークンがハッカー (支出者) に認可されます。
全体のプロセスは非常に明確です: 被害者は署名に署名してフィッシング Web サイトに送信しましたが、チェーンにはアップロードしませんでした。署名情報を取得した後、ハッカーはチェーン上で許可を送信しました。つまり、承認の承認を呼び出しました。 。署名はガスを消費せずにオフチェーンで行われます。ただし、ここでガスがないことはガス消費がないことを意味するのではなく、署名者 (被害者) が認証と転送のためにガスを支払う必要がないことを明確にする必要があります。
疑いもなく、署名が盗まれている限り、認可は得られることになるため、認可フィッシングの承認と同様に、許可の方が認可フィッシングの承認よりも危険です。例えば、dex の指値注文機能では、ユーザーは特定のメッセージに署名するだけで、ガスを支払うことなく資産を dex に委託して処理することができますが、ユーザーの資産が失われる可能性があります。私たちが知る限り、一部のウォレットは承認認可フィッシングの署名情報をデコードして表示しますが、ウォレットには許可署名フィッシングに対する警告がほとんどなく、ユーザーは攻撃を受ける危険性が高くなります。同時に、許可署名はオフチェーンの動作であるため、ユーザーが自分の署名が漏洩したかどうかに気づくのは困難です。
ミストトラック
現在、ハッカーのアドレスは MistTrack によって悪意のあるフィッシング アドレスとしてマークされています。
アドレス 1: 0x00002644e79602F056B03235106A9963826d0000
アドレス 2: 0x82563Ba592986Cb277d67B2E7c56ab3BB3FDD6B8
アドレス 3: 0x5A697967F0791d12db8A0f92344Abc6DD07a1C17
被害者のUSDCは両方ともETHに交換されました。
MistTrack を使用して ETH、WBTC、USDT、USDC、SHIB、DAI、WETH、DAI、stETH、APE を分析すると、アドレス 1 の現在の利益は約 120,000 米ドル、アドレス 2 の利益は約 200,000 米ドル、利益は住所 3 の価格は約 2,000 ドルです。さらに、Web3 詐欺対策プラットフォーム Scam Sniffer の分析によると、5 月 9 日の時点で、Permit2 に基づく悪意のある署名により、合計 300 人以上の被害者が約 69 万米ドルの資産を盗まれています。これまでのところ、イーサリアムメインネット上の約 670,000 のアドレスが Permit2 を承認しています。もちろん、このデータはこのギャングの全体像の氷山の一角にすぎません。
要約
この記事では主に実際の盗難事件から始まり、許可証のサインの危険性について紹介します。 SlowMist セキュリティ チームは、出所不明の Web サイトを開いて勝手に操作しないように注意しています。DApps を操作するときは、契約に認可されたトークンの数の管理に注意し、署名内容を注意深く確認してください。RevokeCash などの認可ツールを定期的に使用してください。時間までに(異常な権限があるかどうかを確認し、Uniswap Permit2 の権限管理ツールを使用して確認できます。)異常な権限がある場合は、時間内に権限をキャンセルしてください。