Microsoftは11月10日、公式サポート文書「Encoding Guidance for Signed PowerShell Scripts」を公開し、同月のWindows向けセキュリティ更新プログラムで導入したPowerShellスクリプトの署名検証に関する変更を説明した。

今回の変更はセキュリティ強化を目的としたもので、不正な文字エンコーディングを含むスクリプトの署名検証を厳格化する。これにより、従来は署名済みとして認識されていた一部のスクリプトが、更新後に未署名と判定される可能性がある。

  • 2026年11月のWindows向けセキュリティ更新プログラムにより、一部のPowerShellスクリプトで署名検証に失敗する可能性がある(出典:Microsoft)

    2026年11月のWindows向けセキュリティ更新プログラムにより、一部のPowerShellスクリプトで署名検証に失敗する可能性がある(出典:Microsoft)

署名検証の厳格化で一部スクリプトに影響、Shift-JISも対象になる可能性

更新プログラムのリリースノートによると、MicrosoftはPowerShellスクリプトの署名と署名検証におけるテキストエンコーディングの扱いを厳格化した。これにより、不正なUTF-8形式を含むスクリプトなどで、従来は正常に検証できていた署名が無効と判定される場合がある。

主な影響対象は、不正なUTF-8形式を含むスクリプトとされる。更新前のWindowsは、UTF-8の不正な文字列をデコードする際、一部の文字を別の文字に置き換えて処理し、署名検証を通過させる場合があった。しかし、今回の変更で不正なUTF-8を明示的に拒否する仕様となった。

また、Microsoftによると、BOMのないUTF-8形式のファイルや、Shift-JISなどの文字エンコーディングで保存されたファイルでも、文字コードの判定によって署名検証に失敗する場合がある。日本語環境で使用されるコードページ932も例示されている。

PowerShellコマンドを使用した具体例で説明すると、署名されたスクリプトに対してGet-AuthenticodeSignatureコマンドを実行すると、過去に署名済みであってもNotSignedと判定される可能性がある。また、問題のあるファイルにSet-AuthenticodeSignatureコマンドで署名を試みた場合も、エラーが発生することがある。

Microsoftによると、影響を受ける可能性があるのは、不正なUTF-8形式を含むスクリプトだけではない。BOMのないUTF-8形式のファイルがシステムのコードページに基づいて読み込まれる場合や、Shift-JISなどの文字エンコーディングで保存されたファイルがUTF-8と誤認識される場合にも、署名検証に失敗する可能性がある。同社は日本語環境で使用されるコードページ932も例示している。

Microsoftが修復ツールを公開、UTF-8への変換と再署名を推奨

Microsoftは11月10日、この問題への対処方法を説明するサポート文書を公開した。同社が推奨する方法は、スクリプトの内容を確認したうえで、正しいUTF-8エンコーディングを使用し、バイトオーダーマーク(BOM)を付けて保存し直すことだ。その後、スクリプトにあらためて署名する必要がある。

更新プログラムの適用後にPowerShellスクリプトの署名検証に失敗した場合、文字エンコーディングが原因となっている可能性がある。Microsoftは修復ツールのScanモードで問題の有無を確認し、必要に応じてファイルの修復やUTF-8形式への変換、再署名を行うよう案内している。

今回の変更はWindows 11だけに限定されない。Microsoftのサポート情報では、Windows 10 Enterprise LTSC 2021に加え、Windows Server 2025、2022、2019、2016も対象としている。

更新プログラムの適用後に古いPowerShellスクリプトが実行できなくなった場合、テキストエンコーディングと署名検証の問題が原因となっている可能性がある。管理者は対象ファイルを確認し、Microsoftが提示する方法で修復する必要がある。