En seguridad informática , el endurecimiento suele ser el proceso de proteger un sistema reduciendo su superficie de ataque , que es mayor cuando un sistema realiza más funciones; en principio, un sistema monofuncional es más seguro que uno multipropósito. La reducción de las formas de ataque disponibles normalmente incluye el cambio de contraseñas predeterminadas, la eliminación de software innecesario, nombres de usuario o inicios de sesión innecesarios y la desactivación o eliminación de servicios innecesarios .
Las medidas de fortalecimiento pueden incluir la configuración de sistemas de prevención de intrusiones , la desactivación de cuentas, la reducción de los permisos del sistema de archivos y el uso de conexiones de red cifradas.
El endurecimiento binario es una técnica de seguridad en la que se analizan y modifican los ejecutables binarios para protegerlos contra ataques comunes. El endurecimiento binario es independiente de los compiladores e involucra a toda la cadena de herramientas . Por ejemplo, una técnica de endurecimiento binario es detectar posibles desbordamientos de búfer y sustituir el código existente por un código más seguro. La ventaja de manipular binarios es que las vulnerabilidades en el código heredado se pueden corregir automáticamente sin la necesidad de código fuente, que puede no estar disponible u ofuscado. En segundo lugar, las mismas técnicas se pueden aplicar a binarios de varios compiladores, algunos de los cuales pueden ser menos seguros que otros.
El endurecimiento binario suele implicar la modificación no determinista del flujo de control y las direcciones de las instrucciones para evitar que los atacantes reutilicen con éxito el código del programa para realizar ataques. Las técnicas de endurecimiento más comunes son: