次の方法で共有


企業向け Windows 保護印刷モードの詳細情報

企業および開発者向けの Windows 保護印刷モードの基本については、「企業および開発者向けの Windows 保護印刷モード」を参照してください。

Windows 印刷システムは歴史的に頻繁に攻撃の標的となっており、過去 3 年間に Microsoft セキュリティ レスポンス センター (MSRC) に報告されたすべてのケースのうち、印刷バグが 9% を占めています。 プリンター管理、データ変換、その他多くのタスクを処理するスプーラー サービスは、Windows 印刷システムの中核です。 このプロセスは、Windows で最も高い権限レベルの 1 つである SYSTEM として実行されるため、非常に魅力的なターゲットとなります。 スプーラーは標準ユーザーにも広くアクセス可能であり、オンデマンドでサードパーティのコードを読み込みます。 これらのドライバーは、業界にドキュメント処理とプリンター通信の統一された標準がなかった時代に、幅広いプリンターをサポートするために歴史的に必要とされていました。 さまざまなメーカーのドライバーからなるこの広大なエコシステムにより、Windows はさまざまな古いプリンターとその 40 を超える ページ記述言語 (PDL)をサポートできます。 しかし、その複雑さにより、共通の基準を設定することが困難になります。 この複雑さにより、多くのセキュリティ上の課題が生じ、Microsoft がユーザーに対してより安全なオプションを提供する能力が制限されます。 この記事では、印刷スタックのセキュリティ保護に関連する課題について説明し、今日のユーザーに役立つ情報をいくつか紹介します。 また、 Microsoft Offensive Research & Security Engineering (MORSE) チームと Windows Print チームによる、Windows Printing の将来像に関する共同作業のプレビューも提供します。これは、サード パーティ ドライバーをロードせず、攻撃対象領域を減らして実行される、印刷スタックの IPP ベースの改訂版です。

ドライバーの問題

印刷ドライバーのセキュリティ モデルは、Windows 印刷スタックとサード パーティ ドライバーがそれぞれ、脆弱性の導入を回避しながら機能を提供し、セキュリティを保証する役割を果たす共有責任モデルに依存しています。 これは Windows の他のサブシステムと同様ですが、顧客はリモート コードを高度な権限を持つシステム プロセスにロードするときにプロセスがスムーズに進むことを望んでいるため、印刷は難しいシナリオです。

サードパーティからのコードをロードすると、セキュリティの観点からいくつかの課題が生じます。 意図したコードをロードしていることを確認する必要があるだけでなく、そのコードによってアプリケーションの動作が予期しない方法で変更される可能性もあります。 たとえば、ドライバーは、スプーラーまたは関連する印刷プロセスを完全に制御できるバグにつながる可能性のある複雑な解析ロジックをサポートしています。 ドライバーに脆弱性が発見された場合、Microsoft はドライバーの更新をサードパーティに依存します。 発行元が存在しなくなったり、古い製品がサポート対象外になったりすると、脆弱性に対処する明確な方法はありません。

共有責任モデルでサードパーティのドライバーに依存すると、Microsoft の俊敏性と顧客保護のオプションが制限されます。 当社は常に最先端の新しいセキュリティ保護技術を採用していますが、サードパーティのコードを読み込む際にそれらを均一に導入することはできません。

互換性

プリンタ ドライバに関する課題の 1 つは、その古さです。 多くのプリンタ ドライバは数十年前のものであり、Control Flow Guard (CFG)、Control Flow Enforcement Technology (CET)、Arbitrary Code Guard (ACG) などの最新のセキュリティ軽減策や、Microsoft が長年にわたって実装してきた他の多くの保護機能と互換性がありません。 これらの保護は多くの場合「すべてまたはなし」であり、保護を有効にするには、参加するすべてのバイナリが互換性を保つための手順を実行する必要があることを意味します。 すべての印刷メーカーがこれらのドライバーを更新するために必要な手順を踏んでいるわけではないため、印刷サービスは現在、これらの最新のエクスプロイト緩和策の恩恵を受けていません。 脆弱性が発見された場合、攻撃者がそれを悪用して成功する可能性が高くなります。

過剰な権限

Windows 印刷スタックは、20 年以上前のオリジナル設計の多くの側面を維持しています。 印刷スプーラーは、Windows の標準の管理者アカウントよりも強力な特別な権限を持つ SYSTEM として実行されます。 スプーラーにロードされたドライバー (サードパーティのドライバーを含む) は、基本的なドキュメントの印刷とユーザー要求の処理のためにこの特権レベルで実行されます。 スプーラーは、受信するすべてのユーザー要求に対して、そのタスクに適切なアクセス レベルを決定する必要がありますが、これは困難な場合があります。

スプーラーがこれらの権限を維持する理由の 1 つは、下位互換性に関する懸念のためです。 Windows では 30 年にわたって作成された何千ものドライバーが使用されており、ユーザーに対するすべての潜在的なリスクを特定することは困難です。

理想的な解決策は、ドライバーを完全に削除し、スプーラーを最小権限のセキュリティ モデルに移行することです。 一部の操作では SYSTEM レベルの権限が必要になる場合がありますが、ほとんどの場合は必要ありません。 Microsoft で頻繁に直面する課題は、あらゆるソリューションにおいて顧客の互換性要件を考慮する必要があることです。 このニーズとセキュリティを向上させたいという要望のバランスを取るのは難しい作業です。 幸いなことに、私たちには解決策があると思います。

IPP の基礎

IPP は HTTP ベースのプロトコルであり、HTTP から期待される多くの認証方法をサポートしています。 各 IPP 要求は HTTP POST メッセージであり、プリンターは ipps://printer.example.com/ipp/print などの URI を使用して識別されます。 IPP は、プリンタに期待される次のようなすべての 一般的な操作 をサポートしています。

  • Create-Job: 新しい印刷ジョブを作成する

  • Send-Document: 印刷ジョブにドキュメントを追加する

  • 印刷ジョブ: 1 つのドキュメントで新しい印刷ジョブを作成します

  • Get-Printer-Attributes: プリンターのステータスと機能を取得する

  • Get-Jobs: キューに入れられたジョブのリストを取得する

  • Get-Job-Attributes: ジョブのステータスとオプションを取得する

  • Cancel-Job: キューに入れられたジョブをキャンセルする

ドライバーレス印刷では、PWG ラスターや PDF などの公開標準に基づく限られた数の PDL がサポートされます。 これにより、オペレーティング システムが変換のために処理する必要がある形式の固有数が制限され、コードが大幅に簡素化されます。 クライアント側レンダリングは、プリンターに送信される最終ドキュメントを生成するために使用されます。

PSA により、プリンター OEM および IHV は、特定のニーズに合わせて既存の IPP サポートを拡張できます。 すべてのプリンターが同じ機能と構成オプションをサポートしているわけではありません。 PSA を使用すると、ユーザーが期待するエクスペリエンスを損なうことなく、カスタマイズされたユーザー エクスペリエンスを実現できます。

ポイントアンドプリント

ポイント アンド プリント は、ユーザーがドライバーを提供せずにリモート プリンターに接続できるようにする機能であり、必要なドライバーはすべてクライアントにインストールされています。 ポイント アンド プリントは IPP で引き続き使用できますが、動作は異なります。  ドライバーをインストールする必要はなくなりましたが、プリンターをセットアップするにはいくつかの基本的な設定が必要です。 このプロセスは IPP では次のように機能します。

  1. WindowsクライアントとサーバーはRPC経由で接続を確立します

  2. サーバーとクライアントの両方が受信トレイのMicrosoft IPPドライバーを使用します。

  3. サーバーはIPPを使用してプリンタと通信します

  4. PSAがインストールされている(利用可能な場合)

Windows からの新しいモダンで安全な印刷エクスペリエンス

セキュリティ

現在、Windows の IPP ベースの印刷では、サードパーティのドライバーは不要です。 IPP はトランスポート暗号化をサポートしており、サポートされる PDL の数が限られているため、解析の複雑さが大幅に軽減されます。 これは、ドライバーの使用を必要とするモデルに比べて大きな改善です。

現在の Windows の IPP 印刷は、セキュリティの観点からすでに大きな前進であり、ユーザーには可能な限り切り替えることをお勧めします。 また、管理者には、このアクションを全社的に優先させることをお勧めします。

Windows 保護印刷モードでのスプーラーのセキュリティ

Windows 保護印刷モードは、 Mopria 認定プリンター のみがサポートされる既存の IPP 印刷スタック上に構築され、サードパーティ ドライバーを読み込む機能が無効になります。 こうすることで、Windows の印刷セキュリティを大幅に向上させることができます。これは、他の方法では実現できなかったことです。 私たちの目標は、最終的に最も安全なデフォルト構成を提供し、ユーザーがプリンターに互換性がないと判断した場合、いつでも従来の(ドライバーベースの)印刷に戻すことができる柔軟性を提供することです。 Windows 保護印刷モードを使用するには、プリンターで IPP が有効になっていることを確認してください。

ユーザーが Windows 保護印刷モードを有効にすると、通常のスプーラ操作は、Windows 保護印刷モードの改善を実装する新しいスプーラ プロセスに延期されます。 いくつかの変更点を見てみましょう。

制限された安全な印刷設定

Windows の保護された印刷モードでは、多くの従来の構成は無効になります。 Windows に対する一般的な攻撃では、プリンタ ポート モニタがダイナミック リンク ライブラリ (DLL) になる可能性があるという事実が悪用され、攻撃者はこれを悪用して悪意のあるコードをロードします。 攻撃者はシンボリック リンクを使用してスプーラーを騙し、悪意のあるコードをロードさせることもできますが、これは不可能になりました。 IPP を使用する場合にのみ意味のある値に構成を制限するように更新されたレガシー API が多数あります。 これにより、攻撃者がスプーラーを使用してシステム上のファイルを変更する機会が制限されます。

モジュールのブロック

モジュールの読み込みを許可する API は、新しいモジュールの読み込みを防止するように変更されます。 たとえば、AddPrintProviderW やその他の呼び出しにより、悪意のある可能性のあるモジュールが読み込まれる可能性があります。  また、IPP に必要な Microsoft 署名バイナリのみがロードされるように制限を適用します。

ユーザーごとの XPS レンダリング

Windows 保護印刷モードでは、XPS レンダリングは SYSTEM ではなくユーザーとして実行されます。 今日の Windows のほとんどの印刷ジョブには XPS 変換が含まれており、このタスクを処理するプロセス (PrintFilterPipelineSVC) が多くのメモリ破損の脆弱性の原因となっています。 他の問題と同様に、このプロセスをユーザーとして実行することで、これらのバグの影響は最小限に抑えられます。

一般的なスプーラタスクの権限を低くする

ドライバーを削除すると、スプーラー プロセスによって実行される一般的なタスクを、ユーザーとして実行されるプロセスに移動することもできます。 これらのプロセスにメモリ破損の脆弱性がある場合、その影響はユーザーのみが実行できるアクションに限定されます。

新しいスプーラー ワーカー プロセスには、SeTcbPrivilege、SeAssignPrimaryTokenPrivilege などの多くの特権を削除し、SYSTEM IL で実行されなくなる新しい制限付きトークンがあります。

バイナリ緩和策

サードパーティのバイナリを削除することで、Microsoft が長年にわたって投資してきたバイナリ軽減策の多くを有効にできるようになりました。 Windows 保護印刷モードのプロセスは、多くの新しいバイナリ軽減策を使用して実行されます。 特に重要な機能には次のものがあります。

制御フロー強制テクノロジー (CFGCET) – リターン指向プログラミング (ROP) ベースの攻撃を軽減するのに役立つハードウェア ベースの軽減策。

子プロセスの作成が無効 – 子プロセスの作成がブロックされます。 これにより、攻撃者がスプーラー内でコードを実行できた場合でも、新しいプロセスが生成されなくなります。

リダイレクト ガード - 印刷スプーラーをターゲットとする一般的なパス リダイレクト攻撃の多くを防ぎます。

任意コードガード - プロセス内での動的なコード生成を防止します。

これらの保護により、脆弱性が発見された場合でも、それを悪用することがより困難になります。

Windows 保護印刷モードによるポイント アンド プリント

前述のように、ポイント アンド プリントでは通常、ドライバーの読み込みと IPP プリンターの構成が可能になります。 ユーザーの中には IPP プリンターのみの環境を使用している人もいるかもしれませんが、悪意のある攻撃者がプリンターになりすまして、ユーザーを騙してドライバーをインストールさせる可能性があります。 Windows の保護された印刷モードでは、ポイント アンド プリントがサードパーティのドライバーをインストールするのを防ぎ、このリスクを軽減します。