Confira !!
Espremido na versão do compilador GCC 12 é o suporte para a funcionalidade Shadow Call Stack no Arm de 64 bits (AArch64).
O LLVM/Clang liderou o Shadow Call Stack (SCS) para proteger o endereço de retorno de uma função em tempo de execução. Shadow Call Stack provou ser útil em AArch64 enquanto foi um fracasso em x86_64 e já foi removido .
A documentação do LLVM resume o Shadow Call Stack como:
O ShadowCallStack é um passo de instrumentação, atualmente implementado apenas para aarch64, que protege programas contra sobregravações de endereço de retorno (por exemplo, estouro de buffer de pilha). folhas e carregar o endereço de retorno da pilha de chamadas de sombra no epílogo da função. O endereço de retorno também é armazenado na pilha regular para compatibilidade com desbobinadores, mas de outra forma não é utilizado.
A implementação do aarch64 é considerada pronta para produção, e uma implementação do runtime foi adicionada à libc (biônica) do Android. Uma implementação x86_64 foi avaliada usando o Chromium e descobriu-se que havia deficiências críticas de desempenho e segurança – foi removida no LLVM 9.0.
Graças ao trabalho de um engenheiro do Alibaba, o GCC agora tem suporte ao Shadow Call Stack no AArch64 também para as mudanças do lado do compilador para suporte ao SCS.
Assim como com o Clang, a funcionalidade GCC SCS AArch64 pode ser habilitada com a opção de compilador -fsanitize=shadow-call-stack .
Até a próxima !1
Nenhum comentário:
Postar um comentário