メンテナンスのお知らせ(11/30)

KB5132061適用後に署名済みPowerShellスクリプトが「NotSigned」になる原因と対処法

[PR]記事内のアフィリエイトリンクから収入を得る場合があります
  • URLをコピーしました!

Microsoftは先日、2026年11月の月例更新プログラムセキュリティとして、Windows 11用の累積更新プログラム「KB5132061」を配信しました。

更新プログラムはセキュリティ修正やその他改善多数含んでいますが、そのなかで、あまり話題になっていないものの、PowerShellスクリプトを日常的に使っているユーザーや管理者が影響を受ける可能性がある変更が1つ含まれています。

目次

何が変わったのか

KB5132061のリリースノートによると、PowerShellスクリプトに署名するときと署名を検証するときの、テキストエンコーディングのチェックが厳しくなりました。変更の目的はセキュリティの強化ですが、環境によっては対応が必要になります(先日リリースされたPowerShell 7.7とは関係ありません)。

[Windows PowerShell] This update strengthens security for PowerShell script signing and signature verification by introducing stricter encoding validation. As a result, scripts containing invalid UTF-8 encoding might fail signature validation, even if they were previously accepted. To resolve this issue, review the affected scripts, save them using valid UTF-8 encoding with a byte order mark (BOM), and sign them again. For further guidance, see Encoding Guidance for Signed PowerShell Scripts.

[Windows PowerShell] この更新では、エンコーディングの検証を厳しくして、PowerShellスクリプトの署名と署名検証のセキュリティを強化しました。そのため、無効なUTF-8エンコーディングを含むスクリプトは、以前は受け付けられていた場合でも、署名の検証に失敗することがあります。この問題を解決するには、影響を受けるスクリプトを確認し、正しいUTF-8エンコーディング(バイト順マーク(BOM)付き)で保存し直してから、もう一度署名してください。詳しくは「Encoding Guidance for Signed PowerShell Scripts」(署名付きPowerShellスクリプトのエンコーディングに関するガイダンス)をご覧ください。

これまで問題なく検証を通っていた古いスクリプトでも、エンコーディングに不正な部分があれば署名が拒否されるようになっています。

特に影響が大きいのは、壊れたUTF-8を含むスクリプトです。これまでのWindowsは、デコード時に不正な文字を別の文字に置き換えて処理を続けていました。今回の更新からは不正なUTF-8をはっきり拒否するので、同じスクリプトでも署名の検証に失敗します。

強化されたチェックにより、署名済みのはずのスクリプトにGet-AuthenticodeSignatureを実行すると、「NotSigned」と返ってるケースが発生します。また、問題のあるファイルにSet-AuthenticodeSignatureで署名し直そうとしてもエラーになる場合がでてきます。ここ数日で古いスクリプトが急に実行できなくなったなら、この変更が原因かもしれません。

Microsoftが示す対処法

Microsoftはすでに対処法をまとめたサポートドキュメントを公開しています。対処法の基本的な手順は、スクリプトを正しいUTF-8(BOM付き)で保存し直し、中身を確認したうえで、もう一度署名するというものです。

対象のスクリプトが多い場合に向けて、一括で処理できるPowerShell製の修復ツールも用意されています。このツールはファイルをスキャンしてエンコーディングの問題を探し、既存の署名を保ったまま修復を試みます。元のファイルを上書きしないので安心して試せますが、Microsoftはすべてのスクリプトを自動で直せるわけではないとも注意しています。

なお、この変更はWindows 11に限りません。Windows 10 Enterprise LTSC 2021や、Windows Server 2025を含む一部のWindows Serverも対象となっています。サーバーで署名付きスクリプトを運用している場合も、確認しておくと安心です。

まとめ

今回の変更は、不正なエンコーディングを見逃さないようにするためのセキュリティ強化で、長い目で見れば良い方向の変更です。ただ、昔から使っている署名済みスクリプトが突然動かなくなる可能性はあります。更新後に動作がおかしくなったら、まずスクリプトのエンコーディングを確認することをおすすめします。

[via Neowin]

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次