セキュリティ研究者が、WindowsのPlug and Play機能を悪用し、脆弱または安全性の低いベンダーソフトウェアをWindowsにインストールさせてSYSTEM権限を取得する新たな攻撃手法「Plug and Pwn」を公表しました。
この研究は、セキュリティ研究者のAlejandro Hernando氏とBorja Martínez氏によってDEF CON 34で発表されたもので、Windowsが新たに接続されたハードウェアを自動的に識別し、対応するドライバーパッケージを検索して、NT AUTHORITY\SYSTEMアカウントとしてベンダーソフトウェアをインストールする仕組みを悪用しています。
研究者らは、ソフトウェアでUSBデバイスをエミュレートすることで、悪用可能なコンポーネントや脆弱性を含む署名済みのベンダーパッケージをWindowsに強制的にインストールさせ、SYSTEM権限を取得できることを突き止めました。
実演された攻撃の中には、ユーザー操作もログインユーザーも一切不要なものがある一方、標的のコンピューターに物理的なUSBハードウェアを接続することなく、RDP経由でリモートから実行できるものもあります。詳細はplugandpwn.comで公開されています。
WindowsのPlug and Playを悪用する
Windowsにはco-installer(コインストーラー)と呼ばれる機能があり、新しいUSBデバイスがコンピューターに挿入されると、ベンダーのソフトウェアやドライバーを自動的にダウンロードしてインストールします。
2021年、BleepingComputerは、この機能がRazer Synapseの脆弱性と組み合わせて悪用され、Razer製のマウスやキーボードを挿入するだけで標準ユーザーがSYSTEM権限を取得できてしまう問題を報じました。
Razerデバイスが接続されると、WindowsはRazer Synapseのインストーラーを自動的にダウンロードし、SYSTEM権限で起動していました。このインストーラーに存在した欠陥により、標準ユーザーがインストール画面からPowerShellを起動できてしまい、そのシェルがインストーラーの権限を継承してしまう問題がありました。
BleepingComputerは当時この脆弱性を検証し、約2分でSYSTEM権限を取得できることを確認しています。
当時、脆弱性アナリストのWill Dormann氏は、WindowsのPlug and Play経由で自動インストールされる他のソフトウェアにも同様の脆弱性が存在する可能性が高いと警告していました。
Hernando氏はBleepingComputerに対し、Plug and Pwnも同系統の攻撃に属するものの、今回の研究はWindowsのデバイスインストール経路そのものにより焦点を当てていると説明しています。
「Razerのバグも同じ系統です。違いは、私たちが特定ベンダーのインストーラーではなく、インストール経路自体を狙った点です」とHernando氏はBleepingComputerに語りました。
「私たちの攻撃チェーンの中には、クリック操作もログインセッションも不要なものがあり、そのうちの一つはハードウェアを一切使わずRDP経由で動作します」
研究者らによると、根本的な問題は、Windowsが新しいハードウェアを検知した際に、関連する署名済みパッケージを自動的に取得し、ベンダー提供のコンポーネントをSYSTEM権限で実行してしまう可能性があることです。
この特権的なインストール経路には、コインストーラー、サービス、サポート用実行ファイル、ドライバーなどが含まれますが、OSからUACプロンプトは一切表示されません。
偽装USBデバイスからリモートRDP攻撃へ
研究者らはBleepingComputerに対し、USBデバイスをエミュレートするために、CynthionおよびGreatFETハードウェアを接続した小型Linuxコンピューター上でFaceDancerを使用したと説明しました。
FaceDancerはUSBデバイスをエミュレートするためのソフトウェアフレームワークで、研究者はコンピューターが接続デバイスを識別する際に用いるディスクリプタ、インターフェース、デバイスクラス、エンドポイントを自由に定義できます。
FaceDancerを動作させたハードウェアをコンピューターに接続すると、OSはあたかも特定のUSBデバイスが挿入されたかのように振る舞います。
FaceDancerを使うことで、研究者らは自分たちのハードウェアをWindowsに対して特定のUSBデバイスとして見せかけることができ、OSにエミュレートされたハードウェアを認識させて、対応するベンダードライバーパッケージを検索・インストールさせることができました。
一部の攻撃チェーンでは、エミュレートしたデバイスを一度切断してから別のデバイスとして再度出現させる必要もあります。
「私たちの攻撃チェーンのいくつかは、デバイスをコンポジット(複合)デバイスとして見せかけることに依存しています。そうすることでWindowsはusbccgp.sysを読み込み、各インターフェースを個別に列挙するため、標準のインボックスドライバーではなくベンダーパッケージにマッチするようになります」とHernando氏はBleepingComputerに説明しました。
「また、必要に応じてデバイスの再列挙を行う必要もあります。デバイスを一旦切断し、別のIDとして再接続するのです」
物理攻撃によるゼロクリック実演では、研究者らはSierra WirelessおよびSony FeliCaのインストールパッケージの挙動を悪用しました。
攻撃はまずSierra Wirelessデバイスへのなりすましから始まり、Windowsにコンピューターのdns設定を変更可能なソフトウェアをインストールさせます。
次に研究者らはSony FeliCaデバイスへのなりすましを行い、これによりWindowsは、暗号化されていない接続経由でファイルをダウンロードする追加のSonyソフトウェアをインストールします。
システムのDNS設定を制御下に置くことで、研究者らはそのダウンロードを自分たちが管理するサーバーへリダイレクトさせ、Sonyソフトウェアの脆弱性を悪用してSYSTEM権限で悪意あるファイルをシステムに配置できます。
最後に、再びSierraデバイスへのなりすましを行うことで、Windowsに悪意あるファイルを読み込ませ、攻撃者はSYSTEM権限でリバースシェルを開くことができます。
研究者らはこの攻撃チェーンを、誰もログインしていない完全にアップデート済みのWindows 11コンピューターに対して実演し、攻撃全体は約5分で完了すると述べています。

この攻撃が小型の携帯可能なデバイスで実行できるかを尋ねたところ、Hernando氏は、自分たちの研究用ハードウェアはすでに持ち運び可能な程度にコンパクトであり、理論上はUSBガジェットモードで動作するRaspberry Piでも同様の攻撃が可能なはずだと述べました。
ただし、Flipper Zeroでは現時点でこのFaceDancer攻撃を実行できないとも説明しています。
「Flipper Zeroでは無理です。FaceDancer用のバックエンドが存在せず、そもそもこのフレームワーク自体がFlipper Zero上で動作しません」とHernando氏は述べています。
「Flipper ZeroのBadUSBモードはHID用途には十分ですが、任意のコンポジットディスクリプタや再列挙を行うには、ファームウェアを独自に開発する必要があるでしょう」
研究者らはまた、物理的なハードウェアエミュレーションを一切必要としない「NoPlug & Pwn」と呼ぶ手法も実演しました。
この攻撃は、ユーザーのローカルコンピューターに接続されたUSBデバイスをリモートのWindowsセッション内で利用可能にする機能である、RDPのUSBリダイレクション機能を悪用します。
実デバイスをリダイレクトする代わりに、研究者らはRDP接続時にこのUSBリダイレクション機能経由で特定のUSBディスクリプタを送信するPython製のRDPクライアントを作成しました。
リモートのWindowsホスト側は、この偽のディスクリプタをゲストコンピューターに接続された正規のUSBデバイスとして扱い、ホスト上に対応するPlug and Playデバイスを作成し、対応するドライバーとベンダーソフトウェアをインストールさせてしまいます。
研究者らの実演では、Intel RealSenseカメラへのなりすましを行いました。このカメラ用のWindows Updateパッケージには、DLLハイジャッキングによって悪用しSYSTEM権限を取得できるコインストーラーが含まれています。
「サーバー側のUSBハブドライバーが私たちの偽装デバイスを列挙すると、Windows PnPは物理実演の時と全く同じ動作をします。ハードウェアIDをマッチさせ、SYSTEM権限でドライバーをインストールするのです」と研究者らはPlug and Pwnのサイトで説明しています。
このRDP攻撃は、USBリダイレクションが有効になっているシステムでのみ機能しますが、Hernando氏によれば、これは仮想デスクトップ環境ではよくある設定だといいます。
コインストーラーの無効化は有効だが、Plug and Pwnを完全には防げない
Will Dormann氏は、この種の攻撃を懸念するWindows管理者に対し、デバイスインストール時にドライバーパッケージがコインストーラーを実行するのを防ぐレジストリ値「DisableCoInstallers」を有効化するよう提案しています。
設定するには、レジストリエディターを開き、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Device Installerレジストリキーに移動します。
そのキーの下に、DisableCoInstallersという名前のDWORD-32値を追加し、以下のように値を1に設定します。
この対策でPlug and Pwnを実質的に防げるかとBleepingComputerが尋ねたところ、Hernando氏は、Sony FeliCa攻撃やIntel RealSenseを使ったRDP攻撃など、実演された攻撃の一部は妨げられると答えました。
しかし、根本的な攻撃対象領域が解消されるわけではないとも指摘しています。
「効果はありますし、私たちが示した攻撃の一部は成立しなくなります」とHernando氏はBleepingComputerに語りました。
「ただし、この種の攻撃全体を止められるわけではありません。PnPの列挙処理、Windows Updateの解決処理、ドライバーのステージング、INF処理、そしてINFによってインストールされるサービスは手つかずのままです」
研究者らはこれを、コインストーラーではなくINFファイル経由でインストールされるAtherosのドライバーサービスの脆弱性(CVE-2019-10617)を悪用する、WacomとAtherosのパッケージを使った別の攻撃で実証しています。
Hernando氏は、機密性の高いシステムを持つ組織に対しては、「DisableCoInstallers」を追加のデバイスブロック対策と組み合わせて使用することを推奨しています。
「機密性の高い環境では、デバイスインストール制限やハードウェアIDのアローリストと組み合わせることをお勧めします。また、必要のないRDP・VDIホストではPnPデバイスリダイレクション(`fDisablePNPRedir`)を無効化してください」とHernando氏はBleepingComputerに語りました。
研究者らは、実演したすべての攻撃シナリオを個別のベンダーに新規の脆弱性として報告したわけではないとしています。その多くは単独では成立するセキュリティ上の欠陥ではなく、他の機能と組み合わさって初めて悪用可能になるためだと説明しています。
攻撃者が有効な認証情報を手にした後、その行動のうち37%しかブロックされていない
全体的な防御スコアだけでは、初期侵入後に何が起きているかが見えなくなってしまいます。攻撃者が有効な認証情報を使い始めると、防御の成功率は急激に低下します。
The Blue Report 2026は、顧客の本番環境で実施された3億3,800万件のシミュレーションに基づき、防御力を手法ごとに測定しています。