wakatonoの戯れメモ

はてなダイアリーから引っ越してきました。

PrintNightmareめんどくせえ…

Print Nightmare(CVE-2021-34527)、修正プログラムがまだ出ておらず、Workaroundだけが出てる状態だけど(2021年7月7日 1:26時点)、この2つあるWorkaroundのうちの1つが一見面倒に見えて、1つがお手軽だけどいろいろと大変なことになる、という話し。

追記:修正公開されたようです(2021年7月7日 10:00時点の情報)。が、こんだけ迅速だと地雷埋まってないか心配。

Workaround自体は、以下のページに記述されている。

msrc.microsoft.com

Workaroundは2つ。Print Spoolerサービスを停止するか、ローカルポリシーを変更するか~Print Spoolerサービス停止は大いなる罠~

Print Spoolerサービスの停止はものすごい罠で、「Print Spoolerサービスを停止する=ローカルにつながってるプリンタがリモートから見えなくなる」のは正しいんだが、ローカルのプリンタも見えなくなる。それもリアルなプリンタだけではなく、仮想プリンタ(例:Microsoft Print to PDFとかMicrosoft XPS writeとか)も見えなくなる

とはいえ、仮想プリンタが見えないだけならば、WordとかExcelとかPowerPointの「保存する」で、「PDF形式」で保存すりゃいいんじゃね?と思うわけだが、これが大いなる罠だった(一部の環境の人にとって)。

  • Print Spooler停止→WordとかでPDF保存出来ない(まじか)

Print Spoolerを停止したら、保存→PDF形式を指定してファイル保存できないと嘆いていた友人A。一方で、Print Spoolerを停止してもPDF形式を指定してファイル保存できるオレ。話を聞くと、にわかには信じがたい事実が判明してくる…。

検証開始~環境の差異はMicrosoft Officeのバージョンとアドオン有無

基本は環境の差異の確認なので、確認してみたら、わりかしあっさり出てきた(もっと面倒だと思ってた)。

  • オレが使ってるOffice:Microsoft Office Professional Plus 2019
  • 友人Aが使ってるOffice:Microsoft 365 apps for enterpriseで使えるOfficeアプリ。どうもAdobe Acrobatも入ってるっぽく、OfficeのAcrobatアドオンも含まれているっぽい。

Microsoft 365で使えるOfficeのアプリのせいか、Acrobatアドオンが悪さしているのかわからないが、友人Aの環境では、Microsoft 365 apps for enterpriseで使えるOfficeアプリケーションは(少なくともWordとExcelは)、PDFに印刷もPDFに保存もPDFにエクスポートも「全部同じコンポーネント(=印刷)を通るっぽく、そりゃ使えないわ、という結論に。

Acrobatアドオンが悪さをしているのか、Microsoft 365 apps for enterpriseで使えるOfficeで挙動が変わったのかわからないが、PDF作成時の使用コンポーネントが統一されたっぽく、それでPDF作成が出来ない、と考えられる。

ちなみにMicrosoft Office Professional Plus 2019では、以下のような感じ。

よろしい。ならばローカルポリシーを変更だ

ということで、ローカルポリシーを変更する方法を提示*1

mmc.exeを管理者権限で実行
→「ローカルコンピューターポリシー」のスナップイン追加
ローカルコンピューターポリシー
→コンピューターの構成
→管理用テンプレート
→プリンター
と進んで、右に出てきた項目から「印刷スプーラーにクライアント接続の受け入れを許可する」を選択して右クリック、編集→「無効」を選んで「適用」を押す。
→Print Spooler を再起動

文章にすると長いが、実際にやってしまえばすぐに終わる*2

以下が、「印刷スプーラーにクライアント接続の受け入れを許可する」まで選択して、右クリックでメニューまで出した画面。

f:id:wakatono:20210707014958p:plain

mmc.exe実行→スナップイン追加→該当ポリシー選択まですませた画面

で、編集を選択すると、以下のような画面が表示される。

f:id:wakatono:20210707015112p:plain

ポリシー編集画面

オレの場合は、すでに「無効」にした後なのでこうなっているが、何もしてないと「未構成」になっている。ここは潔く「無効」にすることに。

ポリシーを変更したら、忘れずPrint Spoolerを再起動だ。お兄さんとの約束だぞ!

ここまでやってもPrint Spoolerサービスを再起動しないと無駄なので、サービス再起動をしよう。Print Spoolerを停止できる人ならば再起動もできるとは思うが、念のため画面は以下に。

f:id:wakatono:20210707015638p:plain

サービス管理画面

上記はmmc.exeを実行→「サービス」スナップインを追加→サービス一覧表示→Print Spooler選択→右クリックまで済ませた画面。

ここで「再起動」を選んで左クリックでことたりる。

むすび~サービス停止は罠が多い&慣れればポリシーいじるほうがラクだが、いじったことを忘れないように

今回、Print Spoolerサービスの停止が何気に罠が多いという知見と、ポリシーいじるのが意外にラクだという知見(の確認)の両方を得た(後者はドメイン環境だと当たり前なんだけど、あまり個人環境では使わないんだよね)。

ただ、あくまでこれはWorkaroundなので、修正プログラムが公開されたら早めの適用を。そして修正プログラムを適用したら、ポリシーをもとに戻すことも考慮するように*3。でないと、このポリシー変更でまた無用なトラブルを引き起こす、ということも考えられるので…。

 

 

 

 

*1:Print Spoolerを停止するのに比べれば手間はかかるが、やれば数分で終わる

*2:オレ自身は、mmc.exeを叩いてイベントログ見たりサービス一覧みたりというのをわりかししょっちゅうやるので、すぐに終わると錯覚しているだけかもしれんw

*3:リモートから印刷などさせないという話だったらそれでOK