Поделиться через


Рекомендации по безопасности для C++

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

Средства безопасности в Visual C++

В этом разделе рассматриваются средства обеспечения безопасности приложений, встроенные в компилятор и компоновщик Visual C++.

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

  • Параметр /SAFESEH (образ содержит обработчики безопасных событий)
    Этот параметр указывает компоновщику на необходимость включения в выходной образ таблицы, содержащей адрес каждого обработчика исключений. Во время выполнения операционная система проверяет по этой таблице, действительно ли используются только допустимые обработчики исключений. Это помогает предотвратить запуск обработчиков исключений, внедряемых злоумышленниками в среду выполнения. По умолчанию этот параметр отключен.

  • /NXCOMPAT, /NXCOMPAT (совместимо с предотвращением исполнения данных (DEP))
    Эти возможности компилятора и компоновщика реализуют совместимость с функцией предотвращения выполнения данных (DEP). Функция DEP защищает ЦП от выполнения страниц, не содержащих кода.

  • Параметр /analyze (анализ кода Enterprise)
    Этот параметр компилятора запускает анализ кода с целью выявления потенциальных проблем безопасности, таких как переполнение буфера, отмена инициализации памяти, разыменование нулевого указателя и утечки памяти. По умолчанию этот параметр отключен. Дополнительные сведения см. в разделе Общие сведения об анализе кода в C/C++.

  • /DYNAMICBASE (использование технологии Address Space Layout Randomization (ASRL))
    Этот параметр компоновщика позволяет построить исполняемый образ, который можно загрузить в другое расположение в памяти в начале выполнения. Этот параметр также делает расположение стека в памяти значительно менее прогнозируемым.

Среда выполнения повышенной безопасности

В библиотеку C Runtime Library (CRT) были включены безопасные версии функций, которые могут создать угрозу безопасности. (Например, непроверяемая функция строкового копирования strcpy.) Устаревшие, небезопасные версии этих функций использовать не рекомендуется, иначе во время компиляции будут выведены предупреждения о риске для безопасности. Настоятельно рекомендуется использовать безопасные версии этих функций CRT, а не подавлять вывод предупреждений компилятора. Дополнительные сведения см. в разделе Security Features in the CRT.

Библиотека SafeInt

SafeInt Library помогает предотвращать переполнение емкости целочисленных переменных и другие ошибки, которые можно использовать в злонамеренных целях, возникающие в результате выполнения математических операций приложением. Библиотека SafeInt включает SafeInt Class, SafeIntException Class и несколько функций SafeInt Functions.

Класс SafeInt защищает от ошибок переполнения емкости целочисленных переменных и деления на нуль, которые могут использоваться в злонамеренных целях. Он позволяет обрабатывать сравнения значений различных типов и предоставляет две политики обработки ошибок. Политика по умолчанию класса SafeInt заключается в выдаче исключения класса SafeIntException, сообщающего о причинах невозможности выполнения математической операции. Вторая политика заключается в том, что класс SafeInt останавливает выполнение программы. Также можно определить пользовательскую политику.

Каждая функция класса SafeInt защищает от злонамеренного использования ошибок одной из математических операций. Можно использовать параметры двух различных типов, не преобразовывая их к одному типу. Используйте класс SafeInt для защиты множества математических операций.

Установленные итераторы

Проверяемый итератор — это итератор, обеспечивающий принудительное соблюдение ограничений контейнера. По умолчанию при превышении ограничений проверяемого итератора создается исключение, и выполнение программы прекращается. Проверяемый итератор обеспечивает другие уровни реагирования, зависящие от значений, назначенных в определениях препроцессора, таких как _SECURE_SCL_THROWS и _ITERATOR_DEBUG_LEVEL. Например, при наличии определения _ITERATOR_DEBUG_LEVEL=2 проверяемый итератор выполняет комплексные проверки правильности в режиме отладки, возможность использования которых обеспечивается использованием утверждений. Дополнительные сведения см. в разделе Checked Iterators.

Анализ управляемого кода

Инструмент анализа управляемого кода или FxCop выполняет проверку сборок на соответствие рекомендациям, изложенным в Правилах разработки приложений платформы Microsoft .NET Framework FxCop анализирует код и метаданные внутри каждой сборки и выявляет дефекты по следующим направлениям:

  • Разработка библиотек

  • Локализация

  • Соглашения об именах

  • Производительность

  • Безопасность

Инструмент анализа управляемого кода включен в состав Visual Studio Application Lifecycle Management, а также доступен для загрузки с веб-узла https://www.gotdotnet.com/team/fxcop/.

Средство проверки приложений Windows

Средство Application Verifier (AppVerifier), включенное в состав набора Application Compatibility Toolkit, помогает разработчикам выявлять потенциальные проблемы совместимости, стабильности и безопасности приложений.

Средство AppVerifier контролирует использование операционной системы приложением. Оно следит за файловой системой, реестром, памятью и API-интерфейсами во время работы приложения, а при обнаружении ошибок выдает рекомендации по исправлению исходного кода.

Средство проверки позволяет выполнять следующие операции:

  • Тестировать приложения на наличие возможных проблем совместимости, возникающих в результате типичных ошибок программирования.

  • Исследовать приложения для определения утечек памяти.

  • Тестировать приложение на соответствие требованиям для текущих программ получения логотипов, таких как "Программное обеспечение для Windows 7" и "Программное обеспечение для Windows Server 2008 R2".

  • Выявлять потенциальные проблемы безопасности в приложениях.

Средства обеспечения совместимости приложений можно скачать на странице "Совместимость приложений" веб-сайта TechNet.

Средства обеспечения безопасности в платформе .NET Framework

Настройка политики безопасности — перечень рекомендаций и описание инструментов настройки политик безопасности для платформы .NET Framework.

Учетные записи пользователей Windows

Для разработчиков и в конечном счете пользователей использование учетных записей Windows, относящихся к группе "Администраторы", создает повышенный риск для безопасности. Дополнительные сведения см. в разделе Запуск от имени участника группы "Пользователи".

Повышение безопасности средствами системы управления учетными записями пользователей в Windows Vista

Функция контроля учетных записей в Windows Vista используется для назначения учетным записям ограниченных привилегий. Дополнительные сведения см. в разделе Влияние контроля учетных записей пользователей на приложение.

См. также

Ссылки

System.Security

Основные понятия

Влияние контроля учетных записей пользователей на приложение

Другие ресурсы

Защита приложений