Nota
- Data di pubblicazione originale: 9 dicembre 2025
- ID KB: 5074596
Nota
Questo articolo descrive una modifica che riguarda principalmente gli ambienti aziendali o gestiti dall'IT in cui gli script di PowerShell vengono usati per l'automazione e il recupero del contenuto Web. Le People che usano dispositivi in ambienti personali o domestici in genere non devono eseguire alcuna azione, poiché questi scenari sono rari al di fuori degli ambienti gestiti dall'IT.
Registro delle modifiche
| Modifica data | Descrizione della modifica |
|---|---|
| Dicembre 20, 2025 |
|
Riepilogo
Windows PowerShell 5.1 ora visualizza una richiesta di conferma della sicurezza quando si usa il comando Invoke-WebRequest per recuperare pagine Web senza parametri speciali.
Nota
- Avviso di sicurezza: Rischio esecuzione script Invoke-WebRequest analizza il contenuto della pagina Web. Il codice script nella pagina Web potrebbe essere eseguito quando la pagina viene analizzata.
- AZIONE CONSIGLIATA: Utilizzare l'opzione -UseBasicParsing per evitare l'esecuzione di codice script.
- Vuoi continuare?
Questo prompt avverte che gli script nella pagina potrebbero essere eseguiti durante l'analisi e consiglia di usare il
-UseBasicParsing per evitare l'esecuzione di script. Gli utenti devono scegliere di continuare o annullare l'operazione. Questa modifica consente di proteggersi da contenuti Web dannosi richiedendo il consenso dell'utente prima di azioni potenzialmente rischiose.
Il comando Invoke-WebRequest di PowerShell effettua una richiesta HTTP o HTTPS a un server Web e restituisce i risultati. Questo articolo documenta una modifica di protezione avanzata in cui Windows PowerShell 5.1 visualizza intenzionalmente una richiesta di conferma della sicurezza quando si usa il comando Invoke-WebRequest per recuperare pagine Web senza parametri speciali. Questo comportamento si verifica dopo che i client e i server Windows supportati hanno installato gli Aggiornamenti di Windows rilasciati a partire dal 9 dicembre 2025. Per ulteriori informazioni, vedere CVE-2025-54100.
Cosa è cambiato?
Comportamento precedente
- Analisi DOM (Full Document Object Model) con componenti di Internet Explorer (HTMLDocument Interface (mshtml)), in grado di eseguire script dal contenuto scaricato.
Nuovo comportamento
Richiesta di conferma della sicurezza: Dopo aver installato gli aggiornamenti di Windows rilasciati il 9 dicembre 2025 o successivamente, l'esecuzione del comando Invoke-WebRequest (noto anche come curl) in PowerShell 5.1 attiverà un prompt di sicurezza (quando non viene utilizzato alcun parametro speciale). Il prompt viene visualizzato nella console di PowerShell con un avviso sul rischio di esecuzione di script.
Questo significa che PowerShell è in pausa per avvisare che, senza precauzioni, il contenuto dello script della pagina Web potrebbe essere eseguito nel sistema quando viene elaborato. Per impostazione predefinita, se si preme INVIO (o si sceglie No), l'operazione viene annullata per sicurezza. PowerShell mostrerà un messaggio che indica che è stato annullato a causa di problemi di sicurezza e suggerisce di rieseguire il comando usando il comando
-Parametro UseBasicParsing per un'elaborazione sicura. Se si sceglie Sì, PowerShell procederà ad analizzare la pagina usando il metodo precedente (analisi HTML completa), ovvero caricherà il contenuto e tutti gli script incorporati come in passato. In sostanza, scegliere Sì significa accettare il rischio e consentire al comando di essere eseguito come prima, mentre scegliere No (impostazione predefinita) interrompe l'azione per proteggerti.Uso interattivo vs. script: L'introduzione di questo prompt riguarda principalmente l'utilizzo interattivo. Nelle sessioni interattive viene visualizzato l'avviso e occorre rispondere. Per gli script automatici (scenari non interattivi come attività pianificate o pipeline CI), questa richiesta potrebbe causare il blocco dello script durante l'attesa dell'input. Per evitare questo problema, è consigliabile aggiornare tali script in modo che usino in modo esplicito i parametri sicuri (vedere di seguito), assicurandosi che non richiedano la conferma manuale.
Entrare in azione
La maggior parte degli script e dei comandi di PowerShell che usano il comando Invoke-WebRequest continuerà a funzionare con modifiche minime o nulle. Ad esempio, gli script che scaricano contenuti o usano il corpo della risposta solo come testo o dati non vengono interessati e non richiedono modifiche.
Se si dispone di script interessati da questa modifica, utilizzare uno degli approcci seguenti.
Opzione 1: utilizzare la nuova impostazione predefinita di protezione
Per il recupero del contenuto, non è necessaria alcuna azione se l'uso tipico del comando Invoke-WebRequest è quello di recuperare il contenuto (come il download di file o la lettura di testo statico) e non ci si affida all'interazione avanzata del sito o all'analisi HTML DOM. Il nuovo comportamento predefinito è più sicuro: gli script incorporati nel contenuto Web non verranno eseguiti senza l'autorizzazione dell'utente, e questa è la configurazione consigliata per la maggior parte degli scenari.
Per l'utilizzo interattivo, è sufficiente rispondere No al nuovo prompt di sicurezza (o premere INVIO per accettare l'impostazione predefinita) ed eseguire nuovamente il comando con il parametro -UseBasicParsing per recuperare in modo sicuro il contenuto. In questo modo si eviterà l'esecuzione di qualsiasi codice script nella pagina recuperata. Se recuperi spesso contenuto Web in modo interattivo, prendi in considerazione l'uso del parametro -UseBasicParsing per impostazione predefinita nei comandi per ignorare del tutto la richiesta e garantire la massima sicurezza.
Per gli script automatici o le attività pianificate, aggiornarli in modo da includere il parametro -UseBasicParsing nelle chiamate Invoke-WebRequest . Questa opzione preseleziona il comportamento sicuro in modo che la richiesta non venga visualizzata e che lo script continui a essere eseguito senza interruzioni. In questo modo, si garantisce che l'automazione venga eseguita senza interruzioni dopo l'aggiornamento, sfruttando al contempo la sicurezza migliorata.
- Per gli script eseguiti con l'opzione -NoProfile: Se lo script ha molte occorrenze delle chiamate Invoke-WebRequest , declare $PSDefaultParameterValues['Invoke-WebRequest:UseBasicParsing'] = $true all'inizio dello script.
- Quando Invoke-WebRequest viene utilizzato con il parametro -UseBasicParsing , l'analisi DOM (Full Document Object Model) utilizzando i componenti di Internet Explorer (HTMLDocument Interface (mshtml)) non è possibile.
Opzione 2: effettuare il refactoring degli script per la sicurezza a lungo termine
Per gli script o le automazioni che gestiscono contenuti Web non attendibili o pubblici e richiedono l'elaborazione di strutture o moduli HTML, è consigliabile effettuare il refactoring o aggiornarli per una sicurezza a lungo termine. Anziché affidarsi a PowerShell per analizzare ed eseguire script di pagine Web potenzialmente pericolosi, è possibile:
Utilizzare metodi o librerie di analisi alternativi (ad esempio, trattare il contenuto della pagina Web come testo normale o XML, utilizzando librerie di analisi regex o XML/HTML che non eseguono script).
Modernizzare l'approccio alle interazioni Web, ad esempio usando la versione più recente di PowerShell Core (versione 7.x o successiva), che non dipende dal motore di Internet Explorer ed evita l'esecuzione di script, oppure usando strumenti di web scraping specializzati che gestiscono i contenuti in modo più sicuro. Limita la dipendenza dalle funzionalità specifiche di Internet Explorer, dal momento che Internet Explorer è deprecato. Pianifica di riscrivere parti dei tuoi script che dipendono da queste funzionalità in modo che possano funzionare in un ambiente in cui i contenuti Web siano gestiti in modo sicuro.
- Invoke-WebRequest in PowerShell Core (versione 7.x o successiva) non supporta l'analisi DOM con componenti di Internet Explorer. L'analisi predefinita recupererà in modo sicuro il contenuto senza l'esecuzione di script.
L'obiettivo del refactoring è quello di ottenere le funzionalità necessarie senza esporsi a rischi per la sicurezza, abbracciando così le impostazioni predefinite più sicure introdotte da questa modifica.
Opzione 3: acconsentire esplicitamente a un comportamento legacy (solo scenari attendibili)
Se si ha la necessità specifica di usare le funzionalità di analisi HTML complete del comando Invoke-WebRequest (ad esempio l'interazione con i campi modulo o lo scraping di dati strutturati) e si considera attendibile l'origine del contenuto Web, è comunque possibile procedere con il comportamento di analisi legacy caso per caso. Nelle sessioni interattive, ciò significa semplicemente scegliere Sì al prompt di conferma per consentire all'operazione di continuare. Ogni volta che esegui questa operazione, riceverai un promemoria del rischio per la sicurezza. Procedere senza il parametro -UseBasicParsing deve essere limitato a scenari in cui si considera completamente attendibile il contenuto Web, ad esempio applicazioni Web interne sotto il controllo dell'utente o siti Web sicuri noti.
Importante
Questo approccio non è consigliato per gli script in esecuzione su contenuti Web non attendibili o pubblici, perché reintroduce il rischio di esecuzione di script invisibili all'utente che questo aggiornamento ha lo scopo di mitigare. Inoltre, per l'automazione non interattiva, non esiste un meccanismo integrato per fornire automaticamente il consenso alla richiesta, quindi affidarsi all'analisi completa negli script non è consigliabile (oltre ad essere rischioso). Usa questa opzione con parsimonia e solo come misura temporanea.
Domande frequenti
Questa modifica influisce sui miei script?
Nella maggior parte dei casi, gli script che scaricano file o recuperano contenuti Web come testo continueranno a funzionare. Per evitare la richiesta, aggiungere il parametro -UseBasicParsing .
Gli script che utilizzano l'analisi HTML avanzata (come i moduli o il DOM) possono bloccare o produrre dati grezzi anziché oggetti strutturati; Sarà necessario passare all'analisi di base o modificare lo script per gestire il contenuto in modo diverso.
Come è possibile evitare la nuova richiesta di conferma negli script?
Usare sempre il parametro -UseBasicParsing con il comando Invoke-WebRequest negli script di PowerShell per garantire un'esecuzione sicura e non interattiva.
Questa modifica richiede qualche azione per gli script legacy?
Sì. Gli script che dipendono dall'analisi legacy devono essere aggiornati per il consenso esplicito o il refactoring.
Come si riflette questa modifica negli aggiornamenti a caldo e standard?
La modifica in PowerShell è applicabile sia agli aggiornamenti standard che agli aggiornamenti hotpatch, con conseguente modifica dello stesso comportamento.
Questa modifica è in linea con PowerShell 7?
Sì. PowerShell 7 usa già l'analisi sicura per impostazione predefinita.
Cosa devo fare con gli script o i moduli di terze parti?
Contatta i proprietari dei moduli per i piani di supporto. Utilizzare temporaneamente il consenso esplicito per i contenuti attendibili durante la migrazione.
Ricerca per categorie verificare che l'ambiente sia pronto?
Per preparare e convalidare questa modifica, è consigliabile:
- Identificare gli script usando le funzionalità DOM.
- Testare l'automazione con la nuova impostazione predefinita.
- Limitare il consenso esplicito legacy alle origini attendibili.
- Pianificare il refactoring per il contenuto non attendibile.