はじめにスイス・アーミー・ナイフ」があなたを切るとき
2025年12月9日、マイクロソフト・セキュリティ・レスポンス・センター(MSRC)は、毎月恒例の「パッチ・チューズデー(Patch Tuesday)」において、重大な警告を発した。 Windows PowerShellに0-Dayの脆弱性として追跡される。 CVE-2025-54100.
を持っている。 CVSSスコア7.8(高)この脆弱性は、レガシーサーバーから最新のWindows 11ビルドまで、Windowsエコシステムの大部分に影響を及ぼす。PowerShellはOSファブリックに深く統合されているため、この欠陥は攻撃者に危険な "Living-off-the-Land"(LotL)の機会を提供し、信頼できるネイティブのシステムツールを使用して悪意のあるコードを実行することを可能にします。
あなたがサーバー・ファームを管理するシスアドであろうと、セキュリティ研究者であろうと、このパッチを無視するという選択肢はありません。このガイドでは、欠陥の技術的な内訳、公式のパッチマトリックス、スクリプトを安全に実行し続けるために必要なコードのリファクタリングについて説明します。

テクニカル・ディープ・ダイブCVE-2025-54100のメカニズム
この問題の深刻さを理解するには、根本的な弱点に目を向ける必要がある: CWE-77(コマンドで使用される特殊エレメントの不適切な無力化).
脆弱性の論理
核心的な問題は、Windows PowerShellがコマンドラインインタープリターに渡す前にユーザー入力をどのようにサニタイズするかにある。アプリケーションやスクリプトが、適切なフィルタリングを行わずに信頼できない入力を使用してPowerShellコマンドを構築すると、次のような問題が発生します。 コマンド・インジェクション.
攻撃シナリオ(概念実証)
免責事項:以下のコードは教育目的のみです。
ユーザー入力に基づいてログファイルを読み取るように設計された、正当な管理スクリプトを想像してみてください:
パワーシェル
# VULNERABLE PATTERN $UserInput = Read-Host "ログファイル名を入力してください"

入力は直接コマンド文字列に連結される。
Invoke-Expression "Get-Content C:⊖Logs⊖TP4TUserInput"`.
標準的なシナリオでは、ユーザーはapp.logを入力する。
しかし、攻撃者がパッチ未適用のシステム上でCVE-2025-54100を悪用すると、入力される可能性がある:
app.log; スタート-プロセス calc.exe
パーサーは、セミコロン(;)は、これを2つの異なるコマンドとして解釈する:
- ログを読む
Get-Content C:³³³³.log - ペイロードを実行する:
スタート-プロセス calc.exe(実際の攻撃では、ランサムウェアのダウンローダーやC2ビーコンとなる)。
攻撃のベクトル「ローカル」だが致命的
マイクロソフトはこれを「ローカル」攻撃ベクトルに分類している。これは、攻撃者が通常必要とすることを意味する:
- システムへの低レベルのアクセス、または
- ユーザーに悪意のあるファイルを実行するように仕向ける(ソーシャルエンジニアリング/フィッシング)。
いったん成功すれば、このインジェクションを利用して特権を昇格させたり、ネットワーク上を横方向に移動したりすることができる。

パッチマトリックス重要なアップデートの特定
マイクロソフト社は、緊急セキュリティ更新プログラムをリリースした。IT管理者は、以下のKBをWSUS、SCCM、または手動で直ちにダウンロードすることを優先してください。
| OSバージョン | 重大性 | クリティカルKBパッチID | デプロイメント・ノート |
|---|---|---|---|
| Windows Server 2025 | 高い | KB5072033 | 再起動が必要 |
| Windows 11 (24H2 / 25H2) | 高い | KB5074204 | 累積アップデート |
| ウィンドウズ・サーバー2022 | 高い | KB5074204 | 優先インストール |
| Windows Server 2019 | 高い | KB5074353 | – |
| ウィンドウズ 10 (22H2) | 高い | KB5071546 | セキュリティのみのアップデートが利用可能 |
| Windows Server 2012 R2 | ミディアム | KB5071544 | ESU(延長サポート)のみ |
重大な警告このパッチはPowerShellのコア・バイナリを変更するため、システムの再起動が必須です。サービスの中断を避けるため、メンテナンスウィンドウを適宜スケジュールしてください。
ガッチャ」:パッチ後の壊れたスクリプトの修正
セキュリティは通常、利便性を犠牲にするものだ。CVE-2025-54100のアップデート(具体的には KB5074204 そして KB5074353)は、ウェブ・リクエストに対してより厳格なセキュリティ・コントロールを導入している。
問題だ: Invoke-WebRequest 失敗例
パッチ適用後、オートメーション・スクリプトが以下のエラーで失敗することがあります:
"Internet Explorerエンジンが使用できないか、Internet Explorerの初回起動設定が完了していないため、応答内容を解析できません。"
これは、マイクロソフトがPowerShellとレガシーInternet Explorerの解析エンジンとの間のリンクを最終的に切断し、攻撃対象領域を縮小しているためである。
修正コードのリファクタリング
DOMの解析をIEに依存しないようにスクリプトを更新する必要があります。解決策は 基本的な構文解析 モードだ。
ブロークン・コード(レガシー)
パワーシェル
# これはIEエンジンに依存しているが、現在は制限または削除されている $response = Invoke-WebRequest -Uri ""ライト出力 $response.Content
セキュアコード(ベストプラクティス)
パワーシェル
# 速度、セキュリティ、互換性のために -UseBasicParsing スイッチを追加 $response = Invoke-WebRequest -Uri "" -UseBasicParsing Write-Output $response.Content
管理者のためのヒント
IDE(VS Code / ISE)の正規表現検索を使用して、スクリプトリポジトリをスキャンします:
- 探せ:
Invoke-WebRequest+(?*-UseBasicParsing) - アクション 追加
UseBasicParsingこのような場合
ディフェンス・イン・デプスパッチを超えて
パッチは事後的なものです。将来の0-daysから保護するためには、PowerShellに「Defense in Depth」戦略を採用する必要があります。
A.言語モードの強制
非管理ユーザーの場合、PowerShell は次の場所で実行する必要があります。 制約言語モード.このため、Windows APIを呼び出したり、任意の.NETコードをコンパイルしたりする機能が著しく制限される。
パワーシェル
現在のモードを確認する $ExecutionContext.SessionState.LanguageMode
標準的なユーザーのためのターゲット出力:ConstrainedLanguage`
B.スクリプトブロックログを有効にする
PowerShellはメモリ上で実行される(ファイルレス)ため、攻撃者はPowerShellを好む。攻撃者を捕まえるには、実際に実行されているコードをログに記録する必要がある。
- GPOパス:
コンピュータの構成 > 管理用テンプレート > Windowsコンポーネント > Windows PowerShell > PowerShellスクリプトブロックログをオンにする.
C.SIEM 検出ルール
SOC の監視ルールを更新し、潜在的な搾取の試みにフラグを立てる:
- プロセス階層: アラート
パワーシェルエグゼはOfficeアプリ(Word、Excel)によって生み出される。 - 疑わしい議論: 高度に難読化されたコマンドや、以下のような使い方を探してください。
エンコードされたコマンド. - イベントIDは4104: スクリプト・ブロックのログをスキャンして、次のようなキーワードを探す。
呼び出し式またはアイイーエックスネットワーク・コールと組み合わせる。
結論
CVE-2025-54100の公開は、それを思い起こさせるものだ: アイデンティティとコンフィギュレーションが新たな境界となる。 当面の対策は12月のKB(KB5072033/KB5074204)を適用することだが、長期的な解決策は、ネイティブツールの悪用に対して環境を強化することである。
あなたのアクションプラン
- 監査 パッチが適用されていないWindowsエンドポイントをネットワーク上でスキャンする。
- パッチ 12月のセキュリティアップデートを直ちに導入すること。
- リファクター: 自動化スクリプトを更新して
UseBasicParsing.
安全な場所にいて、貝殻を安全に保管すること。

