暗号化ハッキング対策ガイド:個人資産を守るための多様な手段
元のタイトル:《How To Never Get Rugged In Crypto Again》
著者:INSIGHTFUL
翻訳:深潮 TechFlow
免責事項
本ガイドは、いかなる内容も保証するものではなく、「暗号またはネットワークセキュリティの専門家」の視点から書かれたものではなく、複数の情報源と個人の経験に基づく継続的な学習の成果です。
例えば、私自身がこの分野に入ったばかりの頃、FOMO(取り残される恐怖)や貪欲から騙されたことがあり(偽ライブ詐欺や偽MEVボット詐欺)、そのために安全性を真剣に学び、設定し、理解する時間を費やしました。
すべてを失ったり、大量の資産を失ったりしてから安全性を学ぶことを余儀なくされる人にならないでください。
ハッキングかユーザーエラーか?
すべての種類のウォレット、トークン、またはNFTの「ハッキング」または妥協は、大まかに2つのカテゴリに分けられます:
- 以前に付与されたトークンの承認の悪用。
- プライベートキーまたはリカバリーフレーズの漏洩(通常はホットウォレットで発生)。
トークン承認
トークン承認は、実際にはスマートコントラクトがあなたのウォレット内の特定の種類または数量のトークンにアクセスし、移動することを許可する権限です。
例えば:
- OpenSeaにNFTを移動する権限を与え、販売できるようにする。
- Uniswapにあなたのトークンを使用して交換する権限を与える。
背景情報として、基本的にイーサリアムネットワーク上のすべては、ETHを除いてERC-20トークンです。
ERC-20トークンの特性の一つは、他のスマートコントラクトに承認権を付与できることです。
コアDeFiインタラクション(トークンの交換やブリッジなど)を行う場合、これらの承認はある時点で必要です。
NFTはそれぞれERC-721およびERC-1155トークンであり、承認メカニズムはERC-20に似ていますが、NFT市場に適用されます。
MetaMask (MM) の初期トークン承認プロンプトにはいくつかの情報が含まれており、最も関連性の高いものは:
- あなたが承認を与えているトークン
- あなたが相互作用しているウェブサイト
- あなたが相互作用しているスマートコントラクト
- トークンの権限数を編集する能力
詳細メニューの下に、追加情報として承認機能が表示されます。
すべてのERC-20トークンは、ERC-20標準で概説されている特定の特性と属性を持っている必要があります。
その一つは、スマートコントラクトが承認された数量に基づいてトークンを移動できる能力です。
これらの承認の危険性は、悪意のあるスマートコントラクトにトークンの権限を与えると、あなたの資産が盗まれたり消耗したりする可能性があることです。
無制限とカスタム制限の承認(ERC-20トークン)
多くのDeFiアプリは、デフォルトでERC-20トークンに無制限の承認を促します。
これは、ユーザーエクスペリエンスを向上させるために行われ、便利で、将来の追加承認の可能性を排除し、時間とガス代を節約します。
なぜこれが重要なのか?
無制限の数量のトークンに対する承認を許可すると、あなたの資金がリスクにさらされる可能性があります。
トークン承認を特定の数量に手動で設定することで、そのdAppが新しいより大きな承認を署名する前に移動できるトークンの最大数量を制限できます。
これにより、スマートコントラクトが悪用された場合のリスクを低減できます。もしあなたがあるdAppに無制限の承認を与え、そのdAppに脆弱性があった場合、あなたはその承認を与えたウォレットからすべての承認されたトークンを失う可能性があります。
例えば、Multichain WETH(WETHはETHのERC-20トークンラッピング)は、そのような脆弱性に遭遇したことがあります。
この一般的なブリッジは、以前の無制限トークン権限の悪用により攻撃され、ユーザーの資金が盗まれました。
以下は、デフォルトの無制限承認を手動承認に変更する方法を示す例(Zerionウォレットを使用)です。
NFT承認
「setApprovalForAll」はNFTに使用されます。
これは一般的ですが潜在的に危険な承認で、通常は信頼できるNFTマーケットプレイスにNFTを販売したいときに付与されます。
これにより、マーケットのスマートコントラクトがあなたのNFTを移転できるようになります。したがって、あなたがNFTを買い手に販売するとき、マーケットのスマートコントラクトは自動的にNFTを買い手に移動させることができます。
この承認は、特定のコレクションまたはコントラクトアドレスのすべてのNFTトークンへのアクセス権を付与します。
これも悪意のあるウェブサイトやコントラクトによってあなたのNFTを盗むために使用される可能性があります。
悪意のある行為者による「setApprovalForAll」の悪用の例
FOMO無料ミントの状況での古典的な「ウォレットアカウントの縮小」は次のようになります:
- ユーザーは、自分が合法だと思っている悪意のあるウェブサイトにアクセスします。
- ウェブサイトにウォレットを接続すると、ウェブサイトはウォレットの内容を確認できるだけです。
- しかし、悪意のあるウェブサイトは、ウォレット内の最も価値のあるNFTをスキャンし、ユーザーにMetaMask (MM)からそのNFTのコントラクトアドレスに対して「すべての承認を設定する」ように促します。
- ユーザーは自分がNFTをミントしていると思い込んでいますが、実際には悪意のあるコントラクトにこれらのトークンを移動する権限を与えているのです。
- その後、詐欺師はトークンを盗み、アイテムが盗まれたとマークされる前に、OpenSeaやBlurの入札に清算します。
サインと承認
承認にはガス代が必要です。なぜなら、それらは取引処理を伴うからです。
サインはガスを必要とせず、通常はdAppにログインするために使用され、あなたがそのウォレットを制御していることを証明します。
サインは通常低リスクの操作ですが、以前にOpenSeaのような信頼できるウェブサイトに与えた承認を悪用するために使用される可能性があります。
ERC-20トークンの場合、最近イーサリアムで導入された機能を使用して、ガスなしで承認を変更することもできます。
1inchのような分散型取引所(DEX)を使用すると、これを確認できます。
トークン承認の要点
承認を与える際は慎重に行動し、どのトークンをどのスマートコントラクトに承認しているのかを把握してください(etherscanを利用できます)。
承認リスクを制限するために:
- 複数のウォレットを使用する(承認はウォレット固有です)------保管庫や高価値ウォレットに対して承認を署名しないでください。
- 理想的には、ERC-20トークンに対する無制限の承認を減らすか、完全に避けてください。
- 定期的にetherscanやrevoke.cashを通じて承認を確認し、取り消してください。
ハードウェア/コールドウォレット
ホットウォレットは、あなたのコンピュータやスマートフォンをインターネットに接続し、キーやウォレットの資格情報がオンラインまたはローカルにブラウザに保存されます。
コールドウォレットはハードウェアデバイスであり、キーは完全にオフラインの状態で生成され、保存され、物理的にあなたの近くにあります。
Ledgerの価格が約$120であることを考えると、$1000以上の暗号資産を持っている場合は、Ledgerを購入して設定することをお勧めします。LedgerウォレットをMetaMask (MM)に接続することで、一定の安全性を保ちながら他のホットウォレットと同じ機能を享受できます。
LedgerとTrezorは最も人気のある選択肢です。私はLedgerがブラウザウォレット(RabbyやMMなど)との互換性が最も良いため、好んで使用しています。
Ledger購入時のベストプラクティス
常に公式製造元のウェブサイトから購入し、絶対にEbayやAmazonで購入しないでください------改ざんされている可能性があるか、悪意のあるソフトウェアがプリインストールされている可能性があります。
商品を受け取ったとき、包装が密封されていることを確認してください。
Ledgerを初めて設定すると、リカバリーフレーズが生成されます。
リカバリーフレーズは物理的な紙にのみ書き留めることができ、将来的には鋼板に書き留めることで、リカバリーフレーズが防火防水になるようにしてください。
リカバリーフレーズを撮影したり、いかなるキーボード(スマートフォンを含む)に入力したりしないでください------これによりリカバリーフレーズがデジタル化され、あなたのコールドウォレットは安全でないホットウォレットになります。
暗号資産はハードウェアウォレットに保存されるのではなく、「リカバリーフレーズによって生成されたウォレット内に」存在します。
リカバリーフレーズ(12-24語)はすべてのものであり、あらゆる手段を使って保護し、安全に保つ必要があります。
それは、そのリカバリーフレーズの下で生成されたすべてのウォレットへの完全な制御とアクセスを提供します。
リカバリーフレーズはデバイス固有ではなく、必要に応じて別のハードウェアウォレットに「インポート」することができます。
リカバリーフレーズを失ったり損傷したりし、元のハードウェアウォレットも失われたり損傷したりした場合、すべての資産へのアクセスを永久に失います。
リカバリーフレーズを保存する方法はいくつかあり、複数の部分に分けて物理的な距離を増やし、目立たない場所(例えば、冷蔵庫の底のスープ缶や、あなたの財産の地下など)に保管することができます。
少なくとも2-3部のコピーを持っておくべきで、そのうちの1部は鋼製で、防水と防火のためです。
「プライベートキー」はリカバリーフレーズに似ていますが、特定のウォレットにのみ関連しています。通常はホットウォレットを新しいMetaMask (MM)アカウントにインポートするためや、自動化ツール(取引ボットなど)で使用されます。
第25の単語 - Ledger
元の24語のリカバリーフレーズに加えて、Ledgerはオプションの追加セキュリティ機能を提供します。
パスフレーズは、高度な機能で、あなたが選択した最大100文字の第25の単語をリカバリーフレーズに追加できます。
パスフレーズを使用すると、24語のリカバリーフレーズだけではアクセスできない、まったく異なるアドレスのセットが生成されます。
セキュリティレイヤーを追加するだけでなく、パスフレーズはあなたが脅威にさらされたときに合理的な否認を提供します。
パスフレーズを使用する場合は、安全に保管するか、正確に記憶しておくことが重要です。文字ごとに区別し、大文字と小文字を区別してください。
これは「$5レンチ攻撃」のような身体的脅威に対する唯一の最終防御手段です。
なぜハードウェアウォレットを設定するためにこれほど多くの手間をかける必要があるのでしょうか?
ホットウォレットはプライベートキーをインターネットに接続された場所に保存します。
インターネットを通じてこれらの資格情報を漏洩させるために欺かれたり、誤導されたりするのは非常に簡単です。
コールドウォレットを持つことは、詐欺師が物理的にあなたのLedgerやリカバリーフレーズを見つけて取得しなければ、これらのウォレットやその内部資産にアクセスできないことを意味します。
リカバリーフレーズが漏洩すると、すべてのホットウォレットとその中の資産がリスクにさらされます。悪意のあるウェブサイトやコントラクトと相互作用していない資産も例外ではありません。
過去に人々が「ハッキング」された一般的な方法
過去に人々がホットウォレットを通じて「ハッキング」された(リカバリーフレーズの漏洩)一般的な方法には以下が含まれます:
- 悪意のあるソフトウェアをダウンロードするように騙される(例えば、仕事の機会のPDF、ベータ版ゲーム、Googleフォームでマクロを実行する、または合法的なウェブサイトやサービスを模倣する)。
- 悪意のあるコントラクトと相互作用する:模倣サイトでFOMOミントを行ったり、未知のエアドロップや受信したNFTコントラクトと相互作用したりする。
- キーやリカバリーフレーズを「カスタマーサポート」や関連プログラム/フォームに挿入または送信する。