Fecha de publicación original: 9 de diciembre de 2025
KB ID: 5074596
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. Personas el uso de dispositivos en la configuración personal o doméstica no suele ser necesario realizar ninguna acción, ya que estos escenarios son poco comunes fuera de los entornos administrados por TI.
|
Cambiar fecha |
Cambiar descripción |
|
20 de diciembre de 2025 |
|
Resumen
Windows PowerShell 5.1 ahora muestra un aviso de confirmación de seguridad al usar el comando Invoke-WebRequest para capturar páginas web sin parámetros especiales.
Advertencia de seguridad: Riesgo de ejecución de scripts Invoke-WebRequest analiza el contenido de la página web. El código de script en la página web se puede ejecutar cuando se analiza la página.
ACCIÓN RECOMENDADA: Use el modificador -UseBasicParsing para evitar la ejecución de código de script.
¿Desea continuar?
Este aviso advierte que los scripts de la página pueden ejecutarse durante el análisis y recomienda usar el parámetro -UseBasicParsing para evitar cualquier ejecución de script. Los usuarios deben elegir continuar o cancelar la operación. Este cambio ayuda a protegerse frente a contenido web malintencionado exigiendo el consentimiento del usuario antes de realizar 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 intencionadamente un aviso 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 compatibles hayan instalado Windows Novedades publican el 9 de diciembre de 2025 y después. Para obtener más información, consulte CVE-2025-54100.
¿Qué ha cambiado?
-
Comportamiento anterior
-
Análisis del modelo de objetos de documento completo (DOM) mediante componentes de Internet Explorer (interfaz de HTMLDocument (mshtml)), que podrían ejecutar scripts del contenido descargado.
-
-
Nuevo comportamiento
-
Mensaje 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 aviso de seguridad (cuando no se use ningún parámetro especial). El aviso aparece en la consola de PowerShell con una advertencia sobre el riesgo de ejecución de scripts. Esto significa que PowerShell se pausa para advertirle de que, sin precauciones, el contenido del script de la página web podría ejecutarse en el sistema cuando se procese. 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ó por problemas de seguridad y sugiere volver a ejecutar el comando mediante el parámetro -UseBasicParsing para un procesamiento seguro. Si elige Sí, PowerShell procederá a analizar la página con el método anterior (análisis HTML completo), lo que significa que cargará el contenido y los scripts incrustados como antes. Básicamente, si elige Sí significa que acepta el riesgo y permite que el comando se ejecute como lo hacía antes, al seleccionar No (el valor predeterminado) detiene la acción para protegerle.
-
Uso interactivo frente a uso con script: La introducción de este aviso afecta principalmente al uso interactivo. En las sesiones interactivas, verá la advertencia y tendrá que responder. Para scripts automatizados (escenarios no interactivos, como tareas programadas o canalizaciones de CI), este mensaje podría hacer que el script se bloquee mientras se espera la entrada. Para evitar esto, se recomienda actualizar estos scripts para usar explícitamente los parámetros seguros (ver a continuación), asegurándose de que no requieren confirmación manual.
-
Tomar medidas
La mayoría de los scripts y comandos de PowerShell que usan el comando Invoke-WebRequest seguirán funcionando con pocas o ninguna modificación. Por ejemplo, los scripts que solo descargan contenido o funcionan con el cuerpo de respuesta como texto o datos no se ven afectados y no requieren cambios.
Si tiene scripts que se ven afectados por este cambio, use uno de los siguientes enfoques.
Para capturar contenido, no es necesario realizar 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 se basa en la interacción avanzada del sitio o el análisis HTML DOM. El nuevo comportamiento predeterminado es más seguro (los scripts incrustados en el 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 al nuevo aviso 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 capturada. Si suele capturar contenido web de forma interactiva, considere la posibilidad de usar el parámetro -UseBasicParsing de forma predeterminada en los comandos para omitir el mensaje por completo y garantizar la máxima seguridad.
Para scripts automatizados o tareas programadas, actualícelos para que incluyan el parámetro -UseBasicParsing en las llamadasInvoke-WebRequest. Esto preselecciona el comportamiento seguro para que no aparezca el mensaje y el script siga ejecutándose sin interrupción. Al hacerlo, te asegurarás de que la automatización se ejecute sin problemas después de la actualización, a la vez que aprovechas la seguridad mejorada.
-
Para los scripts que se ejecutan con la opción -NoProfile: si el script tiene muchas repeticiones de las llamadas Invoke-WebRequest, declare $PSDefaultParameterValues['Invoke-WebRequest:UseBasicParsing'] = $true en la parte superior del script.
-
Cuando Invoke-WebRequest se usa con el parámetro -UseBasicParsing , no es posible analizar el modelo de objetos de documento completo (DOM) mediante componentes de Internet Explorer (interfaz HTMLDocument (mshtml)).
Para scripts o automatización que tratan con contenido web público o no de confianza y requieren el procesamiento de estructuras o formularios HTML, considere la posibilidad de refactorizarlos o actualizarlos para mayor 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, con bibliotecas de análisis regex o XML/HTML que no ejecuten scripts).
-
Modernice su enfoque de las interacciones web, tal vez mediante el uso de PowerShell Core más reciente (versión 7.x o posterior), que no depende del motor de Internet Explorer y evita ejecutar scripts o mediante herramientas de recorte web especializadas que controlan el contenido de forma más segura. Limite la dependencia de características específicas de Internet Explorer, ya que Internet Explorer está en desuso. Planee reescribir partes de los scripts que dependen de esas características para que puedan trabajar en un entorno donde el contenido web se administre 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á de forma segura el contenido sin la ejecución del script.
-
-
El objetivo con la refactorización es lograr su funcionalidad necesaria sin exponerse a riesgos de seguridad, adoptando así los valores predeterminados más seguros introducidos por este cambio.
Si tiene una necesidad específica de usar las capacidades de análisis HTML completas del comando Invoke-WebRequest (como interactuar con campos de formulario o eliminar datos estructurados) y confía en el origen del contenido web, puede continuar con el comportamiento de análisis heredado caso por caso. En las sesiones interactivas, simplemente significa seleccionar Sí en el aviso de confirmación para permitir que la operación continúe. Recibirás un recordatorio del riesgo de seguridad cada vez que lo hagas. El procedimiento 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 los scripts que se ejecutan en contenido web público o no de confianza, yaque el riesgo de ejecución silenciosa de scripts que esta actualización está pensada para mitigar. Además, para la automatización no interactiva, no hay ningún mecanismo integrado para dar su consentimiento automáticamente al aviso, por lo que no es aconsejable confiar en el análisis completo de scripts (además de ser arriesgado). Use esta opción con moderación y solo como medida temporal.
Preguntas más frecuentes
En la mayoría de los casos, los scripts que descargan archivos o capturan contenido web como texto seguirán funcionando. Para evitar el aviso, agregue el parámetro -UseBasicParsing.
Los scripts que usan análisis html avanzado (como formularios o DOM) pueden bloquearse o generar datos sin procesar en lugar de objetos estructurados; tendrá que cambiar al análisis básico o modificar el script para controlar el contenido de forma diferente.
Use siempre el parámetro -UseBasicParsing con el comando Invoke-WebRequest en scripts de PowerShell para garantizar una ejecución segura y no interactiva.
Sí. Los scripts según el análisis heredado deben actualizarse para participar o refactorizar.
El cambio en PowerShell se aplica tanto a las actualizaciones estándar como a las actualizaciones de hotpatch, lo que produce el mismo cambio de comportamiento.
Sí. PowerShell 7 ya usa el análisis seguro de forma predeterminada.
Ponte en contacto con los propietarios del módulo para obtener planes de soporte técnico. Use la opción de participar temporalmente para el contenido de confianza durante la migración.
Para preparar y validar este cambio, le recomendamos que:
-
Identifique scripts con las características dom.
-
Pruebe la automatización con el nuevo valor predeterminado.
-
Limitar la opción heredada a los orígenes de confianza.
-
Planear la refactorización del contenido que no es de confianza.