注
- 元の発行日: 2025 年 12 月 9 日
- KB ID: 5074596
注
この記事では、PowerShell スクリプトが自動化と Web コンテンツの取得に使用されるエンタープライズまたは IT で管理される環境に主に影響を与える変更について説明します。 個人または家庭の設定でデバイスを使用するPeopleは、一般に、これらのシナリオは IT で管理される環境の外部では珍しいため、何も実行する必要はありません。
変更ログ
| 日付の変更 | 説明の変更 |
|---|---|
| 2025 年 12 月 20 日 |
|
概要
Windows PowerShell 5.1 では、Invoke-WebRequest コマンドを使用して特別なパラメーターなしで Web ページをフェッチするときに、セキュリティ確認プロンプトが表示されるようになりました。
注
- セキュリティの警告: スクリプト実行リスク Invoke-WebRequest は、Web ページのコンテンツを解析します。 Web ページのスクリプト コードは、ページの解析時に実行される可能性があります。
- 推奨されるアクション: スクリプト コードの実行を回避するには、-UseBasicParsing スイッチを使用します。
- 続けますか?
このプロンプトは、ページ内のスクリプトが解析中に実行される可能性があることを警告し、
-スクリプトの実行を回避するには、BasicParsing パラメーターを使用します。 ユーザーは、操作の続行または取り消しを選択する必要があります。 この変更は、危険なアクションの前にユーザーの同意を要求することで、悪意のある Web コンテンツから保護するのに役立ちます。
PowerShell の Invoke-WebRequest コマンドは、Web サーバーに対して HTTP または HTTPS 要求を行い、結果を返します。 この記事では、Invoke-WebRequest コマンドを使用して特別なパラメーターを使用せずに Web ページをフェッチするときに、Windows PowerShell 5.1 が意図的にセキュリティ確認プロンプトを表示する、強化された変更について説明します。 この動作は、サポートされている Windows クライアントとサーバーが 2025 年 12 月 9 日以降にリリースされた Windows Updatesをインストールした後に発生します。 詳細については、「 CVE-2025-54100」を参照してください。
変更された内容
以前の動作
- ダウンロードしたコンテンツからスクリプトを実行できる、インターネット エクスプローラー コンポーネント (HTMLDocument インターフェイス (mshtml)) を使用した完全なドキュメント オブジェクト モデル (DOM) 解析。
新しい動作
セキュリティ確認プロンプト: 2025 年 12 月 9 日以降にリリースされた Windows 更新プログラムをインストールした後、PowerShell 5.1 で Invoke-WebRequest コマンド (curl とも呼ばれます) を実行すると、セキュリティ プロンプトがトリガーされます (特別なパラメーターが使用されていない場合)。 プロンプトが PowerShell コンソールに表示され、 スクリプト実行リスクに関する警告が表示されます。
これは、PowerShell が一時停止して、予防措置なしで、Web ページスクリプトコンテンツが処理されるときにシステムで実行される可能性があることを警告することを意味します。 既定では、 Enter キーを押すか [いいえ] を選択すると、安全のために操作が取り消されます。 PowerShell は、セキュリティ上の懸念のために取り消されたことを示すメッセージを表示し、
-安全な処理にBasicParsing パラメーターを使用 します。 [はい] を選択すると、PowerShell は古いメソッド (完全な HTML 解析) を使用してページの解析を続行します。つまり、コンテンツと埋め込みスクリプトが以前と同じように読み込まれます。 基本的に、[ はい ] を選択すると、リスクを受け入れ、以前と同じようにコマンドを実行できるようになりますが、[ いいえ ] (既定値) を選択すると、保護するアクションが停止します。対話型とスクリプト化の使用: このプロンプトの導入は、主に対話型の使用に影響します。 対話型セッションでは、警告が表示され、応答する必要があります。 自動スクリプト (スケジュールされたタスクや CI パイプラインなどの非対話型シナリオ) の場合、このプロンプトにより、入力を待っている間にスクリプトがハングする可能性があります。 これを回避するには、このようなスクリプトを更新して安全なパラメーターを明示的に使用することをお勧めします (以下を参照)。
アクションを行う
Invoke-WebRequest コマンドを使用するほとんどの PowerShell スクリプトとコマンドは、引き続きほとんどまたはまったく変更されません。 たとえば、コンテンツのみをダウンロードしたり、テキストやデータとして応答本文を操作したりするスクリプトは影響を受けず、変更は必要ありません。
この変更の影響を受けるスクリプトがある場合は、次のいずれかの方法を使用します。
オプション 1: 新しいセキュリティで保護された既定値を使用する
コンテンツをフェッチする場合、 Invoke-WebRequest コマンドの一般的な使用方法がコンテンツのフェッチ (ファイルのダウンロードや静的テキストの読み取りなど) で、高度なサイト操作や HTML DOM 解析に依存しない場合は、アクションは必要ありません。 新しい既定の動作はより安全です。Web コンテンツに埋め込まれたスクリプトは、アクセス許可なしでは実行されません。これは、ほとんどのシナリオで推奨される構成です。
対話形式で使用する場合は、新しいセキュリティ プロンプトに [いいえ] を応答します (または、 Enter キーを 押して既定値を受け入れます)、 -UseBasicParsing パラメーターを使用してコマンドを再実行して、コンテンツを安全に取得します。 これにより、フェッチされたページでスクリプト コードが実行されなくなります。 Web コンテンツを対話形式で頻繁にフェッチする場合は、コマンドで 既定で -UseBasicParsing パラメーターを 使用してプロンプトを完全にスキップし、最大限の安全性を確保することを検討してください。
自動スクリプトまたはスケジュールされたタスクの場合は、Invoke-WebRequest 呼び出しに -UseBasicParsing パラメーターを含むように更新します。 これにより、安全な動作が事前に選択され、プロンプトが表示されず、中断することなくスクリプトが実行され続けます。 これにより、セキュリティの向上を引き続き利用しながら、更新後に自動化がシームレスに実行されるようになります。
- -NoProfile オプションを使用して実行されるスクリプトの場合: スクリプトに Invoke-WebRequest 呼び出しが多数出現する場合は、スクリプトの先頭に $PSDefaultParameterValues['Invoke-WebRequest:UseBasicParsing'] = $true を宣言します。
- Invoke-WebRequest を -UseBasicParsing パラメーターと共に使用する場合、インターネット エクスプローラー コンポーネント (HTMLDocument Interface (mshtml)) を使用した完全なドキュメント オブジェクト モデル (DOM) 解析はできません。
オプション 2: 長期的なセキュリティのためにスクリプトをリファクタリングする
信頼されていない Web コンテンツまたはパブリック Web コンテンツを処理し、HTML 構造またはフォームの処理を必要とするスクリプトまたは自動化については、長期的な安全性のために それらをリファクタリング または更新することを検討してください。 PowerShell を使用して、危険な可能性のある Web ページ スクリプトを解析して実行するのではなく、次のことができます。
代替解析メソッドまたはライブラリを使用します (たとえば、スクリプトを実行しない正規表現または XML/HTML 解析ライブラリを使用して、Web ページのコンテンツをプレーン テキストまたは XML として扱います)。
インターネット エクスプローラーのエンジンに依存せず、スクリプトの実行を回避する新しい PowerShell Core (バージョン 7.x 以降) を使用するか、コンテンツをより安全に処理する特殊な Web スクレイピング ツールを使用して、Web 操作へのアプローチを最新化します。 インターネット エクスプローラーは非推奨であるため、インターネット エクスプローラー固有の機能への依存を制限します。 Web コンテンツが安全に処理される環境で動作できるように、これらの機能に依存するスクリプトの一部を書き換える計画を立てます。
- PowerShell Core (バージョン 7.x 以降) の Invoke-WebRequest では、インターネット エクスプローラー コンポーネントを使用した DOM 解析はサポートされていません。 既定の解析では、スクリプトを実行せずにコンテンツが安全に取得されます。
リファクタリングの目標は、セキュリティ リスクにさらすことなく、必要な機能を実現し、この変更によって導入されたより安全な既定値を受け入れることです。
オプション 3: 従来の動作へのオプトイン (信頼できるシナリオのみ)
Invoke-WebRequest コマンドの完全な HTML 解析機能 (フォーム フィールドの操作や構造化データのスクレイピングなど) を使用する必要があり、Web コンテンツのソースを信頼している場合でも、ケースバイケースで従来の解析動作を続行できます。 対話型セッションでは、操作の続行を許可する確認プロンプトで [はい ] を選択するだけです。 そのたびに、セキュリティ リスクのリマインダーを受け取ります。 -UseBasicParsing パラメーターを指定せずに続行するには、Web コンテンツを完全に信頼するシナリオ (たとえば、制御下の内部 Web アプリケーションや既知の安全な Web サイト) に制限する必要があります。
重要
この方法は、信頼されていない Web コンテンツまたはパブリック Web コンテンツに対して実行されているスクリプトには推奨されません。これは、この更新プログラムが軽減することを目的としたサイレント スクリプト実行のリスクを再導入するためです。 また、非対話型オートメーションの場合は、プロンプトに自動的に同意する組み込みメカニズムがないため、スクリプトの完全な解析に依存することはお勧めしません (リスクがあることに加えて)。 このオプションは控えめに使用し、一時的なメジャーとしてのみ使用してください。
よく寄せられる質問
この変更はスクリプトに影響しますか?
ほとんどの場合、ファイルをダウンロードしたり、テキストとして Web コンテンツをフェッチしたりするスクリプトは引き続き機能します。 プロンプトを回避するには、 -UseBasicParsing パラメーターを 追加します。
高度な HTML 解析 (フォームや DOM など) を使用するスクリプトは、構造化オブジェクトの代わりに生データをハングまたは出力する可能性があります。基本的な解析に切り替えたり、コンテンツを異なる方法で処理するようにスクリプトを変更したりする必要があります。
スクリプトの新しい確認プロンプトを回避するにはどうすればよいですか?
PowerShell スクリプトの Invoke-WebRequest コマンドで -UseBasicParsing パラメーターを常に使用して、安全で非対話型の実行を保証します。
この変更には、従来のスクリプトに対して何らかのアクションが必要ですか?
はい。 従来の解析に応じたスクリプトは、オプトインまたはリファクタリングするために更新する必要があります。
この変更はホットパッチと標準更新プログラムにどのように反映されますか?
PowerShell の変更は、標準更新プログラムとホットパッチ更新プログラムの両方に適用され、その結果、同じ動作が変更されます。
この変更は PowerShell 7 と一致しますか?
はい。 PowerShell 7 では、既定でセキュリティで保護された解析が既に使用されています。
サード パーティ製のスクリプトまたはモジュールについてどうしたらよいですか?
サポート プランについては、モジュール所有者に問い合わせてください。 移行中に信頼できるコンテンツにオプトインを一時的に使用します。
環境の準備ができていることを確認操作方法?
この変更を準備して検証するには、次のことをお勧めします。
- DOM 機能を使用してスクリプトを識別します。
- 新しい既定値を使用して自動化をテストします。
- 従来のオプトインを信頼できるソースに制限します。
- 信頼されていないコンテンツのリファクタリングを計画します。