O Delphi e o C++Builder na versão 11.1 habilitam por padrão vários sinalizadores de segurança PE para aplicativos Windows, alguns dos quais já estavam disponíveis, mas um pouco ocultos.
O Delphi há muito tem suporte para ASLR e alguns dos outros sinalizadores de segurança recomendados do Windows. Na recente versão 11.1, a Embarcadero facilitou o uso desses sinalizadores no Delphi e no C++Builder, apresentando opções específicas de linker, habilitando-as por padrão e também criando pacotes e aplicativos que fazem parte do RAD Studio com esses sinalizadores habilitados .
Mais sobre esses sinalizadores do Windows PE
Prevenção de Execução de Dados (DEP)
Permite que o sistema marque uma ou mais páginas de memória como não executáveis, evitando que o código seja executado nessas regiões de memória, dificultando a exploração de estouros de buffer. Você pode ler mais sobre isso na documentação da Microsoft aqui .
Randomização de layout de espaço de endereço (ASLR)
Organiza aleatoriamente as posições do espaço de endereço das principais áreas de dados de um processo, incluindo a base do executável e as posições da pilha, heap e bibliotecas. Impede a exploração de vulnerabilidades de corrupção de memória. Você pode ler mais sobre ASLR na Wikipedia.
ASLR de 64 bits de alta entropia (somente em aplicativos de 64 bits)
Permite que o ASLR use todo o espaço de endereço de 64 bits, como você pode ler aqui .
Serviços de terminal
Crie aplicativos com reconhecimento de Terminal Server (TSAWARE). Isso não está relacionado à segurança e é coberto pela Microsoft aqui .
Suporte aprimorado do RAD Studio
Embora os sinalizadores do compilador existissem antes , o RAD Studio IDE agora expõe esses sinalizadores como opções de vinculador. Você pode ver abaixo as configurações para compiladores Delphi e C++ Windows (obrigado pelas imagens a Jim McKeeth )
Um par de advertências
A configuração do compilador ASLR funciona conforme o esperado para aplicativos Delphi que usam o pacote de tempo de execução. Para programas que vinculam bibliotecas no executável, há um conflito com a maneira como os programas se referem a funções de DLL carregadas com atraso, o que impede o comportamento esperado. Este é um problema que a Embarcadero encontrou após o lançamento e forneceria uma correção em um futuro (próximo).
Como você pode ver abaixo, para um aplicativo com pacotes de tempo de execução, você obtém a configuração adequada, conforme mostrado pelo SysInternals Process Explorer:
Em geral, observe que esses sinalizadores reforçam a segurança e há uma chance de que um aplicativo usando código de baixo nível não funcione mais. Por exemplo, descobrimos que alguns controles ActiveX antigos não funcionam mais no IDE, devido a um conflito com o sinalizador DEP.
Se você encontrar algum problema em seus aplicativos, poderá desabilitar esses sinalizadores, mas recomendamos examinar o problema subjacente, pois algumas empresas começam a exigir que todo o software que usam seja criado com todos os sinalizadores de segurança recomendados pela Microsoft habilitados.
Design. Code. Compile. Deploy.
Start Free Trial Upgrade Today
Free Delphi Community Edition Free C++Builder Community Edition