Delphi и C++Builder в версии 11.1 по умолчанию включают ряд флагов безопасности PE для приложений Windows, некоторые из которых уже были доступны, но были немного скрыты.
Delphi уже давно поддерживает ASLR и некоторые другие рекомендуемые флаги безопасности Windows. В недавнем выпуске 11.1 Embarcadero упростил использование этих флагов как в Delphi, так и в C++Builder, выделив определенные параметры компоновщика, включив их по умолчанию, а также создав пакеты и приложения, являющиеся частью RAD Studio, с включенными этими флагами. .
Подробнее об этих флагах Windows PE
Предотвращение выполнения данных (DEP)
Позволяет системе помечать одну или несколько страниц памяти как неисполняемые, предотвращая выполнение кода из этих областей памяти, что затрудняет использование переполнений буфера. Подробнее об этом можно прочитать в документации Microsoft здесь .
Рандомизация размещения адресного пространства (ASLR)
Случайным образом упорядочивает позиции в адресном пространстве ключевых областей данных процесса, включая базу исполняемого файла и позиции стека, кучи и библиотек. Предотвращает использование уязвимостей повреждения памяти. Подробнее об ASLR можно прочитать в Википедии.
64-битный ASLR с высокой энтропией (только в 64-битных приложениях)
Позволяет ASLR использовать все 64-битное адресное пространство, о чем можно прочитать здесь .
Службы терминалов
Создавайте приложения, поддерживающие терминальный сервер (TSAWARE). Это не связано с безопасностью и рассматривается Microsoft здесь .
Улучшенная поддержка RAD Studio
Хотя флаги компилятора существовали и раньше , теперь RAD Studio IDE предоставляет эти флаги как параметры компоновщика. Ниже вы можете увидеть настройки для компиляторов Delphi и C++ для Windows (спасибо за изображения Джиму Маккиту )
Пара предостережений
Конфигурация компилятора ASLR работает должным образом для приложений Delphi, использующих пакет времени выполнения. Для программ, которые связываются с библиотеками в исполняемом файле, возникает конфликт со способом, которым программы ссылаются на отложенные загружаемые функции DLL, что препятствует ожидаемому поведению. Это проблема, которую Embarcadero обнаружила после релиза и исправит в (ближайшем) будущем.
Как вы можете видеть ниже, для приложения с пакетами среды выполнения вы получаете правильную конфигурацию, как показано в SysInternals Process Explorer:
В целом обратите внимание, что эти флаги обеспечивают безопасность, и есть вероятность, что приложение, использующее низкоуровневый код, может больше не работать. Например, мы обнаружили, что некоторые старые элементы управления ActiveX больше не работают в среде IDE из-за конфликта с флагом DEP.
Если вы видите какие-либо проблемы в своих приложениях, вы можете отключить эти флаги, но мы рекомендуем изучить основную проблему, поскольку некоторые компании начинают требовать, чтобы все используемое ими программное обеспечение было создано со всеми включенными флагами безопасности, рекомендованными Microsoft.
Design. Code. Compile. Deploy.
Start Free Trial Upgrade Today
Free Delphi Community Edition Free C++Builder Community Edition