Nota
- Fecha de publicación original: 9 de diciembre de 2025
- Id. de KB: 5074596
Nota
En este artículo se describe un cambio que afecta principalmente a los entornos empresariales o administrados por TI donde se usan scripts de PowerShell para la automatización y la recuperación de contenido web. People que usa dispositivos en entornos personales o domésticos generalmente no necesita realizar ninguna acción, ya que estos escenarios son poco comunes fuera de los entornos administrados por TI.
Registro de cambios
| Cambiar fecha | Cambiar descripción |
|---|---|
| 20 de diciembre de 2025 |
|
Resumen
Windows PowerShell 5.1 ahora muestra un mensaje de confirmación de seguridad al usar el comando Invoke-WebRequest para capturar páginas web sin parámetros especiales.
Nota
- Advertencia de seguridad: Riesgo de ejecución de script Invoke-WebRequest analiza el contenido de la página web. El código de script de la página web se puede ejecutar cuando se analiza la página.
- ACCIÓN RECOMENDADA: Utilice el modificador -UseBasicParsing para evitar la ejecución de código de script.
- ¿Deseas continuar?
Este aviso advierte de que los scripts de la página podrían ejecutarse durante el análisis y aconseja usar el
-UseBasicParsing para evitar cualquier ejecución de script. Los usuarios deben elegir entre continuar o cancelar la operación. Este cambio ayuda a proteger contra contenido web malintencionado al requerir el consentimiento del usuario antes de acciones potencialmente arriesgadas.
El comando Invoke-WebRequest de PowerShell realiza una solicitud HTTP o HTTPS a un servidor web y devuelve los resultados. En este artículo se documenta un cambio de protección en el que Windows PowerShell 5.1 muestra de forma intencionada un mensaje de confirmación de seguridad al usar el comando Invoke-WebRequest para capturar páginas web sin parámetros especiales. Este comportamiento se produce después de que los clientes y servidores de Windows admitidos hayan instalado las Novedades de Windows publicadas el 9 de diciembre de 2025 y después. Para obtener más información, consulte CVE-2025-54100.
¿Qué cambió?
Comportamiento anterior
- Análisis del modelo de objetos de documento completo (DOM) con los componentes de Internet Explorer (HTMLDocument Interface (mshtml)), que podían ejecutar scripts a partir del contenido descargado.
Comportamiento nuevo
Aviso de confirmación de seguridad: Después de instalar las actualizaciones de Windows publicadas el 9 de diciembre de 2025 o después, la ejecución del comando Invoke-WebRequest (también conocido como curl) en PowerShell 5.1 desencadenará un símbolo del sistema de seguridad (cuando no se usa ningún parámetro especial). El mensaje aparece en la consola de PowerShell con una advertencia sobre el riesgo de ejecución de scripts.
Esto significa que PowerShell está en pausa para advertirle que, sin precauciones, el contenido del script de la página web podría ejecutarse en el sistema cuando se procesa. De forma predeterminada, si presiona Entrar (o elige No), la operación se cancelará por seguridad. PowerShell mostrará un mensaje que indica que se canceló debido a problemas de seguridad y sugiere volver a ejecutar el comando mediante el
-UseBasicParsing para un procesamiento seguro. Si elige Sí, PowerShell continuará analizando la página con el método anterior (análisis HTML completo), lo que significa que cargará el contenido y los scripts incrustados como solía hacerlo. Esencialmente, elegir Sí significa que acepta el riesgo y permite que el comando se ejecute como lo hacía antes, mientras que elegir No (el valor predeterminado) detiene la acción para protegerlo.Uso interactivo frente a uso con script: La introducción de esta indicación afecta principalmente al uso interactivo. En las sesiones interactivas, verá la advertencia y tendrá que responder. En el caso de los scripts automatizados (escenarios no interactivos, como tareas programadas o canalizaciones de CI), este mensaje podría provocar que el script se bloquee mientras se espera la entrada. Para evitarlo, recomendamos actualizar estos scripts para que usen explícitamente parámetros seguros (consulte a continuación), asegurándose de que no requieren confirmación manual.
Tomar la iniciativa
La mayoría de los scripts y comandos de PowerShell que usan el comando Invoke-WebRequest seguirán funcionando con poca o ninguna modificación. Por ejemplo, los scripts que solo descargan contenido o funcionan con el cuerpo de la respuesta como texto o datos no se ven afectados y no requieren cambios.
Si tiene scripts que se ven afectados por este cambio, utilice uno de los siguientes métodos.
Opción 1: Usar el nuevo valor predeterminado seguro
Para capturar contenido, no se requiere ninguna acción si el uso típico del comando Invoke-WebRequest es capturar contenido (como descargar archivos o leer texto estático) y no depende de la interacción avanzada del sitio o el análisis de HTML DOM. El nuevo comportamiento predeterminado es más seguro (los scripts incrustados en contenido web no se ejecutarán sin su permiso) y esta es la configuración recomendada para la mayoría de los escenarios.
Para uso interactivo, simplemente responda No a la nueva solicitud de seguridad (o presione Entrar para aceptar el valor predeterminado) y vuelva a ejecutar el comando con el parámetro -UseBasicParsing para recuperar el contenido de forma segura. Esto evitará la ejecución de cualquier código de script en la página recuperada. Si captura contenido web con frecuencia de forma interactiva, considere la posibilidad de usar el parámetro -UseBasicParsing de forma predeterminada en sus comandos para omitir el mensaje por completo y garantizar la máxima seguridad.
Para scripts automatizados o tareas programadas, actualícelos para incluir el parámetro -UseBasicParsing en las llamadas Invoke-WebRequest . Esto preselecciona el comportamiento seguro para que el mensaje no aparezca y el script continúe ejecutándose sin interrupción. De este modo, se garantiza que la automatización se ejecuta sin problemas después de la actualización y, al mismo tiempo, se aprovecha la mejora de la seguridad.
- Para scripts que se ejecutan con la opción -NoProfile: Si el script tiene muchas ocurrencias de las llamadas Invoke-WebRequest , declare $PSDefaultParameterValues['Invoke-WebRequest:UseBasicParsing'] = $true en la parte superior del script.
- Cuando se usa Invoke-WebRequest con el parámetro -UseBasicParsing , no es posible analizar el modelo de objetos de documento completo (DOM) con componentes de Internet Explorer (interfaz HTMLDocument (mshtml)).
Opción 2: Refactorizar scripts para seguridad a largo plazo
En el caso de scripts o automatizaciones que se ocupan de contenido web público o que no es de confianza y requieren el procesamiento de estructuras o formularios HTML, considere la posibilidad de refactorizarlos o actualizarlos para la seguridad a largo plazo. En lugar de confiar en PowerShell para analizar y ejecutar scripts de páginas web potencialmente peligrosos, puede:
Use métodos o bibliotecas de análisis alternativos (por ejemplo, trate el contenido de la página web como texto sin formato o XML, mediante regex o bibliotecas de análisis XML/HTML que no ejecuten scripts).
Modernice su enfoque de las interacciones web, tal vez usando el nuevo PowerShell Core (versión 7.x o posterior) que no depende del motor de Internet Explorer y evita la ejecución de scripts, o mediante el uso de herramientas especializadas de web scraping que controlan el contenido de forma más segura. Limite la confianza en las características específicas de Internet Explorer, ya que Internet Explorer está en desuso. Planee reescribir partes de los scripts que dependan de esas características para que puedan funcionar en un entorno donde el contenido web se controle de forma segura.
- Invoke-WebRequest en PowerShell Core (versión 7.x o posterior) no admite el análisis DOM con componentes de Internet Explorer. Su análisis predeterminado recuperará el contenido de forma segura sin la ejecución de scripts.
El objetivo de la refactorización es lograr la funcionalidad necesaria sin exponerse a riesgos de seguridad, adoptando así los valores predeterminados más seguros introducidos por este cambio.
Opción 3: Optar por el comportamiento heredado (solo escenarios de confianza)
Si tiene una necesidad específica de usar todas las capacidades de análisis HTML del comando Invoke-WebRequest (como interactuar con los campos del formulario o raspar datos estructurados) y confía en el origen del contenido web, aún puede continuar con el comportamiento de análisis heredado caso por caso. En sesiones interactivas, esto simplemente significa elegir Sí en el aviso de confirmación para permitir que la operación continúe. Recibirá un recordatorio del riesgo de seguridad cada vez que lo haga. Continuar sin el parámetro -UseBasicParsing debe limitarse a escenarios en los que confíe plenamente en el contenido web (por ejemplo, aplicaciones web internas bajo su control o sitios web seguros conocidos).
Importante
Este enfoque no se recomienda para scripts que se ejecutan en contenido web público o que no es de confianza, ya que reintroduce el riesgo de ejecución silenciosa de scripts que esta actualización pretende mitigar. Además, para la automatización no interactiva, no hay ningún mecanismo integrado para aceptar automáticamente la solicitud, por lo que no es recomendable confiar en el análisis completo de los scripts (además de ser arriesgado). Use esta opción con moderación y solo como medida temporal.
Preguntas frecuentes
¿Este cambio afecta a mis scripts?
En la mayoría de los casos, los scripts que descargan archivos o capturan contenido web como texto seguirán funcionando. Para evitar el mensaje, agregue el parámetro -UseBasicParsing .
Los scripts que utilizan análisis HTML avanzado (como formularios o DOM) pueden colgar o generar datos sin procesar en lugar de objetos estructurados; Tendrá que cambiar a un análisis básico o modificar el script para controlar el contenido de forma diferente.
¿Cómo puedo evitar el nuevo mensaje de confirmación en mis scripts?
Use siempre el parámetro -UseBasicParsing con el comando Invoke-WebRequest en scripts de PowerShell para garantizar una ejecución segura y no interactiva.
¿Requiere este cambio alguna acción para los scripts heredados?
Sí. Los scripts que dependen del análisis heredado deben actualizarse para participar o refactorizarse.
¿Cómo se refleja este cambio en las actualizaciones de revisiones en caliente y estándar?
El cambio en PowerShell es aplicable tanto a las actualizaciones estándar como a las actualizaciones de revisiones en caliente, lo que da como resultado el mismo cambio de comportamiento.
¿Este cambio se alinea con PowerShell 7?
Sí. PowerShell 7 ya usa el análisis seguro de forma predeterminada.
¿Qué debo hacer con los scripts o módulos de terceros?
Póngase en contacto con los propietarios de módulos para obtener planes de soporte técnico. Use temporalmente la participación para contenido de confianza durante la migración.
¿Cómo puedo comprobar que mi entorno está preparado?
Para prepararse y validar este cambio, le recomendamos que:
- Identificar scripts con características DOM.
- Pruebe la automatización con el nuevo valor predeterminado.
- Limite la participación heredada a fuentes de confianza.
- Planifique la refactorización para contenido que no es de confianza.