Меры безопасности

Inno Setup включает в себя множество мер безопасности, которые применяются не только в процессах установки и удаления, но и в инструментарии компилятора.

Многие из этих мер безопасности обеспечивают многоуровневую защиту, но они не направлены на устранение конкретных уязвимостей.

В данном разделе перечислены меры безопасности с акцентом на процесс установки. В целом, всё, что относится к установке, применимо также к удалению и к программе-загрузчику установки (SetupLdr).

Защита от подмены DLL-файлов

Программа установки использует следующие механизмы защиты от подмены DLL (также известной как атака "DLL sideloading"):

Безопасность временного каталога

SetupLdr, Setup и Uninstall создают подкаталоги внутри временного каталога верхнего уровня текущего пользователя (как правило, по пути %LOCALAPPDATA%\Temp для всех пользователей, за исключением SYSTEM).

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

Создание подкаталогов обеспечивается несколькими способами:

Конфиденциальные данные не записываются во временные каталоги.

Защита памяти

Программа установки по умолчанию включает функции предотвращения выполнения данных (DEP) и рандомизации размещения адресного пространства (ASLR). 64-разрядные установщики поддерживают ASLR с высокой энтропией.

Более подробную информацию смотрите в разделах "DEPCompatible" и "ASLRCompatible".

Безопасность пути

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

При извлечении файлов из внешних архивов (например, форматов .7z или .zip) эта библиотека используется для защиты от вредоносных архивов.

Меры по снижению рисков перенаправления

Механизм защиты RedirectionGuard [внешняя ссылка], доступный на Windows 11 и Windows 10 22H2, блокирует обход NTFS-соединений и символических ссылок, созданных пользователями без привилегий (или любыми процессами без повышенных прав)

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

Более подробную информацию см. в разделе "RedirectionGuard".

Безопасность запуска программы

Загрузчик программы установки всегда использует манифест с уровнем выполнения asInvoker независимо от настройки PrivilegesRequired, а сам установщик запрашивает повышение прав только при необходимости.

При запуске других программ для пользователя (например, задач из секции [Run]) или при переходе пользователя по ссылке программа установки по умолчанию обеспечивает их запуск без повышенных привилегий, даже если сама она запущена с такими привилегиями. Это достигается за счёт того, что программа установки поручает выполнение запуска загрузчику установки, вместо того чтобы запускать сторонние программы напрямую.

Кроме того, при запуске других программ и создании ярлыков программа установки гарантирует, что рабочая директория никогда не останется неопределённой.

Обнаружение повреждения или фальсификации

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

После подписания компилятор повторно проверяет, что подпись была добавлена ​​без внесения каких-либо сторонних изменений в исходный файл.

Более подробную информацию см. в разделе "SignTool".

Кроме того, предусмотрена встроенная функция проверки подписи, позволяющая выявлять повреждение или несанкционированное изменение файлов на этапе компиляции (до их включения в создаваемый установщик) либо в процессе установки (перед копированием внешних файлов в систему пользователя). Данная функция надежно защищена от уязвимостей типа TOCTOU (Time-Of-Check to Time-Of-Use — разрыв между моментом проверки состояния ресурса (файла, каталога, объекта) и моментом его использования) и использует надёжные криптографические методы.

Более подробную информацию см. в разделе "Подписи .issig: Введение".

Для проверки различных компонентов программа установки также использует хеши SHA-256; вы тоже можете воспользоваться ими. Доступны и более старые алгоритмы хеширования, однако программа установки не использует их в целях обеспечения безопасности.

Шифрование

Предусмотрена возможность шифрования с защитой паролем, использующая надёжный алгоритм XChaCha20 и функцию формирования ключа PBKDF2-HMAC-SHA256. Все "соли" и одноразовые числа (nonce) генерируются с помощью криптографически стойкого генератора случайных чисел (CSPRNG).

Более подробную информацию см. в разделе "Encryption".

Безопасность загрузки

Программа установки может безопасно загружать файлы с удалённых серверов и проверять их целостность без использования какого-либо кода в секции [Code]. При этом применяются следующие средства защиты:

Другие меры безопасности

Установщик:

Компилятор:

Среда разработки (IDE):

Безопасность цепочки поставок

Помимо защиты самой программы Inno Setup, мы также предприняли множество мер для обеспечения целостности выпусков Inno Setup:

Управление уязвимостями

Мы приветствуем сообщения о проблемах безопасности: