原始出版日期: 2025年12月9日
KB ID:5074596
本文描述一項主要影響企業或 IT 管理環境的變更,該環境中使用 PowerShell 腳本進行自動化與網頁內容檢索。 在個人或家庭環境中使用裝置的人員通常不需要採取任何行動,因為這類情境在非 IT 管理環境下較為罕見。
|
變更日期 |
變更描述 |
|
2025年12月20日 |
|
摘要
Windows PowerShell 5.1 現在在使用 Invoke-WebRequest 指令擷取網頁時,會顯示安全確認提示,且不需特殊參數。
安全警告: 腳本執行風險 Invoke-WebRequest 解析網頁內容。 網頁中的腳本程式碼可能會在解析頁面時執行。
建議操作:使用 -UseBasicParsing 開關以避免腳本程式碼執行。
是否要繼續?
此提示提醒頁面中的腳本可能會在解析過程中執行,並建議使用 -UseBasicParsing 參數以避免腳本執行。 使用者必須選擇繼續或取消操作。 此變更有助於防止惡意網路內容,因為必須在使用者同意前才能進行潛在風險的行動。
PowerShell 的 Invoke-WebRequest 指令會向網頁伺服器發出 HTTP 或 HTTPS 請求並回傳結果。 本文記錄了一項強化變更,Windows PowerShell 5.1 在使用 Invoke-WebRequest 指令擷取網頁時,故意顯示安全確認提示,且不需特殊參數。 此行為發生在支援的 Windows 用戶端與伺服器安裝 2025 年 12 月 9 日及之後發布的 Windows 匯報後。 欲了解更多資訊,請參閱CVE-2025-54100。
發生了什麼改變?
-
過去的行為
-
完整文件物件模型 (DOM) 使用 Internet Explorer 元件 (HTMLDocument 介面 (mshtml) ) 進行解析,該介面可從下載內容執行腳本。
-
-
新行為
-
安全確認提示: 在安裝 2025 年 12 月 9 日或之後釋出的 Windows 更新後,執行 Invoke-WebRequest 指令 (PowerShell 5.1 中的 curl) ,當未使用特殊參數) 時,會觸發安全提示 (。 該提示會出現在 PowerShell 主控台,並警告腳 本執行風險。 這表示 PowerShell 會暫停警告你,若不採取預防措施,網頁腳本內容可能會在處理時在你的系統上執行。 預設情況下,如果你按 Enter (或選擇 No) ,該操作會被取消以安全起見。 PowerShell 會顯示因安全疑慮而取消的訊息,並建議使用 -UseBasicParsing 參數重新執行該指令以確保安全處理。 如果你選擇 「是」,PowerShell 會繼續用舊方法 (完整 HTML 解析) 來解析頁面,也就是說它會像以前一樣載入內容和任何嵌入腳本。 基本上,選擇 「是」表示你接受風險並允許指令繼續執行,而選擇 「否」 (預設) 會停止動作以保護你。
-
互動式與腳本式使用: 此提示的引入主要影響互動式使用。 在互動式會議中,你會看到警告並必須回應。 對於 (非互動情境(如排程任務或 CI 管線) )的自動化腳本,此提示可能導致腳本在等待輸入時當機。 為避免這種情況,我們建議更新此類腳本,明確使用安全參數 (見下方) ,確保不需人工確認。
-
採取行動
大多數使用 Invoke-WebRequest 指令的 PowerShell 腳本與指令,幾乎不需修改即可繼續運作。 例如,僅下載內容或將回應內容視為文字或資料的腳本不會受到影響,也不需要更改。
如果你的腳本受此變更影響,請採用以下其中一種方法。
若您通常使用 Invoke-WebRequest 指令來擷取 (內容,例如下載檔案或閱讀靜態文字) ,且不依賴進階網站互動或 HTML DOM 解析,則無需操作。 新的預設行為更安全——嵌入網頁內容的腳本不會在未經你同意下執行——這是大多數情境的建議配置。
互動式使用時,只需對新的安全提示符 (回應 「否」,或按 Enter 接受預設) ,並以 -UseBasicParsing 參數重新執行指令,安全取回內容。 這樣可以避免在擷取頁面中執行任何腳本程式碼。 如果你經常以互動方式擷取網頁內容,建議預設在指令中使用 -UseBasicParsing 參數,完全跳過提示,確保最大安全性。
對於自動化腳本或排程任務,請在 Invoke-WebRequest 呼叫時更新 -UseBasicParsing 參數。 這會預先選擇安全行為,讓提示不會出現,腳本也能持續不中斷地執行。 這樣一來,你可以確保自動化在更新後能無縫運作,同時仍能享受到提升的安全性。
-
對於使用 -NoProfile 選項執行的腳本:若腳本多次出現 Invoke-WebRequest 呼叫,請在腳本頂端宣告 $PSDefaultParameterValues['Invoke-WebRequest:UseBasicParsing'] = $true 。
-
當使用 Invoke-WebRequest 搭配 -UseBasicParsing 參數時,無法使用 Internet Explorer 元件 (HTMLDocument 介面 (mshtml) ) 進行完整文件物件模型 (DOM) 解析。
對於處理不受信任或公開網頁內容且需處理 HTML 結構或表單的腳本或自動化,建議考慮 重構 或更新以保障長期安全。 與其依賴 PowerShell 來解析和執行可能危險的網頁腳本,不如:
-
例如,請使用其他的解析方法或函式庫, (將網頁內容視為純文字或 XML,使用不執行腳本的正則表達式或 XML/HTML 解析函式庫) 。
-
現代化你的網頁互動方式,或許是使用較新的 PowerShell Core (7.x 版本或更新) ,這類軟體不依賴 Internet Explorer 引擎,避免執行腳本,或使用專門的網頁爬蟲工具來更安全地處理內容。 限制對 Internet Explorer 專屬功能的依賴,因為 Internet Explorer 已被棄用。 計畫重寫依賴這些功能的腳本部分,讓它們能在安全處理網頁內容的環境中運作。
-
PowerShell Core (7.x 或更新版本中的 Invoke-WebRequest) 不支援使用 Internet Explorer 元件進行 DOM 解析。 其預設的解析方式能安全擷取內容,無需腳本執行。
-
-
重構的目標是在不暴露於安全風險的情況下,達成所需的功能,從而擁抱這項變更帶來的更安全預設。
如果你有特定需求需要使用 Invoke-WebRequest 指令的完整 HTML 解析功能, (例如與表單欄位互動或爬取結構化資料) ,且你信任網頁內容的來源,仍可視情況繼續使用舊有的解析行為。 在互動式會話中,這簡單來說就是在確認提示時選擇 「是」,讓操作繼續。 每次這麼做,你都會收到安全風險的提醒。 不使用 -UseBasicParsing 參數的做法應限於你完全信任網頁內容 (的情況,例如你控制的內部網頁應用程式或已知的安全網站) 。
重要: 此方法不建議用於針對不受信任或公開網路內容執行的腳本,因為此舉會重新引入本更新旨在降低的靜默腳本執行風險。 此外,對於非互動式自動化,沒有內建自動同意提示的機制,因此在腳本中完全解析並不建議, (且風險) 。 這個選項請節制使用,且僅作為暫時措施。
常見問題集
大多數情況下,下載檔案或將網頁內容擷取為文字的腳本仍然可行。 為了避免提示,請加入 -UseBasicParsing 參數。
使用進階 HTML 解析 (如表單或 DOM) 的腳本可能會當機或輸出原始資料,而非結構化物件;你需要切換到基本的解析或修改腳本以不同方式處理內容。
在 PowerShell 腳本中,務必使用 -UseBasicParsing 參數搭配 Invoke-WebRequest 指令,以確保安全且非互動式的執行。
是的。 根據舊有解析的腳本必須更新以選擇加入或重構。
PowerShell 的變更同時適用於標準更新和熱補丁更新,導致行為改變相同。
是的。 PowerShell 7 預設已經使用安全解析。
請聯絡模組擁有者以獲取支援計畫。 遷移期間暫時使用選擇加入(opt-in)來處理可信內容。
為了準備並驗證這項變更,我們建議您:
-
利用 DOM 功能識別腳本。
-
用新的預設測試自動化。
-
限制舊有選擇權只能使用可信來源。
-
規劃對不受信任內容進行重構。