すべての記事

悪意のあるスマート コントラクトからの保護

blockchainJanuary 29, 2026·#Blockchain

この記事では、ハッカーがユーザー資産を適切に利用するためによく使用する再入可能性、無制限の承認権、プロキシ技術などの高度な攻撃メカニズムを分析しています。

悪意のあるスマート コントラクトからの保護

Tan Phat Digital の分析によると、分散型金融 (DeFi) と分散型アプリケーション (dApps) の爆発的な増加は、金融の自律性に革命をもたらしましたが、同時にサイバー犯罪者にとって新たな時代の扉を開きました。 2022年から2023年にかけて、スマートコントラクト関連の攻撃や詐欺による損失は数十億ドルに達し、2022年だけで37億ドルという数字が記録されているとの報告もある。現在最も懸念される点は、意図しない技術的脆弱性だけではなく、「意図的に悪意のあるロジック」で設計された契約の増加です。これらの組織は、ブロックチェーンの不変性とユーザーの技術的理解の欠如を利用して、可逆性メカニズムなしで資産の不正流用を実行します。見落とされがちな有害性の兆候を特定するには、イーサリアム仮想マシン (EVM) アーキテクチャ、トークン標準、ブロック ブラウザの操作手順を徹底的に理解する必要があります。

悪意のあるスマート コントラクトの性質と実行メカニズム

悪意のあるスマート コントラクトは、単なる欠陥のあるコードではありません。これらは、ユーザーの安全性に関する想定を打ち破るようにプログラムされた金融商品です。スマート コントラクトの中核的な特徴の 1 つは、スマート コントラクトが自動実行され、第三者から独立していることです。つまり、トランザクションがトリガーされると、エラーが発生した場合にユーザーの利益を保護するために規制当局や銀行が介入することはできません。スマート コントラクト詐欺には、多くの場合、プロジェクト オーナーが流動性プール (プール) 内のすべての資産を引き出したり、隠れた条件によってユーザーが資金を引き出しできないようにしたりする「バックドア」のインストールが含まれます。

詳細: スマートとは契約?スマート コントラクトについて知っておくべきこと

ハニーポット コントラクトのリエントランシーと歪みの脆弱性

リエントランシーは、コントラクト ロジックが悪用されてプロトコルから資金が流出する典型的な例です。このメカニズムは、コントラクトが内部バランス状態を更新する前に外部アドレス (通常は攻撃者のコントラクト) を呼び出すときに発生します。このシナリオでは、攻撃者は フォールバック 関数を使用して、単一のトランザクションで被害者の出金関数を複数回コールバックし、実際の残高を超えて資金を引き出すことができます。

この手法が「ハニーポット」契約で使用されると、危険性が高まります。詐欺師は、再入バグに対して脆弱であると思われるコントラクトを意図的に展開し、開発者や脆弱性検索ボットを誘い込み、コントラクトを「ハッキング」する目的で資金を入金させます。ただし、ハニーポット契約には、引き出しを実質的に不可能にする追加のチェックまたは隠された機能が含まれており、それによってハッカー自身が被害者になります。これは、リスクが dApp との対話だけでなく、ブロックチェーン上の一見「悪い」コントラクトを悪用しようとすることからも発生することを示しています。

一般的なタイプのリエントリ:

  • リエントリの単一関数: 最初の実行が終了する前に繰り返し呼び出される関数。これにより、残高データの整合性が損なわれ、無制限の出金が可能になります。

  • 関数間再入力: 攻撃者は 2 つの異なる関数を使用しますが、同じ状態を共有します。このタイプは、単一のロジック テストでは検出することがより難しく、グローバル状態の分析が必要です。

  • 契約間再エントリ: ある契約の状態が別の契約の未更新の状態に依存する場合に発生し、複雑な DeFi プロトコルでシステム ロジック エラーを引き起こすことがよくあります。

アクセス コントロールとミント ロジックの違反

最も一般的な兆候の 1 つユーザーが無視しがちなマルウェアは、過剰な権限を持つ管理機能の存在です。 mintUnlimitedTokens()ownerOnlyWithdraw() などの関数、または blacklist() 関数のバリエーションを使用すると、契約所有者はユーザーの資産の運命を完全に制御できます。実際の例は、DMC プロジェクトのハッキングです。mintFromSaking() 関数にはアクセス制御メカニズムが欠如しており、その結果、攻撃者は 4,000 万以上の新しいトークンを鋳造し、PancakeSwap の流動性を流出させることができました。

不適切なアクセス制御は、技術的な名前や一見無害な関数名に偽装されることがよくあります。詐欺師は、msg.sender の代わりに tx.origin を使用してプロキシ フィッシング攻撃を実行したり、難読化されたソース コードの奥深くに隠された所有者変更ロジック (setOwner) を使用したりする可能性があります。ユーザーは多くの場合、管理ウォレットのアドレスが実際にロックされているか (放棄されているか)、または供給全体を操作できるプライベート ウォレットの手に渡っているかどうかを確認せずに、光沢のあるユーザー インターフェイスだけを見ることになります。

参照: 承認詐欺の危険性と、これほど多くの人が罠に陥る理由

トークン承認局と高度なフィッシング攻撃によるリスク

トークン承認権限(トークン承認)は DeFi トランザクションのバックボーンであり、dApps がユーザーに代わってトークンを使用する権限を許可します。ただし、これはサイバー犯罪者が最も徹底的に悪用する「アキレス腱」でもあります。ユーザーが分散型取引所 (DEX) を操作するとき、通常、approve トランザクションに署名するよう求められます。通常、dApps にはユニバーサル承認権限 (無制限の承認) が必要です。これにより、ユーザーはこの操作を再度実行する必要がなく、今後のガス料金を節約できます。

無制限の承認メカニズムと transferFrom 関数

技術的には、approve(spender, amount) 関数は、特定のコントラクト アドレスのブロックチェーンに「allowance」値を記録します。ユーザーが最大値 ($2^{256} - 1$) で承認に署名した場合、dApp は transferFrom() 関数を介していつでもユーザーのウォレットにあるそのトークンの残高全体を引き出す権利を有します。このリスクは、dApp の契約がハッキングされた場合、または dApp 自体が詐欺ツールである場合に発生します。攻撃者はユーザーの秘密鍵を保持する必要はありません。ユーザーが以前に自発的に付与した権限に基づいて転送オーダーを実行するだけです。

承認ステータスによるリスク分析:

  • 無限の承認ユーザー: 許容値がウォレット残高以上であるため、transferFrom 関数がいつでも正常に実行できるため、トークン残高全体を永久に失うリスクに直面します。

  • ユーザー承認制限: 一定量の承認されたトークンのみを受け取ります。 transferFrom 関数は、特定の署名付き許容値によってブロックされます。

  • ユーザーはウォレットに接続するだけです。 この状態は安全であり、approve トランザクションがブロックチェーンに記録されていないため、資産は失われません。transferFrom コマンドは元に戻されます (キャンセルされます)。

フィッシング傾向とベトナムの悪意のある署名 Nam

ベトナムでは、承認レイヤーを回避する形式の詐欺が、「Scam Airdrop」または「Fake Tech Support」の名の下で非常に普及しています。詐欺師は、偽の Web サイトへのリンクを含む奇妙なトークンをユーザーのウォレットに送信します。ユーザーがアクセスして報酬を「請求」しようとすると、承認リクエストまたは Permit 署名 (EIP-712) への署名に誘導されます。 Permit 署名は、ユーザーがその時点でオンチェーン トランザクションを実行することなくトークン アクセスを承認できるため、特に危険です。これにより、被害者はガス料金が差し引かれていることに気付かず、セキュリティ面で主観的になります。

さらに、ロマンス詐欺や投資詐欺の一形態である「豚の解体」も、悪意のあるスマート コントラクトを利用して被害者の資金をロックします。被害者は、偽の取引プラットフォームに資金を預けるよう指示され、実際の資金は、隠蔽された引き出し権が設定された契約を通じて詐欺師のウォレットに直接送金されます。

難読化とプロキシ: 悪意のある契約クローキング手法

自動スキャン ツールやセキュリティ アナリストによる検出を避けるために、攻撃者はコード難読化手法 (難読化) と複雑なプロキシ構造を使用することがよくあります。誤解を招く関数名の使用は一般的な手法です。たとえば、本質的に資金が空である関数 (rugPull) ですが、safeWithdraw() または emergencyRefund() という名前が付けられている関数です。

デリゲートコールと契約のアップグレードのリスク

プロキシ モデルでは、あるコントラクト (プロキシ) がコマンド delegatecall を介して実行ロジックを別のコントラクト (実装) に転送できます。重要な点は、delegatecall コマンドはターゲット コントラクトのソース コードを実行しますが、呼び出し側コントラクトのストレージ領域を使用するということです。これにより、プロジェクト所有者はいつでも論理契約アドレスを変更できるようになります。プロジェクトは、初期監査に合格するために完全にクリーンな契約で開始されますが、その後、悪意のあるバージョンに「アップグレード」してユーザーの資金を強要する可能性があります。

攻撃者は、プロキシ構造内のストレージの衝突を悪用して、所有者アドレス (owner) やトランザクション制御フラグなどの重要な変数を変更する可能性もあります。 Etherscan などのブロック ブラウザでは、直接的な悪意のあるロジックが含まれていないプロキシ アドレスとのやり取りのみが確認されるため、これらの脆弱性は通常のユーザーには検出が困難です。

悪意のあるスマート コントラクトのテストと識別プロセス

Tan Phat Digital は、ユーザーが表面的な情報に依存するだけでなく、オンチェーン データを深く掘り下げて多層テスト プロセスを実行することを推奨しています。ソース コードの信頼性を確認することは、最初で最も重要なステップです。 Etherscan または BscScan で検証されたコントラクトには緑色のチェックマークのアイコンが表示され、コミュニティが実際のソース コードをレビューできるようになります。

流動性ロック分析

流動性は、ユーザーがトークンを販売できるかどうかを決定する要素です。悪意のあるプロジェクトは通常、取引プールから流動性を流出させる「ラグプル」を実行します。ユーザーは、次の手順に従って、ブロック ブラウザで手動チェックを実行できます。

  1. ブロック ブラウザでそのトークンのトークン トラッカー ページに移動します。

  2. 初期流動性デポジット トランザクションを検索し、LP (流動性プロバイダー) トークンの受信アドレスを確認します。

  3. LP トークンが「バーン」アドレスまたは信頼できるロック コントラクトに送信されたかどうかを確認します。クレジット。

一般的な流動性ロック方法:

  • 書き込みアドレス: LP トークンを dEaD で終わるアドレスに転送します。誰も焼かれた資産を引き出すことができないため、これは絶対的な信頼レベルです。

  • Unicrypt / PinkSale プラットフォーム: ロックアップ期間のある中間スマート コントラクトを使用します。信頼性が高く、ロック解除時間はプラットフォームの Web サイトで公開して確認できます。

  • 開発ウォレット (ロック解除): LP トークンはプログラマーのウォレットに直接配置されます。信頼レベルは非常に低く、プロジェクト オーナーはいつでも Rug Pull を実行するためにお金を引き出すことができます。

監査および KYC レポートの評価

プロジェクトが CertiK や Hacken などの部門によって監査されたと主張しているからといって、完全に安全であるというわけではありません。ユーザーは、監査法人のウェブサイトでそのレポートの信頼性を直接確認する必要があります。真の監査レポートは、GitHub 上のアクティブな契約アドレスとソース コードのコミットと一致する必要があります。不正行為の一般的な兆候には、タイプミス、一貫性のないデザイン、監査人の公式リーダーボード ページではなく個人の GitHub ページへのリンクなどがあります。

プロアクティブな防御ツールと戦略

Revoke.cash と Rabby Wallet を使用して承認権限を管理

トークンの承認を定期的に確認して取り消すことは、重要なセキュリティ習慣です。 Revoke.cash は、ユーザーがこれまでに承認したすべての dApp のリストを表示し、「取り消し」を実行したり、承認制限を安全なレベルに更新したりできる主要なツールです。一方、Rabby Wallet は、リスク警告機能が組み込まれているため、安全なウォレットとみなされており、取引で未検証の契約の承認が必要な場合や悪意の兆候が見られる場合には赤色の通知が表示されます。

切断と取り消しの区別<​​/h3>

よくある間違いは、dApp からウォレットを切断すれば資産が保護されると信じることです。ただし:

  • 切断: ウェブサイトがウォレット アドレスと残高を表示する許可のみをキャンセルします。ブロックチェーンに記録されている承認権限には影響しません。

  • 取り消し: dApp がトークンを使用する権利を削除する真のブロックチェーン トランザクションです。これは、悪意のある契約が transferFrom コマンドを介してウォレットから資金を引き出すことを防ぐことができる唯一のアクションです。

アセット レスキューとホワイト ハット レスキュー

ウォレットが「スイーパー ボット」によって侵害されると、ボットはガス料金をロードするとすぐに自動的に排出するため、残りの資産を引き出すのは非常に困難になります。

ツールレスキューとメインメカニズム:

  • フラッシュボット: クローズドバンドルトランザクションメカニズムを使用し、パブリックメモリプールを経由しません。 Index.js と秘密キーを構成するには技術的な知識が必要です。

  • ハッキングされたウォレットの回復: バンドルの自動作成をサポートするインターフェイスを提供します。ユーザーは、トランザクションがパブリック ネットワークに公開されるのを避けるために、特別な RPC に切り替える必要があります。

  • Revoke.cash (エクスプロイト チェッカー): ウォレットがハッキングされた dApp のリストに含まれているかどうかを確認します。このツールは防止と取り消しの効果のみを持ち、転送された資金を保存するものではありません。

スマート コントラクトのセキュリティに関する 10 のよくある質問 (FAQ)

  1. ウォレットを dApp から切断するだけで十分安全ですか? いいえ。切断はウェブサイトがウォレットの残高を閲覧できなくなるだけです。承認権限はブロックチェーン上に残り、悪意のあるコントラクトがいつでも transferFrom コマンドを介して資金を引き出すことができます。実際にアセットへのアクセスを取り消すには、取り消しコマンドを実行する必要があります。  

  2. プロジェクトの流動性が本当にロックされているかどうかを確認するにはどうすればよいですか? ブロック ブラウザ (Etherscan/BscScan) で確認する必要があります。流動性トークン (LP トークン) が書き込みアドレス (0x...dEaD) または 6 ~ 12 か月以上の期間を持つ Unicrypt、PinkSale などの信頼できるロック コントラクトに送信される場合、安全であるとみなされます。  

  3. dApps はなぜ無制限の「承認」権限を要求することが多いのですか? dApps は、今後の取引でユーザーに利便性をもたらし、ガス料金を節約するために、最大の権限 (2256-1) を要求します。ただし、その契約に悪意のあるコードが含まれている場合、追加の注文に署名することなく、ハッカーがウォレット内のすべてのトークンを流出させる可能性があります。  

  4. 「ハニーポット」コントラクトとは何ですか? ハニーポットは、トークンの購入は可能ですが、トークンの販売を妨げるコードをインストールするコントラクトの一種です。 Dexscreener でチェックすることでそれを特定できます。チャートに買い注文 (青) のみがあり、売り注文 (赤) がない場合、それは間違いなくトラップです。  

  5. 自分のウォレットに「スイーパー ボット」が存在していることに気付いた場合はどうすればよいですか? ボットがすぐにお金を引き出してしまうため、そのウォレットには絶対にお金を追加しないでください。唯一の解決策は、フラッシュボットハッキングされたウォレットの復元などのツールを使用して、閉じられたトランザクションのバンドルを作成し、ボットが反応する前に資産を「盗む」ことです。  

  6. 監査レポートは、プロジェクトが完全にハッキング不可能であることを保証しますか? いいえ。監査は、特定の時点での単なる評価です。プロジェクトは後でプロキシ モデルを通じてロジックを変更したり、ハッカーが監査人が見逃したエラーを悪用したりする可能性があります。  

  7. 「許可」 (EIP-712) 署名はどのくらい危険ですか? これは「オフライン」署名タイプであり、ガスはかかりませんが、承認コマンドと同じ価値があります。ハッカーは、偽の Airdrop Web サイトを通じてユーザーを騙して Permit に署名させ、被害者の知らないうちに資産を制御することがよくあります。  

  8. KYC または監査レポートの信頼性を確認するにはどうすればよいですか? 発行者の Web サイト (CertiK Leaderboard など) に直接アクセスし、プロジェクト名を検索する必要があります。プロジェクト自体が提供するスクリーンショットや PDF リンクは簡単に編集できるため、決して信用しないでください。  

  9. 仮想通貨以外に、どのような種類の「契約詐欺」が流行していますか?一般的な形態としては、家の修理契約詐欺 (高額な手付金を要求し、失踪する) や電話契約詐欺 (ネットワーク オペレーターになりすまして、高額なプランに申し込むための個人情報を入手する) などがあります。

  10. 悪意のある契約によってウォレットからお金が引き出された後、返金される可能性があります。いいえ? ブロックチェーンの不変かつ分散型の性質により、一度行われたトランザクションは元に戻せません。唯一のチャンスは、中央集権取引所 (CEX) に報告して、泥棒が送金した場合に資産をブロックできるようにすることです。  

悪意のあるスマート コントラクトの進化は、ブロックチェーン テクノロジーが複雑になればなるほど、論理的な欠陥がより予測不能になることを示しています。 Web3 セキュリティの将来は、「継続的セキュリティ」モデルとリアルタイム監視に移行します。 タンファットデジタルの専門家らによると、承認権限管理と自己チェック機能(DYOR)に対するユーザーの意識を高めることが、サイバー犯罪者にとって最大の障壁になるという。安全性は、きれいなコード行だけではなく、セキュリティ テクノロジーと市場に参加する各個人の注意力の組み合わせによってもたらされます。

シェア

コメント

0.0 / 5(0 件の評価)

コメントするにはログインしてください。

まだコメントはありません。最初のコメントを投稿しましょう。