Kernel Patch Protection ( KPP ), conocido informalmente como PatchGuard , es una característica de las ediciones de 64 bits ( x64 ) de Microsoft Windows que impide la aplicación de parches al kernel . Se introdujo por primera vez en 2005 con las ediciones x64 de Windows Vista y Windows Server 2003 Service Pack 1. [1]
"Parchear el núcleo" se refiere a una modificación no admitida del componente central o núcleo del sistema operativo Windows. Dicha modificación nunca ha sido admitida por Microsoft porque, según Microsoft, puede reducir en gran medida la seguridad, la confiabilidad y el rendimiento del sistema. [1] Aunque Microsoft no lo recomienda, es posible parchear el núcleo en las ediciones x86 de Windows; sin embargo, con las ediciones x64 de Windows, Microsoft optó por implementar protección adicional y barreras técnicas para la aplicación de parches en el núcleo.
Dado que es posible aplicar parches al núcleo en las ediciones de 32 bits (x86) de Windows, varios desarrolladores de software antivirus utilizan parches al núcleo para implementar antivirus y otros servicios de seguridad. Estas técnicas no funcionan en equipos que ejecutan ediciones x64 de Windows. Debido a esto, Kernel Patch Protection hizo que los fabricantes de antivirus tuvieran que rediseñar su software sin utilizar técnicas de parches al núcleo.
Sin embargo, debido al diseño del kernel de Windows, Kernel Patch Protection no puede evitar por completo la aplicación de parches al kernel. [2] [3] Esto ha dado lugar a críticas de que, dado que KPP es una defensa imperfecta, los problemas causados a los proveedores de antivirus superan los beneficios porque los autores de software malicioso simplemente encontrarán formas de eludir sus defensas. [4] [5] Sin embargo, Kernel Patch Protection todavía puede prevenir problemas de estabilidad, confiabilidad y rendimiento del sistema causados por software legítimo que aplica parches al kernel de formas no compatibles.
El núcleo de Windows está diseñado para que los controladores de dispositivos tengan el mismo nivel de privilegios que el propio núcleo. [6] Se espera que los controladores de dispositivos no modifiquen ni apliquen parches a las estructuras centrales del sistema dentro del núcleo. [1] Sin embargo, en las ediciones x86 de Windows, Windows no hace cumplir esta expectativa. Como resultado, algunos programas x86, en particular ciertos programas de seguridad y antivirus , fueron diseñados para realizar tareas necesarias mediante la carga de controladores que modifican las estructuras centrales del núcleo. [6] [7]
En las ediciones x64 de Windows, Microsoft comenzó a aplicar restricciones sobre qué estructuras pueden y no pueden modificar los controladores. La protección de parches del núcleo es la tecnología que aplica estas restricciones. Funciona comprobando periódicamente que las estructuras del sistema protegidas en el núcleo no se hayan modificado. Si se detecta una modificación, Windows iniciará una comprobación de errores y apagará el sistema [6] [8] con una pantalla azul y/o reiniciará. El número de comprobación de errores correspondiente es 0x109, el código de comprobación de errores es CRITICAL_STRUCTURE_CORRUPTION. Las modificaciones prohibidas incluyen: [8]
La protección de parches del núcleo solo protege contra los controladores de dispositivos que modifican el núcleo. No ofrece ninguna protección contra un controlador de dispositivo que parchea a otro. [10]
En definitiva, dado que los controladores de dispositivos tienen el mismo nivel de privilegios que el propio núcleo, es imposible evitar por completo que los controladores eludan la protección de parches del núcleo y luego apliquen parches al núcleo. [2] Sin embargo, KPP presenta un obstáculo significativo para la aplicación exitosa de parches al núcleo. Con un código altamente ofuscado y nombres de símbolos engañosos, KPP emplea seguridad por oscuridad para obstaculizar los intentos de eludirlo. [6] [11] Las actualizaciones periódicas de KPP también lo convierten en un "objetivo en movimiento", ya que las técnicas de elusión que pueden funcionar durante un tiempo es probable que fallen con la próxima actualización. Desde su creación en 2005, Microsoft ha publicado hasta ahora dos actualizaciones importantes de KPP, cada una diseñada para romper técnicas de elusión conocidas en versiones anteriores. [6] [12] [13]
Microsoft nunca ha apoyado la aplicación de parches al kernel porque puede causar una serie de efectos negativos. [7] La protección de parches del kernel protege contra estos efectos negativos, que incluyen:
Las preguntas frecuentes sobre protección de parches del kernel de Microsoft explican con más detalle:
Debido a que la aplicación de parches reemplaza el código del kernel con código desconocido y no probado, no hay manera de evaluar la calidad o el impacto del código de terceros... Un examen de los datos de Análisis de fallos en línea (OCA) en Microsoft muestra que los fallos del sistema suelen ser resultado de software tanto malicioso como no malicioso que aplica parches al kernel.
— "Protección mediante parches del núcleo: preguntas frecuentes". Microsoft . 22 de enero de 2007 . Consultado el 22 de febrero de 2007 .
Algunos programas de seguridad informática, como McAfee VirusScan de McAfee y Norton AntiVirus de Symantec , funcionaban parcheando el núcleo en sistemas x86. [ cita requerida ] Se sabe que el software antivirus creado por Kaspersky Lab hace un uso extensivo de parches de código del núcleo en ediciones x86 de Windows. [16] Este tipo de software antivirus no funcionará en computadoras que ejecuten ediciones x64 de Windows debido a Kernel Patch Protection. [17] Debido a esto, McAfee solicitó a Microsoft que eliminara KPP de Windows por completo o que hiciera excepciones para el software creado por "compañías confiables" como ellos mismos. [4]
El software antivirus corporativo de Symantec [18] y la gama Norton 2010 y posteriores [19] funcionaron en ediciones x64 de Windows a pesar de las restricciones de KPP, aunque con menos capacidad para brindar protección contra malware de día cero. El software antivirus creado por competidores como ESET [20] , Trend Micro [21] , Grisoft AVG [22] , avast!, Avira Anti-Vir y Sophos no parchean el núcleo en las configuraciones predeterminadas, pero pueden hacerlo cuando se habilitan funciones como "protección avanzada de procesos" o "prevenir la terminación no autorizada de procesos". [23]
Microsoft no debilita la protección de parches del núcleo haciendo excepciones, aunque se sabe que Microsoft relaja sus restricciones de vez en cuando, como en beneficio del software de virtualización de hipervisor . [10] [24] En cambio, Microsoft trabajó con empresas de terceros para crear nuevas interfaces de programación de aplicaciones que ayudan al software de seguridad a realizar las tareas necesarias sin parchear el núcleo. [15] Estas nuevas interfaces se incluyeron en Windows Vista Service Pack 1. [ 25]
Debido al diseño del núcleo de Windows, la protección contra parches del núcleo no puede impedir por completo la aplicación de parches al núcleo. [2] Esto llevó a los proveedores de seguridad informática McAfee y Symantec a decir que, dado que KPP es una defensa imperfecta, los problemas causados a los proveedores de seguridad superan los beneficios, porque el software malicioso simplemente encontrará formas de eludir las defensas de KPP y el software de seguridad de terceros tendrá menos libertad de acción para defender el sistema. [4] [5]
En enero de 2006, investigadores de seguridad conocidos por los seudónimos "skape" y "Skywing" publicaron un informe que describe métodos, algunos teóricos, a través de los cuales se podría eludir la protección de parches del núcleo. [26] Skywing publicó un segundo informe en enero de 2007 sobre la elusión de la versión 2 de KPP, [27] y un tercer informe en septiembre de 2007 sobre la versión 3 de KPP . [28] Además, en octubre de 2006, la empresa de seguridad Authentium desarrolló un método de trabajo para eludir KPP. [29]
Sin embargo, Microsoft ha declarado que se compromete a eliminar cualquier falla que permita eludir KPP como parte de su proceso estándar del Centro de Respuesta de Seguridad. [30] En consonancia con esta declaración, Microsoft ha lanzado hasta ahora dos actualizaciones importantes de KPP, cada una diseñada para romper técnicas de evasión conocidas en versiones anteriores. [6] [12] [13]
En 2006, la Comisión Europea expresó su preocupación por la protección con parches del núcleo, diciendo que era anticompetitiva . [31] Sin embargo, el propio producto antivirus de Microsoft, Windows Live OneCare , no tenía ninguna excepción especial a la protección con parches del núcleo. En su lugar, Windows Live OneCare utilizaba (y siempre había utilizado) métodos distintos a la aplicación de parches al núcleo para proporcionar servicios de protección antivirus. [32] Sin embargo, por otras razones, una edición x64 de Windows Live OneCare no estuvo disponible hasta el 15 de noviembre de 2007. [33]
Artículos de Uninformed.org:
Enfoques de bypass de trabajo
Avisos de seguridad de Microsoft: