ウォレットの盗難事件を振り返り、Web3.0 で資産セキュリティを実現する方法について話し合いますか?
出典: アルファウサギの研究ノート
出典: アルファウサギの研究ノート
イベント
イベント
2022 年の元旦休暇のある朝、Little C はコードを作成し、Web3js のオンチェーン コントラクト トランザクションのテストを続ける準備をしていました。突然、私のテストアカウント (Bsc チェーン) が MetaMask でゼロにリセットされていることに気づきました。前日の夜、アカウントにはまだ 100 米ドルがあり、送金を確認したところ、次のことがわかりました。
背景
背景
副題
損失はどのようにして生じたのでしょうか?
2021 年の最後の日に、Little C はたまたま興味深いアカウント (このアカウントには多くのアクティブなトランザクションがある) を見つけ、彼のオンチェーントランザクションのいくつかを追跡し、非常に興味深いプロジェクト (高い年率収益率) を目にしました。誤って自分の MetaMask に接続し、その後誤って承認されました。一般的な Web3 プロジェクトはこのプロセスであるため、承認して転送が終了します。
しかし、衝撃的な場面が現れました:クリックした後、ウェブサイト全体が突然フリーズし(実際、フリーズ期間中に泥棒はお金を送金しました)、応答はなく、Xiao Cはそのときそれを取り戻しませんでした。サイトを閉じて、他のことをするようになりました。
最初のレベルのタイトル
副題
泥棒はどうやってリトル C の口座にあるお金をすべて送金したのでしょうか?
現象: あなたが承認する限り、理論的には秘密鍵なしで対応するすべてのお金を転送できます。
リトルCは、フィッシングサイトの承認に問題があったためか、送信元を追跡し、転送記録を追跡しました。
図に示すように、最初にコントラクトが承認 (認可) され、フィッシングコントラクトがアカウント内の BUSD で動作することが許可され、数に制限がないことがわかります。
なぜBUSDなのか? Little C は、このフィッシング サイトにアクセスしたとき、デフォルトで BUSD を選択したことを思い出しました。サイト リンクのウォレットを閲覧した後、泥棒は既にアカウント内の最も多くの資金を含むトークンを選別していたと推定されています。
その後、Little C は、これが高い年率リターンを伴う新しいスワップ契約であると考え、最初に試してみようとしたとき、従来のプロセスに従って承認を進めました。承認が終了すると、Web サイトは直接停止します。
その後、遡って承認してから約数十秒後に、コントラクトによって転送操作が直接トリガーされ、BUSD トークンが直接転送されました。
後で認証情報を確認しました。
基本的に、MetaMask のデフォルトの権限は次のとおりです。
数値に変換すると、1.157920892373162 に 10 の 59 乗を掛けた値になります。基本的に、これは無制限の転送として理解できます。つまり、この承認された操作により、契約により私のアカウントのトークンを無期限に操作できるようになります。これを見たとき、今まで何度も承認をクリックしたのに、見に行かなかったので、背筋が寒くなりました。
次にハッカーは、契約方法を制御できるウォレット アドレスを操作し、契約転送方法を開始して、お金を送金します。それで皆さん、その後メタマスク認証をクリックするときは注意してください。
最初のレベルのタイトル
副題
問題はどこだ?
最近ブロックチェーンを勉強しているので。この漁法のロジックをリトルCがざっくり整理すると、他を傷つける心と他を防ぐ心を持つ必要があるということです。ご興味がございましたら、以下をご覧ください。
通常の転送
ケース 1: ユーザー間の直接送金 A ユーザーが BUSD を B ユーザーに送金する
コントラクトは通常、次のロジックをチェックします。
1) ユーザー A の口座残高に十分な金額があるかどうかを確認します; 2) それがユーザー A によって開始された送金であるかどうか
プロセスは次の図に示すとおりです
通常の契約書の取り交わし
通常pancakeswapやuniswapなどを使って交換する場合の処理です
ケース 2: スワップによるトークン交換 ユーザーはトークン交換 (BUSD から WBNB) プロセス契約を実行して、以下を判断します。
1) ユーザー A の口座残高に十分な BUSD があるかどうか (スワップ契約が口座 A の BUSD トークンを操作する権限を持っていると仮定します)
2) スワップ契約はアカウント A から 500BUSD を取得し、それをスワップ契約プールに入れます (為替レートが 1:500 であると仮定します)。
3) 契約が成功したら、1BNBをアカウントAに送金します
ポイント 2 と 3 はコントラクト コントロール トークンによって操作されることに注意してください。言い換えれば、コントラクトは私たちをバイパスし、私たちのアカウントのトークンに対する操作を直接開始することができます。
漁業契約
まずはこのトレーサビリティ図をご覧ください
通常の譲渡の場合、譲渡当事者と契約締結者は同一人、つまり上図の(1)と(2)は同一人である必要があります。私の転送先の取引に関しては、これら 2 つのアドレスは同じではありません。フィッシングコントラクトを実行できるウォレットアドレスがコントラクトの実行を制御し、私が許可したBUSDをフィッシングコントラクトに転送する必要があると推測されます。
フィッシング コントラクトを確認するには、フィッシング コントラクトが暗号化されたコントラクトであることは驚くべきことではありません。 Solidity を少し勉強したことがある人なら、コントラクトを定義するときに、さらに数人の管理者または所有者を設定すれば十分であることを知っています。
安全上のアドバイス
安全上のアドバイス
この事件のせいで、Xiao C はいくつかの有益な提案や方法を探し、また多くの血塗られた教訓も目にしました。
ニーズに応じて選択できるいくつかの方法を次に示します。
1) 鍵を共有しないでください
以前、ニーモニックフレーズを使用すると複数のアカウントが生成されるという投稿を見たことがありますが、この種のアカウントは 1 つのポットで使用される可能性が高いため、お勧めしません。
2) キーはオフラインで保存されます
クリップボードのレコードをクラウドにアップロードするクリップボード ツールの入力方法は多数あるため、直接コピーした場合、クラウドが漏洩した場合、キーは直接失われます。
私の提案は、生成後できるだけ早くノートブックにコピーすることです。もちろん、それをノートブックにコピーすることもできますし、私が作成したキーの辞書暗号化を参照することもできます。たとえば、a は 1 に置き換えられ、b は 2 に置き換えられ、1 は a に置き換えられます。たとえ誰かがあなたの紙の鍵を見ても、デジタル資産を移動することもできません。
3) 個別の開発とテスト (エアドロップとメインアカウントの分離)
2 つのブラウザをインストールします。1 つは Chrome、もう 1 つは Brave です。メインウォレットを管理するためのもの。もう 1 つは、エアドロップの受信、さまざまなオンチェーン操作などに参加できます。
4) 不明なソースからソフトウェアをダウンロードしないでください
未知のソースからソフトウェアをダウンロードするために baidu を使用しないでください。海賊版のメタマスクをダウンロードして直接破産した例を見たことがあります。必ず公式アドレスにアクセスしてダウンロードしてください。条件がある場合は、Google Play を参照してください。クロムウェブストアなど
5) 今すぐ認証を確認してください
確認する URL は以下の通りです Debank はオープンソースではありませんが、UI インタラクションはより優れています。将来的にはオープンソースのものもあります。自分で選択できます。
https://debank.com/
https://approved.zone/
https://tac.dappstar.io/
https://ethallowance.com/
写真のように、基本的には無限です。
MetaMask を起動するたびに、認証をさらに確認する必要があります。次のステップを認証するために、今の私のように頭が悪くなってはいけません。
6) 認可前に契約の安全性を確認する
https://www.slowmist.com/service-smart-contract-security-audit.html
SlowMistの契約監査機能をご利用いただけます。
契約がオープンソースであるかどうかも確認できます。オープンソースの場合は、アップグレード可能な契約であるかどうかなどを確認する必要があります。
7) エアドロップと特典を使用する際は安全性に注意してください
少額のアカウントを使用して収集し、大規模なアカウントを使用しないでください。承認時に金額を設定できます。 ! !
8) ソーシャルワーカーの侵入に注意し、Discord で個人的にチャットする見知らぬ人にも注意してください
たとえば、Discord や Telegram で、数日前からあなたを知っている人が、エアドロップを入手するためのお金を持ってくると言ってきて、彼が送ったソフトウェアをインストールしてログインさせます。この種のお金の 99.99% はあなたのお金を失います。お金。アカウントが盗まれました。
特に、Discordでは、NFTの公式Discordに入ると、誰かがあなたとプライベートにチャットし、ミントリンクが添付されたホワイトリストを取得したことを伝えます。嘘つきはプロフィール写真と名前を公式のものに変更しますが、これは実際に彼をあなたとグループに引き込むことによって達成されます。
実際、欲張らない限り、この種の詐欺は非常に簡単に見破ることができます。通常、数時間以内に鋳造するように言われ、番号は 1 ~ 10 です。多くの人気のあるプロジェクトには、ミントのホワイトリストと 1 つまたは 2 つのミントがありますが、このプロジェクトには 10 という時間制限があります。
また、プロジェクトの公式 Web サイトを模倣して偽の Web サイトを作成し、プロジェクト サーバー内の人々にプライベート メッセージを送り、ミントに来るよう依頼する詐欺師も出現します。
また、opensea で偽の NFT を購入し、それが公式ではないことがわかった友人もいます。数日後、NFT はアカウントから消えましたが、差し引かれています... (どうやって見つけましたか? チェーンを見て、公式 Discord に Opensea の公式 URL が掲載されました)
ウォレットのパスワードを騙し、big vにエアドロップし、big vがNFT/トークンを購入したと主張する偽のcollab.landもあります。
新年が近づいています。誰もが安全に注意しなければなりません。この記事を読んでいる友人が安全であることを願っています。
この記事は著者 Chris に感謝します


