Cuando un parche de terceros sustituye curl.exe
en Windows Server 2022 se quebranta la firma del componente y, con ella, la relación de confianza del almacén WinSxS. A partir de ese momento fallan Windows Update y sfc /scannow
. En este artículo aprenderás a devolver el binario original sin interrupciones ni reinicios inesperados, y a blindar tu entorno para que el incidente no vuelva a repetirse.
Contexto de la vulnerabilidad de octubre 2023
En octubre de 2023 se publicó una vulnerabilidad crítica (CVE‑2023‑38545) que afectaba a cURL. Aunque Microsoft incluyó su propia revisión en boletines mensuales, muchos administradores descargaron e instalaron manualmente la versión 8.4.0 disponible en curl.se. Ese binario carecía de la firma y del catálogo que Windows espera encontrar en su carpeta de sistema, de modo que cualquier sustitución directa de %windir%\System32\curl.exe
o %windir%\SysWOW64\curl.exe
viola la integridad del sistema de archivos protegido (WFP) y genera los síntomas descritos.
Qué sucede cuando se reemplaza curl.exe
- El hash calculado por el Servicio de Protección de Recursos de Windows (WRP) no coincide con el almacenado en WinSxS.
sfc /scannow
registra “found corrupt files but was unable to fix some of them”.- Las actualizaciones acumulativas no se pueden aplicar porque el instalador de paquetes detecta corrupción en el componente curl.exe y revierte la transacción.
- Códigos comunes en el Visor de eventos:
0x800f081f
,0x80073712
,0x800f0984
.
Síntomas y detección rápida
PS C:> sfc /scannow
Beginning system scan...
Windows Resource Protection found corrupt files but was unable to fix some of them.
Details are included in the CBS.Log windir\Logs\CBS\CBS.log
Busca líneas similares a:
Cannot repair member file [l:12]'curl.exe' of Windows-Server-Foundation-Package
Hash mismatch – Expected: 42b6… Found: 9f1a…
Pasos de recuperación detallados
Eliminar la versión manual de curl.exe
(si procede)
Si el ejecutable ajeno sigue presente, bórralo antes de continuar para evitar que el sistema lo retenga en memoria:
del /f %windir%\System32\curl.exe
del /f %windir%\SysWOW64\curl.exe
Restaurar el almacén con DISM (servidor con Internet)
DISM /Online /Cleanup-Image /RestoreHealth
DISM descargará los binarios correctos desde Windows Update, comparará manifiestos y reinyectará el componente sin reiniciar. Sólo pedirá reinicio si un archivo en uso impide la sustitución.
Restaurar DISM en entornos aislados
- Monta un ISO o USB con la misma edición, idioma y nivel de compilación que tu instalación (por ejemplo, Windows Server 2022 Datacenter 20348.2612).
- Comprueba los índices disponibles:
Dism /Get-WimInfo /WimFile:E:\sources\install.wim
- Ejecuta la reparación apuntando al índice correcto y evita la búsqueda en línea:
DISM /Online /Cleanup-Image /RestoreHealth ^
/Source:E:\sources\install.wim:2 ^
/LimitAccess
Interpreta los códigos de error más comunes:
Código | Significado | Acción recomendada |
---|---|---|
0x800f081f | No se encontró el archivo fuente en la ruta indicada | Verifica que el ISO coincide con la compilación instalada e indica el índice correcto |
0x800f0922 | Espacio insuficiente en la partición reservada | Limpia WinSxS (Dism /Online /Cleanup-Image /StartComponentCleanup ) o amplía la partición |
0x800f0984 | Corrupción de archivo persistente | Repite DISM desde un medio limpio; si persiste, evalúa repair‑install |
Verificación con SFC
sfc /scannow
Deberías obtener “Windows Resource Protection did not find any integrity violations”. Esto confirma que la versión correcta de curl.exe
se ha restaurado tanto en la imagen de componentes como en la carpeta activa.
Aplicar actualizaciones pendientes
Con la integridad restablecida, ejecuta de nuevo Windows Update o aplica manualmente los paquetes .msu descargados desde el Catálogo. Ya no deberías ver errores de instalación.
Reinicio planificado
Aunque DISM y SFC realizan la mayoría de los cambios en caliente, programa un reinicio durante la próxima ventana de mantenimiento para asegurarte de que no existan imágenes mapeadas antiguas en memoria.
Cómo evitar el problema en el futuro
- Espera a los boletines oficiales de Microsoft. Los componentes “inbox” reciben parches a través de Patch Tuesday. Sustituirlos manualmente genera conflictos de firma.
- Instala herramientas de terceros fuera de
%windir%
. Si necesitas una versión más reciente de cURL, ponla enC:\Tools\curl\bin
y añade esa ruta alPATH
. Así evitas colisiones con la edición firmada. - Usa GPOs o Catálogo WSUS para aprobar Security‑Only Updates si buscas mínima superficie de cambio pero máxima seguridad.
- Valida en un entorno de ensayo. Implementa scripts de integración continua que ejecuten
sfc /verifyonly
tras cada cambio para detectar alteraciones antes de llegar a producción.
Preguntas frecuentes
¿DISM requiere conexión a Internet?
No necesariamente. Si utilizas el parámetro /LimitAccess
y proporcionas un medio de instalación completo (install.wim
o install.esd
), la reparación es totalmente local.
¿Puedo reemplazar sólo el ejecutable sin tocar WinSxS?
No. Windows valida la firma de cada archivo protegido frente a los manifiestos de WinSxS. Cualquier binario que no exista allí o cuyo hash no coincida provocará errores de confianza.
¿Existe riesgo al ejecutar DISM en servidores en producción?
El proceso es seguro: no desmonta volúmenes ni reinicia servicios críticos. Aun así, sigue buenas prácticas—respaldo de estado del sistema y ventana de mantenimiento—por si surgiera la necesidad de un rollback.
¿Qué pasa si DISM tampoco resuelve la corrupción?
Dos escenarios: (1) el medio de instalación no coincide byte a byte con la compilación; (2) la imagen está tan dañada que requiere un Repair‑Install (in‑place upgrade conservando datos). Antes de llegar a ese extremo, intenta:
Dism /Online /Cleanup-Image /AnalyzeComponentStore
para medir la corrupción.- Extraer manualmente el archivo desde la actualización acumulativa cab y registrarlo con
regsvr32 /s
si aplica.
Resumen de lecciones aprendidas
Reemplazar manualmente un binario protegido como curl.exe
en Windows Server 2022 desencadena una cadena de fallos de integridad. La solución pasa por:
- Eliminar la versión no firmada.
- Recuperar la imagen con DISM (online u offline).
- Confirmar con SFC.
- Aplicar parches pendientes.
- Planificar un reinicio controlado.
Con estas acciones restauras la confianza del sistema de archivos protegido y devuelves la capacidad de actualización al servidor, todo ello sin afectar la disponibilidad del servicio en producción.