Proteção avançada

GCC 15 integra suporte para Arm Guarded Control Stack (GCS)

Ilustração do mascote GNU em azul sobre fundo escuro, com a cabeça de um boi estilizada e um banner escrito GNU.

O GCC 15, a mais recente versão do compilador GNU, está se aproximando do final do desenvolvimento de novos recursos para focar na correção de bugs antes do lançamento estável da versão 15.1, previsto para o início de 2025. Entre as últimas novidades, foi adicionado suporte para geração de código compatível com o recurso Arm Guarded Control Stack (GCS), reforçando a segurança em plataformas Arm.

O que é o Arm Guarded Control Stack (GCS)?

Introduzido pela Arm nas extensões de CPU de 2022, o Guarded Control Stack (GCS) é uma tecnologia projetada para mitigar ataques de programação de retorno (ROP). Segundo a documentação oficial da Arm, o GCS funciona como uma região protegida do espaço de endereço virtual, alocada pelo software. Quando o processador executa uma instrução “Branch with Link” (BL), o endereço de retorno é armazenado tanto no GCS quanto no registrador de link (LR). Ao retornar de um procedimento, o endereço armazenado é recuperado do GCS e comparado com o valor no LR, assegurando integridade e prevenindo modificações maliciosas.

Para garantir que o GCS seja protegido contra alterações acidentais ou maliciosas, foi introduzida uma nova permissão de Nível 1, que restringe gravações apenas a instruções específicas, como GCSPUSH, ou às instruções BL.

Novo recurso no gcc 15: opção -mbranch-protection=gcs

Com os últimos patches adicionados ao GCC 15, foi introduzida a opção -mbranch-protection=gcs. Essa funcionalidade habilita a geração de código compatível com o GCS em arquiteturas Arm, trazendo avanços significativos em segurança. A mesma opção também permite configurações para o Branch Target Identification (BTI), utilizado em processadores Arm mais antigos.

Essa novidade foi implementada através de vários commits no código-fonte do GCC. Além da adição da opção -mbranch-protection=gcs, os patches atualizam a documentação do GCC, configuram novos parâmetros de proteção no arquivo de configuração e aprimoram as opções padrão para branch protection em arquiteturas aarch64.

Avanços para desenvolvedores e próxima etapa

Com o suporte ao GCS, o GCC 15 oferece aos desenvolvedores Arm um meio robusto de proteger suas aplicações contra ataques ROP. Esse recurso é particularmente útil em ambientes de alto risco, onde a segurança do fluxo de execução é essencial.

Os próximos passos para o GCC 15 incluem testes aprofundados e correções de bugs para garantir a estabilidade da versão 15.1, que deve ser lançada no início de 2025. A adoção antecipada desse recurso pode ser explorada por meio dos códigos-fonte disponíveis no repositório oficial do GCC.

Para mais detalhes sobre o commit relacionado, acesse aqui.