Clang planea agregar un modo de seguridad mejorado

Aaron Ballman, el principal mantenedor del compilador Clang y miembro de los grupos de trabajo de estándares WG21 (C++) y WG14 (C), ha comenzado a discutir la adición de un modo de mayor seguridad al compilador Clang. Este nuevo modo permitirá activar un conjunto de opciones para aumentar la protección, similar a la opción "-fhardened" añadida en GCC 14, que activa las opciones "-D_FORTIFY_SOURCE=3 -D_GLIBCXX_ASSERTIONS -ftrivial-auto-var-init=zero -fPIE -pie -Wl,-z,relro,-z,now -fstack-protector-strong -fstack-clash-protection -fcf-protection=full".

Se señala que actualmente se está trabajando en la adición de capacidades para mejorar la seguridad en los estándares C y C++, pero este proceso no es rápido, dado que en Clang ya están disponibles opciones individuales con la implementación de mecanismos de protección adicionales. Los métodos de protección implementados a menudo conducen a incompatibilidades específicas con el código existente o a violaciones de ABI, lo que impide activarlos por defecto. Además, tales opciones están dispersas (banderas para controlar la compilación, banderas para la generación de instrucciones de máquina vinculadas a arquitecturas de hardware, advertencias, modos de diagnóstico, macros), están mal documentadas y a menudo pasan desapercibidas para muchos desarrolladores.

Una configuración unificada simplificará la activación de las opciones relacionadas con la seguridad y facilitará su aplicación. Se están considerando varias formas de activar el modo de mayor seguridad, por ejemplo, se discute la activación a través de la bandera "-fhardened", un conjunto de configuraciones "—config=hardened", un controlador separado (clang —driver-mode) o opciones separadas "-fhardened, -mhardened y -Whardened", vinculadas a la compilación, la generación de código y la salida de advertencias. El modo puede abarcar:

  • Capacidades del compilador: -ftrivial-auto-var-init, -fPIE, -fcf-protection, etc.
  • Capacidades vinculadas a la generación de código para plataformas objetivo: -mspeculative-load-hardening, -mlvi-hardening, etc.
  • Advertencias: -Wall, -Wextra, -Werror=return-type, etc.
  • Modos de refuerzo de seguridad en la biblioteca estándar de funciones.
  • Macros: _FORTIFY_SOURCE, _GLIBCXX_ASSERTIONS, etc.
  • Requisito de selección explícita del estándar del lenguaje utilizado.
  • Rechazo de la compilación de código utilizando estándares obsoletos C89 y C++98.
  • Transmisión de banderas adicionales al enlazador, por ejemplo, para habilitar la aleatorización de direcciones.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster