原作者:コボ・グローバル
Cobo セキュリティ チームは、ユーザーが取引プロセス中のリスクを回避し、資金の安全を確保し、フィッシング攻撃を防止できるようにすることを目的として、チェーン上の取引プロセスにおける一般的なリスク ポイントをまとめ、トランザクション セキュリティ実行ガイドラインをまとめました。
序文
ビットコインETFの通過により、ブロックチェーン市場は上向き始めています。通貨価格の回復により、業界は徐々に以前の繁栄を取り戻しつつあります。同時にハッカーの活動も活発化した。 Cobo セキュリティ チームは、過去 1 ~ 2 か月でフィッシング事件の頻度が増加していることを観察しました。
最近では、Resaking や BTC L2 などの新しいアプリケーション ホットスポットが出現し始めており、オンチェーン トランザクションは徐々に Web3 ユーザーの日常生活に不可欠な部分となり、ますます多くのユーザー資金がチェーンに送金されています。
取引所などの集中型アプリケーションとは異なり、オンチェーン アプリケーションのアカウント セキュリティはユーザー自身が確保する必要があります。ブロックチェーン トランザクションを安全に実行することは、Web3 ネイティブの最も基本的な機能です。ブラウザのプラグイン ウォレットやブラウザ自体などの多くのインフラストラクチャには、フィッシングに対する特定のリスク警告がありますが、安全でないトランザクションによってユーザーが資産を失う事件は依然として時折発生します (秘密キーの漏洩、署名フィッシングなど)。 。
Cobo セキュリティ チームは、ユーザーが取引プロセス中のリスクを回避し、資金の安全を確保し、フィッシング攻撃を防止できるようにすることを目的として、チェーン上の取引プロセスにおける一般的なリスク ポイントをまとめ、トランザクション セキュリティ実行ガイドラインをまとめました。
導入を開始する前に、Cobo セキュリティ チームは、誰にとっても安全なトランザクションの中核となる原則を次のように要約しています。
1. やみくもに署名することを拒否し、理解できないトランザクションやメッセージに署名しないでください。
2. わざわざ繰り返し検証する。
安全に取引する方法
完全な DApp トランザクション プロセスには、複数のリンクが含まれています。ウォレットのインストール、DApp へのアクセス、ウォレット接続、メッセージ署名、トランザクション署名、およびトランザクション後の処理。各リンクには安全上のリスクが伴いますので、実際の運用における注意点を以下に紹介します。
注: この記事では主に、イーサリアムとさまざまな EVM 互換チェーン上の安全な対話プロセスを紹介します。他の非 EVM チェーンで使用されるツールや具体的な技術詳細は異なる場合があります。
ウォレットのインストール
DApps の現在の主流の使用法は、ブラウザーのプラグイン ウォレットを使用して対話することです。 EVM チェーンで使用される主流のウォレットには、Metamask と Rabby が含まれます。
深い経験を積んだ後、Cobo セキュリティ チームは、リスク警告に基づいて、メインのオンチェーン インタラクティブ ウォレットとして Rabby プラグイン ウォレットを使用することを推奨します。その理由は、Rabby ウォレットはメタマスクウォレットと比較して、トランザクションデータ分析、トランザクションシミュレーション実行、トランザクションリスク警告、認可クエリ、署名履歴データクエリなどの機能を提供しており、フィッシング対策においてメタマスクウォレットよりも優れているためです。
Chrome プラグイン ウォレットをインストールするには、Chrome App Store からダウンロードしてインストールされていることを確認する必要があります。バックドア付きのウォレット ソフトウェアのインストールを避けるために、サードパーティの Web サイトからウォレットをインストールしないでください。
資格のあるユーザーは、ハードウェア ウォレットを相互に組み合わせて使用することをお勧めします。これにより、秘密キー ストレージの全体的なセキュリティが大幅に向上します。
DApp にアクセス
Web フィッシングは、Web3 攻撃における一般的な攻撃方法です。典型的なケースは、エアドロップの名でユーザーをフィッシング DApp アプリケーションにアクセスするように誘導することです。ユーザーがウォレットに接続した後、トークン認証、転送トランザクション、またはトークン認証署名に署名するように誘導されます。となり、ユーザー資産に損失が生じます。
したがって、ユーザーは Web フィッシングの罠に入らないように、DApps にアクセスするときは常に警戒する必要があります。
DApp にアクセスする前に、DApp URL が正しいことを確認する必要があります。提案:
Google の最初の検索キーワードから直接アクセスしないようにしてください。フィッシング攻撃者は、広告スペースを購入してフィッシング サイトの検索ランキングを上位に表示することができるため、最初のキーワードが公式 Web サイトであるとは限りません。
x.com や、各種ソーシャル ソフトウェアで他のユーザーのコメントやメッセージに公開されている URL は、フィッシング リンクである可能性があるため、直接クリックしないでください。
DAppのURLが正しいかどうかは、DefiLlamaなどのDAppマーケットやプロジェクト当事者の公式Xアカウント、Googleの検索結果などから、アクセスする前に繰り返し確認してください。
安全であることが確認されたWebサイトはブラウザのお気に入りに追加され、後からお気に入りから直接アクセスすることができます。
DApp Web ページを開いた後、アドレス バーでセキュリティ チェックを実行する必要もあります。
ドメイン名とURLを確認してください。通常、DApps は比較的簡潔なドメイン名と URL を使用します。 https://app.uniswap.org/ など。特に長いドメイン名が見つかった場合は、https://zk-polyhedra.network-8jb.xyz/ の形式、または類似のドメイン名である可能性があります。 https://puffer.fi (余分な f に注意) などの有名な Web サイトの名前を使用した場合は、フィッシング Web サイトである可能性が高いため、すぐにログアウトする必要があります。ドメイン名を識別するときは、1 il、oO 0、およびその他の同様の文字に特別な注意を払う必要があります。
ブラウザの https リンクのステータスを確認します。現在、主流の DApps はすべて https リンクを使用しており、ブラウザーには 🔒 の形の記号が表示されます。 https リンクではない場合、またはブラウザーに証明書の例外が表示される場合は、アクセスしている Web サイトが公式 Web サイトではないか、ハイジャック攻撃の対象になっている可能性があるため、直ちにアクセスを中止する必要があります。
現在、市場で主流のブラウザプラグインウォレットには、メタマスク/ファントムなどの特定のリスク警告機能が統合されています。ブラックリストに載っている危険な URL にアクセスすると、ブラウザのプラグイン ウォレットや Chrome ブラウザ自体で強力なセキュリティ プロンプトが表示される場合があります (下の図を参照)。
ウォレットを接続する
DApp に入った後、ウォレットへの接続操作は自動的に、または積極的に「接続」をクリックした後にトリガーされる場合があります。プラグインウォレットは現在のDAppに対していくつかのチェックや情報表示などを行います。
以下は、Rabby Wallet が提供する Web レビュー情報であり、DApp の信頼性を判断するのに役立ちます。
ウォレットに接続した後、ユーザーが他の操作を行っていない場合、通常、DApp はプラグイン ウォレットをアクティブにアクティブ化しません。 Web サイトにログインした後、DApp が頻繁にウォレットを呼び出して署名付きメッセージやトランザクションを要求し、署名を拒否した後も署名がポップアップし続ける場合は、フィッシング Web サイトである可能性が高く、次の方法で対処する必要があります。注意。
メッセージの署名
たとえば、極端な場合には、攻撃者がプロトコルの公式 Web サイトを攻撃したり、フロントエンド ハイジャックなどの攻撃を通じてページ コンテンツを置き換えたりします。このシナリオでは、一般のユーザーが Web サイトのセキュリティを検査することは困難です。
現時点では、プラグインウォレットの署名は、ユーザーが自分の資産を保存するための最後の障壁となります。悪意のある署名が拒否される限り、あなた自身の資産は損失から保護されます。ユーザーは、メッセージやトランザクションに署名するときに署名の内容を注意深く確認し、ブラインド署名を拒否する必要があります。
技術的に言えば、イーサリアムには現在 3 つの一般的な署名タイプがあります。
ハッシュ署名 eth_sign:一部のデータの元のハッシュに署名します。ハッシュの生データは、メッセージまたはイーサリアム トランザクションである可能性があります。
メッセージ署名personal_sign:データのプレーン テキストへの署名は、ユーザーのログイン検証またはライセンス契約の確認時に最も一般的です。
構造化データ署名 eth_signTypedData (EIP-712):DeFiプロトコルで使用されるデータオブジェクトの署名の場合、一般的なものにはERC 20 Permit認可署名、NFT保留注文署名などが含まれます。
メッセージ署名のリスクを特定するには、ユーザーは次のガイドラインに従うことができます。
自然言語署名は通常は合格します。このタイプの署名は通常、ログインの確認や製品の説明の確認に使用されるpersonal_signで、(数字や16進数などではなく) 大きな自然言語の説明です。このようなメッセージには自然言語、複雑な文字列、および困難なスマート コントラクト処理が含まれるため、通常はオンチェーン認証には使用されませんが、Web サイトでアドレスの同一性を確認するために使用されます。したがって、相対的なリスクは低いです。
元の 16 進ハッシュに直接署名することは禁止されています。このタイプの署名は通常 eth_sign 署名ですが、ユーザーはハッシュの元のデータ内容を判断できないため、このタイプの署名は最も危険です。したがって、ほとんどのウォレットでは、生のハッシュ (16 進数データ) に署名する機能が無効になっています。メタマスク ウォレットの場合は、[設定] -> [詳細] -> [Eth_sign Request] タブでその構成がオフになっていることを確認できます。 Rabby ウォレット、関連構成はデフォルトで無効になっており、追加の構成は必要ありません。
構造化データ署名は署名の内容を精査します。たとえば、ERC 20 Permit 承認署名の場合は、支出者のアドレスが期待を満たしているかどうかを確認する必要がありますが、EOA アドレスの場合は、フィッシング署名をクリックした可能性が高いため、直ちに拒否する必要があります。
メッセージ署名に関しては、ここでさらに注意を払う必要があります。eth_sign 操作はブラウザのプラグイン ウォレットではデフォルトで禁止されていますが、ウォレットは依然としてpersonal_sign を介してハッシュ クラス データに署名できます。このタイプの署名は、取引を承認または開始する許可を与えるものではありません。ただし、個々のプロトコル (一部の AA ウォレットなど) は依然として認証にpersonal_sign 署名を使用する場合があります。原則として、損失を避けるために、16 進数データには署名しないでください。このタイプの署名の効果は次のとおりです。
トランザクション署名
署名トランザクションは、やみくもに署名しないという原則に従う必要があります。。現在、多くのプラグイン ウォレットは、署名されるメッセージをデコードし、関連するコンテンツを表示します。以下は、DEX トランザクションを解析する Rabby ウォレットの例です。
ユーザーは、トランザクションのターゲットアドレスに関するいくつかの関連情報を表示できます。EOA アドレス、アドレスバランス、契約展開時間など。ユーザーはこの情報を基に、署名される取引のリスク判断を行うことができます。たとえば、インタラクティブ アドレスが EOA アドレスである場合、またはインタラクティブ コントラクトの展開時間が 7 日未満である場合、操作は危険であると考えられるため、続行する前に十分に調査する必要があります。
オープンソースプロトコルの場合、主流のブラウザプラグインウォレットはすでにトランザクションデータの分析をサポートしており、ABIデコード後にトランザクションの内容を表示することで、現在どのような操作が実行されているかをより明確に理解できます。コントラクトによって呼び出される関数名は、承認、スワップ、転送、入金および引き出しなど、その関数への参照を提供できます。
imToken ウォレット Rabby には模擬実行機能も統合されており、ユーザーはトランザクションが確定する前にトランザクション実行結果を直接確認することができ、トランザクション模擬実行を通じて、ユーザーは現在のトランザクションによって引き起こされたさまざまな資金移動を確認できます。ユーザーは注意深く確認し、期待される実行結果を満たさない署名を拒否する必要があります。
特定の技術的予備力を持つユーザーの場合、自動ツールがトランザクションを正常に解析できない場合は、いくつかの一般的な手動検査方法も使用できます。
インタラクティブなターゲットコントラクトアドレスをレビューのためにetherscanなどのブロックチェーンブラウザにコピーすることで、レビューには主にコントラクトがオープンソースかどうか、最近大量のトランザクションがあったかどうか、そしてEtherscanがそのアドレスを公式または悪意のあるアドレスとしてラベル付けしたかどうかが含まれます。 。
プラグイン ウォレットで認識できないトランザクションが発生した場合は、元のトランザクション データ (raw_data、16 進データで表示) の最初の 8 桁を https://openchain.xyz/signatures に手動でコピーして、クエリを実行して取得できます。元の関数 トランザクションの動作を大まかに決定する名前。
Phalcon、Tenderly、Dedaub などの取引シミュレーション ツールを使用して実行をシミュレートし、トランザクションの特定の実行詳細を表示します。
取引後の処理
フィッシングページや悪意のある署名を回避できたからといって、すべてがうまくいくわけではなく、取引後もリスク管理を行う必要があります。
トランザクション後は、トランザクションのオンチェーン ステータスをすぐにチェックして、署名時に予期されたステータスと一致しているかどうかを確認する必要があります。異常が発見された場合には、資産移管やオーソリゼーション取消などのストップロスオペレーションをタイムリーに実行できます。
ERC 20 承認権限管理も非常に重要です。場合によっては、ユーザーが特定のコントラクトのトークンを承認した後、何年も経ってからこれらのコントラクトが攻撃され、攻撃者は攻撃されたコントラクトのトークン承認クォータを使用してユーザーの資金を盗みました。
このような状況を回避するために、Cobo セキュリティ チームはユーザーが次のリスク防止基準に従うことを推奨しています。
権限を最小限に抑えます。トークンを承認するときは、トランザクションのニーズに基づいて、限られた量の対応するトークンを承認する必要があります。トランザクションに 100 USDT の承認が必要な場合、デフォルトの無制限の承認は使用されず、承認数量は 100 USDT に制限されます。
不要なトークン認可を速やかに取り消します。RabbyウォレットのApproval機能を通じて該当アドレスの認可状況を問い合わせるか、revoke.cashにログインし、長期間やり取りがなかったプロトコルの認可を取り消し、その後のプロトコルの抜け穴による被害を防止します。ユーザーの承認制限の使用による資産の損失。
その他のヒント
上記の取引プロセスにおけるリスクに加えて、一部のリスクは、特定のツールに統合されている機能を合理的に使用することによって回避できます。
一部のウォレットには、ウォレットのインポート機能が組み込まれています (Rabby など)。フィッシングのリスクは、他のモバイルウォレットのアドレスをインポートし、取引時に必須の二次確認を実行することで軽減できます(ウォレットを起動し、コードをスキャンし、確認のためにパスワードを入力する必要があります)。同時に、モバイルウォレットのトランザクションセキュリティチェック(ホワイトリスト、模擬実行、フィッシングヒントなど)をお楽しみいただけます。
一部のウォレットはインポートされたオブザーバー ウォレット (Rabby、OneKey、TokenPocket、imToken など) をサポートしており、オブザーバー ウォレットを通じて見慣れない Web サイトにアクセスすることができます。メッセージ署名またはトランザクション開始のページは通常どおり呼び出され、この時点で署名される内容を注意深く確認できます。同時に秘密鍵がないため、誤操作確認の心配もありません。
Rabby ウォレットの承認機能を通じてアドレスの承認ステータスを確認し、リスクの高い承認を適時に取り消します。ヒント: Rabby は、この関数で複数のディメンション (過去の認可リンクの総量/24 時間以内のキャンセル数/認可時間/認可されたアセットの数) を使用して認可リスクを評価し、ユーザーが認可リスクをより効果的に特定できるようにします。
誤って署名した場合は、Rabby ウォレットの署名記録機能を使用して、署名されたトランザクションとテキスト データをすぐに確認し、承認リスクをタイムリーにトラブルシューティングします。
リスク認識と適切なリスク予防があれば、極端な状況で資本への損害の程度を軽減するには効果的な資本分離が依然として必要です。 Cobo セキュリティ チームは、資金を保管するために次のソリューションを使用することをお勧めします。
多額の資金を保管するには、Gnosis Safe マルチシグネチャ ウォレットまたはコールド ウォレットを使用します。
ブラウザウォレットまたは他のEOAウォレットによって生成されたアドレスを使用して、ユーザーとの対話用の小額資金を保管し、ホットウォレットのアドレスを定期的に変更します。
誤ってフィッシングに遭った場合は、すぐに次の操作を実行して損失を軽減できます。
Revoke.cash は直ちに承認を取り消します。
フィッシング許可メッセージが署名されているのに資金が転送されない場合は、すぐに新しいメッセージに署名し、フィッシング メッセージの nonce を無効にする許可呼び出しを開始します。
必要に応じて口座資金を送金します。
エアドロップを安全に受け取る方法
エアドロップの発行は現在、プロジェクト関係者がユーザーを引き付けるために使用する一般的な方法であり、ユーザーにとってフィッシング攻撃の最も大きな被害を受ける領域でもあります。この目的を達成するために、上記の安全なトランザクション ガイドラインに基づいて、Cobo セキュリティ チームはオンチェーン エアドロップを受信するための一連の安全な対話プロセスをまとめました。
まず、Rabby オブザーバー ウォレットを使用して対話プロセスをテストし、トークン認証またはトークン転送トランザクションがないことを確認します。
許可メッセージの署名は、エアドロップの受信プロセス中には実行されません。契約承認の呼び出しは行われません。
エアドロップを受け取るには「小規模アカウント」を使用してみてください。
エアドロップトランザクションのシミュレーション実行結果を確認し、トークンが転送されていないことを確認します。
プラグインツールの選択
ブロックチェーンのセキュリティ コードには多くの内容が含まれており、すべてのやり取りを注意深くチェックできるわけではない可能性があります。そこで、リスクの判断に役立つ便利なブラウザ プラグインはあるでしょうか?
Cobo セキュリティ チームは、市場で主流のトランザクション リスク チェック プラグインを経験し、次のことから学びました。「フィッシングWebページの傍受」「悪意のある許可アドレスチェック」「オープンソースかどうか」3 つのディメンションは表にまとめられており、次のように、独自の状況に応じて使用することを選択できます。