Aug 10, 2021

Windows Print Spooler脆弱性情報「PrintNightmare」(CVE-2021-34527)

By タニウム合同会社, ディテクターテクニカルアカウントマネージメント, 坂本 祐一

6月29日、Print Spoolerサービスを標的とした2つのPoC(概念実証)エクスプロイトのコードが公開されました。1つ目の脆弱性はCVE-2021-1675に関連するもので、マイクロソフト社による6月の月例パッチを適用することで緩和されます。2つ目の脆弱性はCVE-2021-34527として採番された新しい脆弱性です。マイクロソフト社からは対応策について各種案内が出ておりますが、タニウムを利用して効率的に可視化・制御するアプローチについて触れたいと思います。
 
この記事を書いている時点では、マイクロソフト社は2021年7月6日にCVE-2021-34527を改修するパッチをリリースしていますが、影響を受けるすべてのOSバージョンには対応していません。また一部の不具合情報も報告されており、適用する前に確認する必要があります。
 
しかしながらマイクロソフト社をはじめとするサイバーセキュリティ関連組織は、できるだけ早くパッチを当て、推奨される設定を適用するよう勧告しています。Print Spoolerサービスを無効にすることは、脆弱性に対する保護を提供できる緩和策ですが、場合によっては機能を著しく低下させる可能性があります。マイクロソフト社は、CVE-2021-34527のセキュリティアップデートガイドを掲載し、回避策のガイダンスを示しています。
 
またPoCコードは、MS-PARプロトコルを利用して作成されており、PythonおよびC#で公開されているほか、注目度の高いエクスプロイトツールmimikatzにも含まれています。ほとんどのワークステーションやサーバーのWindowsシステムではPrint Spoolerサービスが動作しているため、この問題への対処が急がれます。
 
 
脆弱性影響フローチャート
カーネギーメロン大学CERTコーディネーションセンターは、PrintNightmareの悪用可能性と、さまざまなプラットフォーム構成への依存性を示すためのフローチャートを作成しており影響範囲を知る上で参考になります。

https://www.kb.cert.org/vuls/id/383432

 
推奨されている緩和策
最も適した解決方法は、マイクロソフト社のパッチを適用して脆弱性を排除することになりますが、パッチがリリースされていない・適用できない場合、いくつかの緩和策が提示されています。以下のHPにある通り、1台1台PowerShellを用いて緩和策を適用するか、AD環境にあればグループポリシーを変更することになります。
 
マイクロソフト社のカスタマーガイダンス
https://msrc.microsoft.com/update-guide/vulnerability/CVE-2021-34527

1.プリントスプーラーサービスが動作しているかどうかを確認する
2-1. プリントスプーラーサービスを無効にする
2-2. グループポリシーで受信リモートプリントを無効にする

タニウムを使用してこれらの設定状態を確認し、マイクロソフト社のガイダンスに従うように更新することができます。またタニウムをご利用中のお客様は、組織内の影響範囲を一括で特定した上で緩和策も適用可能です。
 
 
タニウムによる影響範囲の特定
Tanium Interactをご利用中の方は、以下のQuestion文を実行することで組織内の端末影響範囲を特定できます。既にパッチがリリースされていることを考慮した上で、主にWindows Server系オペレーティングシステムを対象としたものをご用意しています。

Windows 7 & Windows Server 2008 R2
Get Computer Name and Operating System and File Version[“%windir%system32spoolsv.exe”] from all machines with ( Operating System Generation matches Windows 7|Windows Server 2008 R2 and File Version[“%windir%system32spoolsv.exe”] < 6.1.7601.25633 )

Windows 8.1 & Windows Server 2012 R2
Get Computer Name and Operating System and File Version[“%windir%system32spoolsv.exe”] from all machines with ( Operating System Generation matches Windows 8.1|Windows Server 2012 R2 and File Version[“%windir%system32spoolsv.exe”] < 6.3.9600.20046 )

Windows 10 version 1607 & Windows Server 2016
Get Computer Name and Operating System and Windows OS Release ID and File Version[“%windir%system32spoolsv.exe”] from all machines with ( Windows OS Release ID equals 1607 and File Version[%windir%system32spoolsv.exe] < 10.0.14393.4470 )

Windows 10 version 1809, Server 2019
Get Computer Name and Operating System and Windows OS Release ID and File Version[“%windir%system32spoolsv.exe”] from all machines with ( Windows OS Release ID equals 1809 and File Version[%windir%system32spoolsv.exe] < 10.0.17763.2029 )
 
Tanium Complyをご利用中の方は、CVEに基づくレポートによって影響範囲を特定することができます。CVE-2021-34527は、Tanium Vulnerability Library (TVL)の最新アップデートを含む脆弱性スキャンによって特定できます。

 
タニウムによるPrint Spoolerサービスの無効化
1つ目は Print Spoolerサービスを無効にすることですが、緩和策の適用については、お客様組織における本機能と要件を評価してください。この方法がお客様の組織にとって適切な緩和策かどうかについては、検討が必要です。
その上でこの緩和策を実行するには、Tanium Interactで次のような対象の特定を行います。
 
Get Service Details contains Print Spooler from all machines with ( Running Service equals Print Spooler and custom tags contains )
※ は事前に対象としたい端末に付与しておきます。
 
これによりサービスとして Print Sploolerが実行されている端末かつ事前に対象として選定した端末を洗い出すことができます。また再起動後にサービスが起動するかも確認できます。

対象にパッケージ:Service Start Mode – Set to Disabled を適用することで、次回スタートアップ時にサービスの起動が抑制されます。


サービスを止めたい場合は、パッケージ:Stop Service を適用することでサービスを止めることもできます。
 
 
タニウムによる受信リモートプリントの無効化
2つ目は Tanium Enforce を利用したポリシーの適用になります。こちらもこの方法がお客様の組織にとって適切な緩和策かどうかについては、検討が必要した上でご利用ください。

以下は Windowsのポリシーによって制限できるプリント機能を Tanium Enforceで実装する方法となります。
1. Tanium Enforce メニューから Policies を選択し、Machines をクリックして、「Create Policy」をクリックします。
2. ポリシーの名前と説明を入力し、ポリシータイプのオプションからマシン管理テンプレートを選択します。
3. Configure Policy Settingsセクションで、Printersカテゴリを選択し、「印刷スプーラーにクライアント接続の受け入れを許可する」の設定を確認します。 これを無効に設定し、ポリシーに追加をクリックします。
4. 「ポイント アンド プリントの実装 – 許可されたサーバー」を選択します。これを「有効」に設定し、「セキュリティプロンプト」のオプションを、新しい接続のためのドライバーのインストールと更新の両方について「警告と昇格のプロンプトを表示する」に設定します。

オプション:さらにコントロールしたい場合は、このGPOに既知のプリントサーバーを含めて、それらのサーバーに対してのみポイント&プリントを許可することができます。マイクロソフト社のガイダンスに従ってください。

https://docs.microsoft.com/en-us/troubleshoot/windows-client/group-policy/point-print-restrictions-policies-ignored#how-to-permit-users-to-connect-only-to-specific-print-servers-that-you-trust

5. 「作成」をクリックします。

ポリシーを作成した後は、対象となるエンドポイントのグループにポリシーを適用する必要があります。ターゲットは、個々のコンピュータやコンピュータグループなどに基づいて作成できます。

 
タニウムによるパッチの適用
マイクロソフト社は2021年7月6日、一部のOSに対してパッチをリリースしました。こちらについては適用することによるデメリットもあるため、マイクロソフト社の公式ページを確認する必要があります。

https://msrc.microsoft.com/update-guide/vulnerability/CVE-2021-34527

マイクロソフト社およびCISA社が報告しているように、CVE-2021-34527に対するマイクロソフト社のアップデートは、「Point and Print NoWarningNoElevationOnInstall」が0以外の値に設定している端末では効果的な防止とはなりません。推奨される対策は、このパッチを適用し、Point and Print のセキュリティプロンプトや、プリンタードライバーのインストール権限を管理者に限定すること、プリントサーバーとしての機能を必要としないシステムでの受信リモートプリントを無効にすることになります。

パッチの適用は Tanium Patchを利用することで端末を特定して適用まで実施することが出来ます。


Windows Print Spooler脆弱性情報「PrintNightmare」(CVE-2021-34527)は影響範囲の大きな脆弱性
であり、さまざまなPOCコードが公開されている観点から軽視できない存在です。問題を根本的に改善するパッチも7月初旬時点ではリリースされておらず、各組織は影響範囲と機能の必要性を鑑みて対策を講じる必要があります。まず行うべきは可視化であり、その後可視化した状況に応じてどのように緩和策を取るか検討する必要があります。タニウムをご利用のお客様は、これらのプロセスをご紹介したように非常に容易なオペレーションで実現することができます。

 

※このBlogは、こちらのBlogを元に作成しています。


ブログ記事に関してご質問やご要望がございましたらこちらからお問い合わせください。