Netwrix 1Secureは、データとアイデンティティ全体にわたる統合された可視性を提供します。14日間の無料トライアルでフルアクセス可能です。無料トライアルを開始

リソースセンターブログ

DLLハイジャックとは何か、そして新しいAIプラグインが最も簡単な侵入方法である理由

DLLハイジャックとは何か、そして新しいAIプラグインが最も簡単な侵入方法である理由

Aug 26, 2026

DLLハイジャックは数十年前からあるWindowsの脆弱性クラスです(Mitre Att@ck T1574)レガシーデスクトップアプリにAIプラグインが組み込まれ、新たな脅威となっています。攻撃者は脆弱なアプリが本物のDLLの代わりに読み込む悪意あるDLLを配置し、そのアプリの権限を引き継ぎます。検出は書き込み可能なフォルダから名前で読み込まれるDLLを監視することです。防止はアプリの読み込み順序のロジックを修正するか、エンドポイントで信頼できないDLLをブロックすることです。

今年は、組織がAIを処理するために作られていないツールにAIを組み込む方法を多く観察してきました。ほとんどのリスクはデータの露出やモデルの挙動に関して議論されますが、あまり注目されないのが、もっと基本的なインストールプロセス自体です。チームがレガシーデスクトップアプリケーションにAIプラグインを取り付けるとき、新しい実行ファイル、新しい依存関係のセット、そしてそのアプリケーションがDLLを読み込む際にWindowsが検索する新しいフォルダのセットを追加することが多いです。これは、長年DLLハイジャックを追ってきた人には馴染みのある設定であり、ますます一般的になっています。

DLLハイジャックとは

Windowsアプリケーションは、常に固定された信頼できる場所からDLLを読み込むわけではありません。アプリがDLLをフルパスではなく名前で要求すると、Windowsは定義された順序でディレクトリを検索します。攻撃者がその検索順序の前の方に正しいファイル名の悪意のあるDLLを配置できれば、アプリケーションは正規のライブラリではなく攻撃者のコードを、アプリケーションが持つ権限で読み込みます。

これは新しい手法ではありません。何年も前から文書化された弱点であり、多くのデスクトップアプリケーション、特に古いものや設計が不十分なものは、完全なパスではなく名前でDLLを読み込むため、今も有効です。変わったのは攻撃対象範囲です。レガシーアプリにインストールされたすべてのプラグイン、アドオン、AI搭載の拡張機能は、管理が緩いフォルダ、署名されていない依存関係、または検索パス内の書き込み可能なディレクトリの新たな機会となります。

DLLハイジャックの例

10年間使用されているCADアプリケーションを運用するエンジニアリングチームを想像してください。ITは、ユーザーに図面上でスマートな検索と要約レイヤーを提供するAIプラグインを追加しました。このカテゴリの多くのソフトウェアと同様に、CADアプリはヘルパーDLLの1つをフルパスではなく名前で読み込みますが、これまで目立った問題がなかったため、誰も疑問を持ちませんでした。

フィッシング、侵害されたアカウント、または他の足掛かりを通じて、そのマシンに限定的なアクセス権を持つ攻撃者は、AIプラグイン自体を破る必要はありません。アプリの検索順序で先にあるフォルダに、同じファイル名のDLLを置くだけで済みます。ユーザーがアプリを起動すると、次回は攻撃者のDLLが読み込まれ、悪意のあるコードがCADアプリケーションと同じ権限で実行されます。AIプラグインへのエクスプロイトは不要です。プラグインは攻撃者に新しい作業フォルダを提供しただけです。

DLLハイジャックの検出方法

検出は通常、正当なDLLが行うべき動作と一致しない動作を監視することに帰着します。

  • アプリケーションが完全な信頼できるパスではなく、異常またはユーザー書き込み可能なディレクトリから名前でDLLを読み込む
  • rundll32.exeのようなユーティリティを通じて起動される署名されていないDLL、一般的なハイジャックパターン
  • ファイル整合性監視 パッチサイクル間で変更されるべきでないDLLの変更を検出
  • 正当な親プロセスに続いて予期しないまたは署名されていないDLLの読み込みを示すEndpointログ

別の方法として、検索パス内の任意のDLL(実際にはすべてのファイル)の整合性を、ハッシュ値を既知の正常なソースと比較して確認する方法があります。

これは特別なことではありません。セキュリティチームがファイルの整合性やプロセス監視にすでに適用している同じ規律であり、サードパーティのプラグインやレガシーアプリが弱いロード順序の動作をもたらすフォルダに特に向けられています。

DLLハイジャックを防ぐ方法

予防は一般的に2つのカテゴリーに分かれます:アプリケーションの修正と、endpointで実行を許可するものの制御です。

アプリケーションを修正するには、DLLの読み込みに完全修飾パスを使用し、標準ユーザーがアプリが検索するディレクトリに書き込めないようにフォルダの権限を厳しくし、ベンダーのソフトウェアを最新の状態に保つ必要があります。これは正しい長期的な修正ですが、すべてのベンダーが作業を行う必要があり、この問題に最もさらされている多くのアプリケーションは、迅速にパッチが適用される可能性が最も低いものです。

エンドポイントを制御するということは、ベンダーを待たないということです。 PolicyPakPolicyPakのDLL Hijack ProtectionはLeast Privilege Managerの一部で、3つのモードで動作します。監査モードはリスクのあるDLLの読み込みをブロックせずにログを記録し、チームがまずリスクを評価できるようにします。セーフエレベーテッドモードは昇格プロセスのリスクのあるDLLの読み込みをブロックします。アンチハイジャックモードは、Program Filesのような保護された場所で実行される通常のプロセスにもブロックを拡張します。これは、完全なパスではなく未修飾名でDLLを読み込むアプリケーションと、rundll32.exeのようなユーティリティを通じて起動される署名されていないDLLという2つの最も一般的なハイジャックパターンを直接防ぎます。正当なDLLが誤ってブロックされた場合、管理者は保護を完全にオフにせずにファイルパス、デジタル署名、またはファイルハッシュで許可できます。

チームがこの会話以前のアプリケーションにAI機能を展開している場合、DLLハイジャックは仮説ではなく、そのプラグインのインストール方法に起因する近い将来のリスクとしてリスク登録簿に記載されるべきです。

PolicyPakのDLLハイジャック保護がエンドポイントセキュリティスタックにどのように適合するかをご覧ください。

詳細を見る

よくある質問

共有する

もっと詳しく

著者について

Dirk Schrader

セキュリティ リサーチの VP

Dirk Schrader は Netwrix の Resident CISO (EMEA) であり、セキュリティ リサーチの VP です。CISSP (ISC²) および CISM (ISACA) の資格を持つ、IT セキュリティ分野で 25 年のベテランとして、サイバー脅威に取り組むための現代的なアプローチであるサイバー レジリエンスの推進に取り組んでいます。Dirk はキャリアの初期に技術およびサポートの役割からスタートし、その後、大規模な多国籍企業から小さなスタートアップまでで、営業、マーケティング、プロダクト マネジメントのポジションへと移行しながら、世界中のサイバーセキュリティ プロジェクトに携わってきました。彼はサイバー レジリエンスを実現するために、変更管理と脆弱性管理に取り組む必要性について、多数の記事を発表しています。