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