Ícone do site Embarcadero RAD Studio, Delphi, & C++Builder Blogs

Sinalizadores de segurança RAD Studio 11.1 e Windows PE

peflags111 01

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.

Sair da versão mobile