Стратегия безопасности WPF — проектирование безопасности
Trustworthy Computing (защищенные информационные системы) — это инициатива корпорации Майкрософт по созданию безопасного кода. Ключевым элементом для создания защищенных информационных систем является Жизненный цикл разработки защищенных приложений (Майкрософт) (SDL). SDL является технической практикой, которая используется в сочетании со стандартными инженерными процессами для облегчения доставки безопасного кода. SDL состоит из десяти этапов, которые объединяют рекомендации с формализацией, измеряемостью и дополнительными структурами, включая:
анализ разработки безопасности;
проверки качества на основе инструментов;
тестирование уязвимости;
окончательный анализ безопасности;
управление безопасностью после выпуска продукта.
Особенности WPF
Группа разработки WPF применяет и расширяет SDL, сочетание которых включает следующие ключевые аспекты.
Анализ безопасности и средства редактирования
Моделирование угроз
Моделирование угроз является основным компонентом SDL и используется для профилирования системы, чтобы определить потенциальные уязвимости системы безопасности. После обнаружения уязвимостей моделирование угроз также гарантирует принятие соответствующих мер по снижению уязвимости.
На высоком уровне моделирование угроз включает следующие основные этапы, если использовать в качестве примера продуктовый магазин.
Идентификация активов. Активы продуктового магазина могут включать сотрудников, сейф, кассовые аппараты и склад.
Перечисление точек входа. Точки входа продуктового магазина могут включать переднюю и заднюю двери, окна, погрузочный док и установки для кондиционирования воздуха.
Изучение атак на активы с использованием точек входа. Одна из возможных атак может быть предпринята на сейф продуктового магазина через установку для кондиционирования воздуха; эта установка может быть выкручена, чтобы вытянуть через нее сейф и покинуть магазин.
Моделирование угроз применяется во всем WPF и включает следующее.
Как средство синтаксического анализа XAML читает файлы, сопоставляет текст с соответствующими классами объектной модели и создает фактический код.
Как дескриптор окна (hWnd) создается, отправляет сообщения и используется для отображения содержимого окна.
Как привязка данных получает ресурсы и взаимодействует с системой.
Эти модели угроз важны для идентификации требований к разработке системы безопасности и снижения угроз в процессе разработки.
Анализ безопасности и средства редактирования
В дополнение к ручному анализу кода безопасности элементов SDL группа WPF использует несколько средств для анализа источника и связанных правок для уменьшения уязвимости системы безопасности. Используются широкий диапазон средств, который включает следующее.
FXCop: Поиск общих проблем безопасности в управляемом коде — от правил наследования до использования управления доступом для кода для безопасного взаимодействия с неуправляемым кодом. См. раздел FXCop.
Prefix/Prefast: Поиск уязвимостей системы безопасности и общих проблем безопасности в неуправляемом коде, таких как переполнение буфера, проблемы строки форматирования и проверки на наличие ошибок.
Запрещенные API: Выполняется поиск в исходном коде случайного использования функций, которые известны своими проблемами безопасности, таких как
strcpy
. После обнаружения эти функции заменяются альтернативными, которые имеют более высокий уровень безопасности.
Способы тестирования
WPF использует различные методы, которые включают тестирование безопасности:
Тестирование методом белого ящика: Тест-инженеры просматривают исходный код и затем создают эксплойт-тесты
Тестирование методом черного ящика: Тест-инженеры попробуйте найти атаки системы безопасности, проверяя API и возможности и затем пытаются атаковать продукт.
Вопросы безопасности регрессирование из других продуктов: Там, где проверяются проблем безопасности от связанных продуктов. Например, соответствующие варианты приблизительно шестидесяти проблем безопасности для Internet Explorer определены и испытаны на их применимость к WPF.
Тестирование уязвимости на основе инструментов с помощью нечеткого тестирования: Нечеткое тестирование файлов — это использование модуля чтения файлов входного диапазона с помощью разнообразных входных данных. Одним из примеров в WPF, где используется этот способ, является проверка неисправности в коде декодирования изображения.
Управление критическим кодом
Для XAML-приложения браузера (XBAP), WPF строит песочницу безопасности, используя поддержку .NET Framework для пометки и отслеживания с точки зрения безопасности код, который повышает права (см. в разделе с точки зрения безопасности методологии в WPF Стратегия безопасности — безопасность платформы). Учитывая требования к высокому качеству безопасности при защите важного кода, такой код получает дополнительный уровень управления источником и аудита безопасности. Приблизительно от 5 % до 10 % WPF состоит из кода, критического с точки зрения безопасности, который анализируется выделенной группой анализа. Исходный код и постановка кода на учет управляются путем отслеживания кода, критического с точки зрения безопасности, и сопоставления каждой критической сущности (например, метода, содержащего критический код) с ее утвержденным состоянием. Утвержденное состояние содержит имена одного или нескольких рецензентов. Каждая ежедневная сборка WPF сравнивает критически важный код с этим кодом в предыдущих сборках для проверки неутвержденных изменений. Если инженер изменяет критически важный код без получения утверждения от группы рецензирования, он немедленно обнаруживается и фиксируется. Этот процесс обеспечивает применение и обслуживание особенно высокого уровня безопасности через код песочницы WPF.