Un ejemplo que se usa ocasionalmente en entornos educativos y corporativos es AppLocker , que puede restringir la ejecución de la aplicación a una lista blanca basada en atributos definidos por el administrador, incluido el nombre del editor de una firma o el hash de un archivo específico.
El mayor problema es, por supuesto, la sobrecarga de administración, que tiene que incluir específicamente en la lista blanca todos los programas que un usuario pueda necesitar. Además, muchos editores no firman sus aplicaciones. Y, por supuesto, no es una solución infalible, por ejemplo, un error en un programa incluido en la lista blanca aún podría ser explotado para ejecutar código arbitrario 1 .
En realidad, la firma del ejecutable no es ni siquiera la parte importante. La lista blanca se puede implementar por ruta para toda la diferencia que haga. Lo importante en este esquema es que el usuario no tiene permisos de escritura en el directorio del programa 2 . Suponiendo que eso sea cierto, ¿qué ventaja ofrece la verificación en el tiempo de ejecución sobre la verificación en el momento de la instalación? Nadie puede cambiar el programa instalado. Si el vector de ataque es la edición de archivos sin conexión, la encriptación completa del disco es la respuesta correcta.
1 La mayoría de estos errores no se considerarían graves en un entorno normal, donde no conducirían a una escalada de privilegios. W ^ X todavía se puede omitir con ROP .
2 Incluso la verificación de la firma del ejecutable faltará a los módulos externos (por ejemplo, bibliotecas con vínculos dinámicos) de forma predeterminada. Y habilitar que puede tener impactos significativos en el rendimiento .