分散型金融 (DeFi) と非代替トークン (NFT) の台頭により、デジタル資産主権の新時代が生まれました。しかし、ブロックチェーン技術の透明な表面の裏側では、理想的な分散化と開発者の集中管理との間の静かな戦いが激化しています。 「隠れた所有者」の概念は、今日の最大のセキュリティ課題の 1 つを表しており、プロジェクトが所有権を放棄したと主張している場合でも、最終的な制御を維持するために特権的なガバナンス メカニズムが巧妙にインストールされています。最新のスマート コントラクトのアーキテクチャを詳細に分析したところ、所有権はもはや単純な二値状態ではなく、管理上の役割、アップグレード権、巧妙に偽装された論理的なバックドアの複雑なスペクトルであることが示されています。
不変性とガバナンス制御の必要性との間の矛盾
イーサリアム エコシステムおよびイーサリアム仮想マシン (EVM) 互換チェーンでは、ソース コードの不変性が人間の介入に対する障壁とみなされることがよくあります。契約が展開されると、その論理コードはブロックチェーン台帳に永続的に刻まれます。ただし、実際の運用では、開発者はエラーを修正したり、機能を更新したり、攻撃を受けた場合などの緊急事態に介入したりできる必要があります。この正当なニーズから、制御の維持を可能にする設計モデルが生まれましたが、厳密に監視されていない場合、資産の操作や流用の余地も生まれます。
タン ファット デジタルの専門家によると、「隠れた所有者」の概念は、特定の個人だけでなく、システム内の「ユニバーサル キー」を保持するあらゆるエンティティも指すとのことです。これには、単一の外部エンティティ アカウント (EOA) から、契約の中核ロジックに干渉する権限を持つマルチシグネチャ ガバナンス メカニズム (Multisig) や DAO までが含まれます。
アクセス コントロール システムの成熟度レベルの分類
「隠れ所有者」のリスクを評価するために、Tan Phat Digital は、共通のブロックチェーン セキュリティ標準に基づいてアクセス コントロールの成熟度評価フレームワークを作成しています。変数:
レベル 1: 単一 EOA (高度に公開)
設計の特徴: 単一の個別のウォレットがすべての
onlyOwner権限を保持します。隠れた所有者のリスク: 非常に高い。これは、秘密キーが公開された場合、または開発者が詐欺を行う意図がある場合には致命的な弱点となります。
レベル 2: 集中型マルチシグ (基本的な緩和策)
設計上の特徴: ウォレットのグループ間で電力が共有されます (例: 3/5 署名モデル)。
隠された所有者リスク: 中~高。メンバーのウォレットが同じ利益グループに属している場合、システムは依然として操作の影響を受けやすくなります。
レベル 3: タイムロックと役割の分離 (強化されたコントロール)
設計機能: すべての変更に時間遅延を適用し (タイムロック)、Minter、Admin、Pauser などの役割を明確に分離します。
隠れたリスク所有者: 低から中程度。コミュニティには、変更が有効になる前に対応してテストする時間があります。
レベル 4: 根本的な不変性 (エンドゲーム)
設計の特徴: 導入後にすべての管理者権限を完全に削除します。ソース コードはいかなる方法でも変更できません。
隠れた所有者のリスク: なし。ただし、このレベルでは、後でエラーを修正できないため、起動前にソース コードが完全に完成している必要があります。
レベル 1 からレベル 4 への移行は、「隠れた所有者」によるリスクを完全に排除する唯一の方法ですが、柔軟性と、展開後に発生する技術的エラーへの対応という点でのトレードオフも必要です。
プロキシ アーキテクチャとソース コードの不変性の幻想
制御を維持する手法において、プロキシ パターンは最も強力で人気のあるツールです。これにより、開発者は固定アドレスでコントラクトの動作を完全に変更することができ、状態と処理ロジックの分離を通じて「可変性の幻想」を作り出すことができます。プロキシ コントラクトはユーザーに対する単一の通信ゲートウェイとして機能しますが、コード DELEGATECALL を通じて論理コントラクト (実装) に実行を委任します。
DELEGATECALL メカニズムとコンテキスト リスク
コード DELEGATECALL により、プロキシは実装のコードをプロキシのメモリ コンテキスト (ストレージ) 内で実行できます。これは、状態変数、イーサ残高、および所有権はすべてプロキシに存在し、計算ルールは実装に存在することを意味します。
データの衝突を回避するための EIP-1967 ストレージ スロットの計算式は、通常次のように定義されます。

これらのランダム ハッシュ スロットを使用すると、プロキシの implementation 変数が実装のビジネス変数を上書きするのを防ぐことができます。ただし、Tan Phat Digital は、開発者が意図的に「ストレージ衝突」を作成すると、論理アドレスを操作して悪意のあるコードを含むコントラクトをポイントし、ユーザーの資金を引き出すことができると指摘しています。
一般的なプロキシ モデルと管理者権限の詳細
透過的プロキシ モデル
機能の場所のアップグレード: プロキシ内にあります。
制御メカニズム: 管理者アドレスのみがアップグレード機能を実行する権限を持ちます。通常のユーザーからの通話は常に論理コントラクトにリダイレクトされます。
セキュリティ評価: 関数セレクターの競合は回避されますが、システムは
msg.senderを継続的にチェックする必要があるため、ガスコストが高くなります。
UUPS モデル (EIP-1822)
アップグレード関数の場所: 実装コントラクトに直接配置されます。
制御メカニズム: 最適化のためにアップグレード ロジックが実装に継承されます。
セキュリティ評価: ガス効率は高いですが、新しいアップグレードに後続の実行ロジックが欠けている場合、システムが永久に「ブリック」されるリスクがあります。
ビーコン モデル プロキシ
- ダイヤモンド モデル (EIP-2535)
アップグレード関数の場所: フラグメント構造 (ファセット)。
制御メカニズム: 各関数の詳細なアップグレード管理 (関数
セキュリティ評価: 最大限の柔軟性を提供しますが、このアーキテクチャは非常に複雑であるため、ロール ゲームの監査と管理が困難になります。
詳細: 秘密キーを公開しなくても、ウォレットが依然としてお金を失うのはなぜですか?
権限マトリックス: AccessControl と DEFAULT_ADMIN_ROLE
プロキシ メカニズムのほかに、Ownable やAccessControl は、「非表示の所有者」をインストールする一般的な方法です。ほとんどの投資家は単純な owner 変数のみをチェックしますが、洗練された開発者はマルチレベル認証システム (RBAC) を使用します。
DEFAULT_ADMIN_ROLE の優位性
AccessControl ライブラリの DEFAULT_ADMIN_ROLE ロール (通常はハッシュ コード 0x00) が権限を付与します。絶対:
ミント (Minter) 権限や一時停止 (Pauser) 権限など、システム内の他のロールを付与 (グラント) または取り消し (取り消し) します。
市外局番地、Oracle データ ソース、リスク パラメーターなどの機密パラメータを変更します。
_setRoleAdminを介して他のロールの「管理者ロール」を変更する機能。
Tan Phat Digital は、開発者が契約で「所有権の放棄」を実行した場合でも、その契約のロジックに非表示の管理者ロールがまだ存在していれば、制御を維持できます。
偽装された修飾子を使用して隠された「所有者」ロジックを分析する
制御の意図を隠すために、開発者は中立の修飾子を使用することがよくあります。 names:
onlyManager: 技術的な操作を提供すると説明されることが多いですが、実際には引き出し権を付与することができます。onlyCFOまたはonlyVaultAdmin: 財務管理の名の下に流動性に介入する権利を偽装します。authorized: 修飾子これにより、開発者のホワイトリストにある任意のアドレスが特権コマンドを実行できるようになります。
ロジックを隠すバックドア テクニックとプログラミング トリック
真の「隠れた所有者」は、隠蔽されたソース コードの奥深くに隠されたトリガー条件をインストールしたり、誤解を招く関数名を混乱させたりすることがよくあります。
名前を欺く技術 (欺瞞的なネーミング)
Tan Phat Digital は、以下の契約で一般的に見られる関数の命名パターンをまとめました。バックドア:
関数safeWithdraw()
実際のロジック: 契約の残高全体を所有者のウォレットに転送する注文を実行します。
目的: 安全な引き出しを装ってすべての資金を引き出します (ラグ プル)
UpdateLibrary() 関数
実際のロジック: 新しいアドレスを指すように
implementation変数を変更します。目的: コントラクトを悪意のあるバージョンにサイレントにアップグレードします。
関数syncBalance()
実際のロジック:
msg.senderの残高をゼロに設定します。目的: システム内のユーザーの資産を凍結または消去します。
関数EmergencyRefund()
実際のロジック: コマンドを呼び出します。
selfdestruct(owner). 「オーナー」は、プロキシ フィッシング攻撃を通じて契約をリモートで操作します。さらに、時間遅延またはブロック番号に基づくアクティブ化条件により、プロジェクトが安定して動作し、十分な流動性が蓄積された後にのみバックドアが「目覚める」ようになります。流用流動性窃盗: 開発者は特権機能を使用して流動性プールからすべての原資産 (ETH/USDT) を引き出し、ユーザー トークンを交換できなくなります。
取引凍結 (ハニーポット): ユーザーは購入のみ可能ですが、ソースのせいで売却できません。選択的に有効になっているブラックリスト ロジック (
isBlacklisted) を含むコード。無制限のミント: 隠された
MINTER_ROLE権限により、販売用の大量のトークンを作成でき、投資家の資産価値を完全に薄めます。検証ステータスを確認します: 検証済みのソース コード (緑色のチェック マーク) のないバイトコードのみを表示するコントラクトとは絶対に対話しないでください。プロキシを使用する場合は、実装コントラクトを注意深く確認する必要があります。
特権ロールのトレース:
Ctrl + Fを使用して検索します:owner、admin、DEFAULT_ADMIN_ROLE、minter、onlyOwner、onlyAdmin.危険な機能をチェックします:
selfdestruct、delegatecall、およびupgradeToに特に注意してください。管理イベントを追跡します: 所有者の場合は、[イベント] タブで
OwnershipTransferredイベントを確認します。権利を放棄したと主張するユーザーは、新しいアドレスが「バーン」(0x...デッド)アドレスかどうかを確認します。非表示とは実際には何ですか。所有者? これは、プロジェクトが完全に分散化されていると宣伝している場合でも、開発者が非表示の管理者ロールまたは論理的なバック ドアを通じてスマート コントラクトに対する最終的な制御 (資金の引き出しやトランザクションの停止など) を維持できるようにするプログラミング手法です。
開発者に非表示の所有者が必要な理由 不正な目的 (ラグ プル) とは別に、開発者が緊急のバグ修正や機能更新のためにインストールする場合があります。ただし、タイムロックやマルチシグがなければ、これは大きな集中リスクです。
所有権の放棄は本当に安全ですか? 決して安全ではありません。開発者は
ownerウォレット放棄機能を呼び出すことができますが、AccessControlライブラリの非表示の管理者ロールまたはプロキシ アップグレード権限を通じて権限を保持したままになります。コントラクトが悪意のあるプロキシであるかどうかはどうやってわかりますか? Etherscan で「実装」アドレスが 1 つの EOA ウォレットで変更できるかどうかを確認してください。開発者が予告なしに任意のロジックにアップグレードできる場合、それは危険です。
DEFAULT_ADMIN_ROLE はどのくらい危険ですか? これは、AccessControl 標準の「究極の機能」です。このロールを持つユーザーは、他の権限がロックされている場合でも、新しいウォレットに任意の権限 (鋳造権など) を付与できます。
「ゴースト状態」エラーとは何ですか? これは、コントラクトがクリーンアップされた後も古いデータがストレージにまだ存在する現象です (2025 年の Yearn yETH 事件など)。攻撃者は、この「ゴースト」データを利用して、非常に低コストで大量のトークンを鋳造することができます。
tx.originがバックドアの兆候とみなされるのはなぜですか? 管理者権限の認証にmsg.senderの代わりにtx.originを使用すると、開発者がユーザーを騙すことができます (またはRug Pull では「欺瞞的な命名」はどのように機能しますか? 開発者は、安全に聞こえるように関数に
safeWithdraw()やemergencyRefund()などの名前を付けていますが、その中にはすべての資金を個人ウォレットに転送するか自己キャンセルするコードが含まれています。初期化されていないプロキシを特定するにはどうすればよいですか? Etherscan の「Read Contract」タブを確認してください。
ownerやadminなどの変数がアドレス0x00...にある場合、攻撃者 (または開発者自身) はいつでもコンストラクター関数を呼び出して引き継ぐことができます。自己破壊はバック ドアとして使用できますか? はい。
selfdestructを含む関数により、開発者はコントラクト ロジック全体を破壊し、内部のイーサを所定のアドレスに排出し、ユーザーの資産を永久に凍結することができます。Timelock はどのように投資家を保護しますか? Timelock は管理コマンドごとに遅延 (例: 48 時間) を作成します。これにより、コミュニティにアップグレードをテストし、異常な兆候が検出された場合はすぐに資金を引き出す時間が与えられます。
プロジェクトをハニーポットとして識別するための兆候? 契約には、購入のみを許可し、販売は許可しないロジックが含まれており、通常はホワイトリスト チェック条件または 100% の販売手数料を伴う
_transfer関数に隠されています。4 ガバナンスの成熟度とはレベル? 含まれるもの: レベル 1 (単一 EOA - 極度のリスク)、レベル 2 (マルチシグ - 中リスク)、レベル 3 (タイムロックとロール分解 - 安全)、レベル 4 (完全に不変 - 絶対に安全)。
隠し所有者のスキャンに最適なツールはどれですか? Tan Phat Digital では、迅速かつ簡単にスキャンするために、TokenSniffer、GoPlus Security の組み合わせを使用することをお勧めします。技術的な知識がある場合は、より深い静的分析を行うことができます。
検証済み (緑色のチェックマークが付いている) コントラクトが依然として Rug Pulled であるのはなぜですか?開発者は検証されていない外部ライブラリ (StableMagnet の場合など) にリンクしたり、ユーザーが信頼した後にサイレント プロキシ アップグレードを実行したりできるためです。
詐欺の経済学: ラグ プルと流用メカニズム
Tan Phat Digital は、最も一般的な 3 つの形態を分析しています。 「隠れた所有者」からの流用:
フォレンジック プロセス: で「隠れた所有者」を検出する方法Etherscan
資産を保護するために、Tan Phat Digital では、次の「葉をチェックしてワームを見つける」検査プロセスをお勧めします:
非表示の所有者に関する 15 のよくある質問 (FAQ)
以下は、非表示の所有者メカニズムに関する一般的な質問に対する Tan Phat Digital からの詳細な回答です。
「偽の分散化」に注意してください
「Hidden Owner」は、Web3 の世界では、人間が法を一方的に変更する鍵を持たない場合にのみ、ソース コードが真の法であることを思い出させます。隠された管理者権限の存在は、重大な集中化のリスクを生み出します。
Tan Phat Digital は、絶対的な開発者制御が透明性のある時間制限のあるガバナンス メカニズム (タイムロック) とコミュニティの合意に置き換えられた場合にのみ、ブロックチェーン プロジェクトがその中核的価値である委任のない信頼を真に達成できると考えています。ソーシャルネットワーク上の約束を決して信じないでください。コードがチェーン上で実際に実行するものを信頼してください。
シェア








