Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как устранить уязвимость в Delphi: Предварительная загрузка системных DLL

Delphi , Файловая система , DLL и PlugIns

Уязвимость, связанная с предварительной загрузкой системных DLL в приложениях на Delphi, заключается в использовании статического связывания с различными системными библиотеками, такими как version.dll в модуле WinApi.Windows. Это приводит к тому, что библиотека загружается до начала инициализации модулей, что создает потенциальную дыру в безопасности, которую можно использовать, поместив зараженный файл version.dll рядом с приложением.

Описание проблемы

Delphi, включая последние версии, использует статическое связывание с системными библиотеками, что может привести к загрузке этих библиотек до инициализации модулей. Это создает уязвимость для DLL-хиджкинга, когда злоумышленник может заменить оригинальные библиотеки на зараженные, поместив их рядом с приложением.

Цель

Целью является предотвращение выполнения кода, который не был подписан цифровой подписью разработчика, чтобы избежать выполнения несанкционированного кода из приложения, которое имеет легитимную подпись.

Решение проблемы

Для закрытия уязвимости, связанной со статической загрузкой DLL, можно использовать функционал бокс-синдромного (side-by-side) загрузки сборок, предоставляемого операционной системой Windows, с использованием файлов манифестов. В Delphi можно указать пользовательский файл манифеста, который будет встроен в исполняемый файл.

Шаги по решению:

  1. Создание файла манифеста: Создайте файл с именем .manifest, который будет содержать важные настройки загрузки.

  2. Настройка загрузки файлов: В разделе <files> манифеста добавьте информацию о version.dll с указанием пути загрузки из надежного системного каталога.

xml <file name="version.dll" loadFrom="%SystemRoot%\system32\" />

  1. Встраивание манифеста: Откройте опции проекта в Delphi и в разделе Linker укажите путь к файлу манифеста.

  2. Сборка проекта: После внесения изменений, важно не только скомпилировать, но и собрать проект.

  3. Тестирование: После сборки убедитесь, что изменения вступили в силу и манифест корректно управляет загрузкой DLL.

Пример полного файла манифеста, который содержит настройки для всех статически загружаемых DLL:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <!-- Список файлов и их системные пути загрузки -->
  <!-- ... -->
</assembly>

Этот подход гарантирует, что системные библиотеки будут загружаться из доверенного каталога системы, что предотвращает возможность DLL-хиджкинга.

Альтернативные ответы и комментарии

В обсуждении пользователи подчеркивают, что замена исполняемого файла приложения может привести к тому, что он больше не будет подписан цифровой подписью разработчика. Также упоминается, что использование SetDllDirectoryW() не поможет в данном случае, так как оно работает только для динамически загружаемых DLL и не предотвращает хиджкинг, если злоумышленник имеет доступ к каталогу, из которого загружаются DLL.

Подтвержденный ответ

Использование бокс-синдромного загрузки сборок с помощью файлов манифестов является эффективным способом предотвращения DLL-хиджкинга в Delphi-приложениях, которые используют статическое связывание с системными библиотеками.


В данной статье мы рассмотрели проблему DLL-хиджкинга в приложениях на Delphi и предложили решение, которое заключается в использовании бокс-синдромной загрузки сборок через манифесты. Это позволяет контролировать процесс загрузки системных библиотек и предотвратить их подмену на зараженные версии.

Создано по материалам из источника по ссылке.

проблемы заключается в том, что в приложениях на Delphi используется статическое связывание с системными библиотеками, что создает уязвимость для DLL-хиджкинга, когда злоумышленник может заменить оригинальные библиотеки на зараженные, чт


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: DLL и PlugIns ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-05 10:43:58/0.0035910606384277/0