A Clang pretende adicionar um modo de segurança reforçada

Aaron Ballman, o principal mantenedor do compilador Clang e membro das equipes de desenvolvimento dos padrões WG21 (C++) e WG14 (C), iniciou uma discussão sobre a adição de um modo de segurança reforçada no compilador Clang. O novo modo permitirá ativar um conjunto de opções para reforçar a proteção, semelhante à flag "-fhardened" adicionada no GCC 14, que ativa as opções "-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".

Observa-se que atualmente há um trabalho em andamento para adicionar recursos de segurança às normas C e C++, mas esse processo não é rápido, considerando que no Clang já estão disponíveis opções individuais que implementam mecanismos de proteção adicionais. Os métodos de proteção implementados muitas vezes levam a incompatibilidades com o código existente ou à violação da ABI, o que impede sua ativação por padrão. Além disso, tais opções são dispersas (flags para controle de compilação, flags de geração de instruções de máquina vinculadas a arquiteturas de hardware, avisos, modos de diagnóstico, macros), mal documentadas e caem na desatenção de muitos desenvolvedores.

Uma configuração única unificará a ativação das opções relacionadas à segurança e simplificará sua aplicação. Vários métodos de ativação do modo de segurança reforçada estão sendo considerados, como a ativação através da flag "-fhardened", um conjunto de configurações "--config=hardened", um driver separado (clang --driver-mode) ou opções individuais "-fhardened, -mhardened e -Whardened", ligadas à compilação, geração de código e emissão de avisos. O modo pode abranger:

  • Recursos do compilador: -ftrivial-auto-var-init, -fPIE, -fcf-protection, etc.
  • Recursos relacionados à geração de código para plataformas alvo: -mspeculative-load-hardening, -mlvi-hardening, etc.
  • Avisos: -Wall, -Wextra, -Werror=return-type, etc.
  • Modos de segurança reforçada na biblioteca padrão de funções.
  • Macros: _FORTIFY_SOURCE, _GLIBCXX_ASSERTIONS, etc.
  • Requisito para a escolha explícita do padrão de linguagem a ser utilizado.
  • Recusa em compilar código que utilize os padrões obsoletos C89 e C++98.
  • Passagem de flags adicionais para o vinculador, por exemplo, para incluir randomização de endereços.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster