Observação
- Data de publicação original: 9 de dezembro de 2025
- ID da base de dados: 5074596
Observação
Este artigo descreve uma alteração que afeta principalmente ambientes corporativos ou gerenciados por TI em que os scripts do PowerShell são usados para automação e recuperação de conteúdo da Web. As People que usam dispositivos em ambientes pessoais ou domésticos geralmente não precisam realizar nenhuma ação, pois esses cenários são incomuns fora dos ambientes gerenciados pela TI.
Log de mudanças
| Data da alteração | Alterar descrição |
|---|---|
| 20 de dezembro de 2025 |
|
Resumo
O Windows PowerShell 5.1 agora exibe um prompt de confirmação de segurança ao usar o comando Invoke-WebRequest para buscar páginas da Web sem parâmetros especiais.
Observação
- Aviso de segurança: Risco de execução de script Invoke-WebRequest analisa o conteúdo da página da Web. O código de script na página da Web pode ser executado quando a página é analisada.
- AÇÃO RECOMENDADA: Use a opção -UseBasicParsing para evitar a execução de código de script.
- Deseja continuar?
Esse prompt avisa que os scripts na página podem ser executados durante a análise e aconselha o uso da
-UseBasicParsing para evitar qualquer execução de script. Os usuários devem optar por continuar ou cancelar a operação. Essa alteração ajuda a proteger contra conteúdo da Web mal-intencionado exigindo o consentimento do usuário antes de ações potencialmente arriscadas.
O comando Invoke-WebRequest do PowerShell faz uma solicitação HTTP ou HTTPS para um servidor Web e retorna os resultados. Este artigo documenta uma alteração de proteção em que o Windows PowerShell 5.1 exibe intencionalmente um prompt de confirmação de segurança ao usar o comando Invoke-WebRequest para buscar páginas da Web sem parâmetros especiais. Esse comportamento ocorre depois que clientes e servidores Windows com suporte instalaram as Atualizações do Windows lançadas em 9 de dezembro de 2025 e posteriormente. Para obter mais informações, consulte CVE-2025-54100.
O que mudou?
Comportamento anterior
- Análise DOM (Document Object Model) completa usando componentes do Internet Explorer (HTMLDocument Interface (mshtml)), que pode executar scripts de conteúdo baixado.
Novo comportamento
Prompt de Confirmação de Segurança: Depois de instalar as atualizações do Windows lançadas em ou após 9 de dezembro de 2025, executar o comando Invoke-WebRequest (também conhecido como curl) no PowerShell 5.1 disparará um prompt de segurança (quando nenhum parâmetro especial for usado). O prompt é exibido no console do PowerShell com um aviso sobre o Risco de Execução do Script.
Isso significa que o PowerShell está pausando para avisá-lo de que, sem precauções, o conteúdo do script da página da Web pode ser executado em seu sistema quando for processado. Por padrão, se você pressionar Enter (ou escolher Não), a operação será cancelada por segurança. O PowerShell mostrará uma mensagem informando que foi cancelado devido a preocupações de segurança e sugerirá executar novamente o comando usando o comando
-UseBasicParsing para processamento seguro. Se você escolher Sim, o PowerShell continuará a analisar a página usando o método mais antigo (análise HTML completa), o que significa que ele carregará o conteúdo e todos os scripts inseridos como costumava fazer. Essencialmente, escolher Sim significa que você está aceitando o risco e permitindo que o comando seja executado como antes, enquanto escolher Não (o padrão) interrompe a ação para protegê-lo.Uso interativo vs. uso com script: A introdução desse prompt afeta principalmente o uso interativo. Em sessões interativas, você verá o aviso e terá que responder. Para scripts automatizados (cenários não interativos, como tarefas agendadas ou pipelines de CI), esse prompt pode fazer com que o script trave enquanto aguarda entrada. Para evitar isso, recomendamos atualizar esses scripts para usar explicitamente parâmetros seguros (veja abaixo), garantindo que eles não exijam confirmação manual.
Tome medidas
A maioria dos scripts e comandos do PowerShell que usam o comando Invoke-WebRequest continuará funcionando com pouca ou nenhuma modificação. Por exemplo, scripts que apenas baixam conteúdo ou funcionam com o corpo da resposta como texto ou dados não são afetados e não requerem alterações.
Se você tiver scripts afetados por essa alteração, use uma das abordagens a seguir.
Opção 1: Use o novo padrão seguro
Para buscar conteúdo, nenhuma ação é necessária se o uso típico do comando Invoke-WebRequest for buscar conteúdo (como baixar arquivos ou ler texto estático) e você não depender da interação avançada do site ou da análise HTML DOM. O novo comportamento padrão é mais seguro — scripts inseridos no conteúdo da Web não serão executados sem sua permissão—e essa é a configuração recomendada para a maioria dos cenários.
Para uso interativo, basta responder Não ao novo prompt de segurança (ou pressionar Enter para aceitar o padrão) e executar novamente o comando com o parâmetro -UseBasicParsing para recuperar o conteúdo com segurança. Isso evitará a execução de qualquer código de script na página buscada. Se você busca conteúdo da Web frequentemente de forma interativa, considere usar o parâmetro -UseBasicParsing por padrão em seus comandos para ignorar completamente o prompt e garantir a máxima segurança.
Para scripts automatizados ou tarefas agendadas, atualize-os para incluir o parâmetro -UseBasicParsing em chamadas Invoke-WebRequest . Isso pré-seleciona o comportamento seguro para que o prompt não apareça e seu script continue a ser executado sem interrupção. Ao fazer isso, você garante que sua automação seja executada perfeitamente após a atualização, enquanto ainda aproveita a segurança aprimorada.
- Para scripts executados com a opção -NoProfile: Se o script tiver muitas ocorrências das chamadas Invoke-WebRequest , declare $PSDefaultParameterValues['Invoke-WebRequest:UseBasicParsing'] = $true na parte superior do script.
- Quando Invoke-WebRequest é usado com o parâmetro -UseBasicParsing, a análise completa do DOM (Document Object Model) usando componentes do Internet Explorer (HTMLDocument Interface (mshtml)) não é possível.
Opção 2: refatorar scripts para segurança de longo prazo
Para scripts ou automação que lidam com conteúdo da Web público ou não confiável e exigem o processamento de estruturas ou formulários HTML, considere refatorá-los ou atualizá-los para segurança a longo prazo. Em vez de depender do PowerShell para analisar e executar scripts de páginas da Web potencialmente perigosos, você pode:
Use métodos ou bibliotecas alternativos de análise (por exemplo, trate o conteúdo da página da Web como texto sem formatação ou XML, usando bibliotecas de análise regex ou XML/HTML que não executam scripts).
Modernize sua abordagem para interações na Web, talvez usando o PowerShell Core mais recente (versão 7.x ou posterior), que não depende do mecanismo do Internet Explorer e evita a execução de scripts, ou usando ferramentas especializadas de recorte da Web que manipulam o conteúdo com mais segurança. Limite a dependência de recursos específicos do Internet Explorer, uma vez que o Internet Explorer foi preterido. Planeje reescrever partes de seus scripts que dependem desses recursos para que possam funcionar em um ambiente em que o conteúdo da Web seja tratado com segurança.
- Invoke-WebRequest no PowerShell Core (versão 7.x ou posterior) não dá suporte à análise DOM usando componentes do Internet Explorer. Sua análise padrão recuperará com segurança o conteúdo sem a execução do script.
O objetivo da refatoração é obter a funcionalidade necessária sem se expor a riscos de segurança, adotando assim os padrões mais seguros introduzidos por essa alteração.
Opção 3: aceitar o comportamento herdado (somente cenários confiáveis)
Se você tiver uma necessidade específica de usar os recursos completos de análise HTML do comando Invoke-WebRequest (como interagir com campos de formulário ou extrair dados estruturados) e confiar na origem do conteúdo da Web, ainda poderá prosseguir com o comportamento de análise legado caso a caso. Em sessões interativas, isso significa simplesmente escolher Sim no prompt de confirmação para permitir que a operação continue. Você receberá um lembrete do risco de segurança sempre que fizer isso. Prosseguir sem o parâmetro -UseBasicParsing deve ser limitado a cenários em que você confia totalmente no conteúdo da Web (por exemplo, aplicativos Web internos sob seu controle ou sites seguros conhecidos).
Importante
Essa abordagem não é recomendada para scripts em execução em conteúdo da Web público ou não confiável, pois reintroduz o risco de execução silenciosa de scripts que esta atualização pretende mitigar. Além disso, para automação não interativa, não há mecanismo integrado para consentir automaticamente com o prompt, portanto, confiar na análise completa em scripts não é aconselhável (além de ser arriscado). Use essa opção com moderação e apenas como uma medida temporária.
Perguntas frequentes
Essa alteração afeta meus scripts?
Na maioria dos casos, os scripts que baixam arquivos ou buscam conteúdo da Web como texto ainda funcionarão. Para evitar o prompt, adicione o parâmetro -UseBasicParsing .
Scripts que usam análise HTML avançada (como formulários ou DOM) podem travar ou gerar dados brutos em vez de objetos estruturados; Você precisará alternar para a análise básica ou modificar seu script para lidar com o conteúdo de maneira diferente.
Como evitar a nova solicitação de confirmação em meus scripts?
Sempre use o parâmetro -UseBasicParsing com o comando Invoke-WebRequest em scripts do PowerShell para garantir uma execução segura e não interativa.
Essa alteração requer alguma ação para scripts herdados?
Sim. Os scripts que dependem da análise herdada devem ser atualizados para aceitar ou refatorar.
Como essa alteração se reflete no patch dinâmico e nas atualizações padrão?
A alteração no PowerShell é aplicável a atualizações padrão e atualizações de hotpatch, resultando na mesma alteração de comportamento.
Essa alteração está alinhada com o PowerShell 7?
Sim. O PowerShell 7 já usa a análise segura por padrão.
O que devo fazer com scripts ou módulos de terceiros?
Entre em contato com os proprietários do módulo para obter planos de suporte. Use a aceitação temporária para conteúdo confiável durante a migração.
Como fazer para verificar se meu ambiente está pronto?
Para se preparar e validar essa alteração, recomendamos que você:
- Identifique scripts usando recursos DOM.
- Teste a automação com o novo padrão.
- Limite a aceitação herdada a fontes confiáveis.
- Planeje a refatoração para conteúdo não confiável.