Жизненный цикл разработки защищенных приложений (Майкрософт) (SDL)
Безопасность и конфиденциальность никогда не должны быть забвленной мыслью при разработке безопасного программного обеспечения. Должен быть развернут формальный процесс, гарантирующий, что они учитываются на всех этапах жизненного цикла продукта. Жизненный цикл разработки безопасности (SDL) корпорации Майкрософт внедряет в разработку и эксплуатацию всех программных продуктов комплексные требования к безопасности, специальные технологические инструменты и обязательные процессы. Все команды разработчиков корпорации Майкрософт должны соблюдать процессы и требования SDL, что приводит к более безопасному программному обеспечению с меньшими и менее серьезными уязвимостями при снижении затрат на разработку.
Microsoft SDL состоит из семи компонентов, включая пять основных этапов и два вспомогательных действия по обеспечению безопасности. Пять основных этапов — требования, проектирование, реализация, проверка и выпуск. Каждый из этих этапов содержит обязательные проверки и утверждения, чтобы обеспечить надлежащее соблюдение всех требований безопасности и конфиденциальности, а также рекомендаций. Два вспомогательных действия по обеспечению безопасности, обучение и реагирование, выполняются до и после основных этапов соответственно, чтобы обеспечить их правильную реализацию, а программное обеспечение остается безопасным после развертывания.
Обучение
Все сотрудники Корпорации Майкрософт должны пройти обучение по вопросам общей безопасности и конфиденциальности, а также провести специальное обучение, связанное с их ролью. Начальное обучение предоставляется новым сотрудникам по найму, а ежегодное обучение требуется на протяжении всего периода их работы в Корпорации Майкрософт.
Разработчики и инженеры также должны участвовать в обучении для конкретных ролей, чтобы информировать их об основах безопасности и последних тенденциях в безопасной разработке. Всем сотрудникам с полной занятостью, стажеру, штатным сотрудникам, субподрядчикам и третьим лицам также рекомендуется и предоставляется возможность получить расширенную подготовку по вопросам безопасности и конфиденциальности.
Требования
Каждый продукт, услуга и функция, разрабатываемые корпорацией Майкрософт, начинается с четко определенных требований к безопасности и конфиденциальности; они обеспечивают безопасность приложений и их разработку. Группы разработчиков определяют эти требования на основе таких факторов, как тип данных, которые будет обрабатывать продукт, известные угрозы, рекомендации, правила и отраслевые требования, а также уроки, извлеченные из предыдущих инцидентов. После определения требования четко документируются и отслеживаются.
Разработка программного обеспечения — это непрерывный процесс, что означает, что связанные требования к безопасности и конфиденциальности изменяются на протяжении жизненного цикла продукта в соответствии с изменениями в функциональных возможностях и ландшафте угроз.
Проектирование
После определения требований к безопасности, конфиденциальности и функциональности можно начать проектирование программного обеспечения. В рамках процесса проектирования создаются модели угроз, помогающие выявлять, классифицировать и оценивать потенциальные угрозы в соответствии с рисками. Модели угроз должны поддерживаться и обновляться на протяжении всего жизненного цикла каждого продукта по мере внесения изменений в программное обеспечение.
Процесс моделирования угроз начинается с определения различных компонентов продукта и того, как они взаимодействуют друг с другом в ключевых функциональных сценариях, таких как проверка подлинности. Поток данных диаграммы (DFD) создаются для визуального представления ключевых взаимодействий потока данных, типов данных, портов и протоколов. DFD используются для выявления и определения приоритетов угроз для устранения рисков, которые добавляются в требования к безопасности продукта.
Команды служб используют Threat Modeling Tool Майкрософт для создания моделей угроз, которые позволяют команде:
- Информирование о проектировании системы безопасности своих систем
- Анализ проектов безопасности на предмет потенциальных проблем с безопасностью с помощью проверенной методологии
- Рекомендации по устранению проблем безопасности и управление ими
Перед выпуском любого продукта все модели угроз проверяются на точность и полноту, включая устранение неприемлемых рисков.
Реализация
Реализация начинается с того, что разработчики пишут код в соответствии с планом, созданным на предыдущих двух этапах. Корпорация Майкрософт предоставляет разработчикам набор безопасных средств разработки для эффективной реализации всех требований к безопасности, конфиденциальности и функциям разрабатываемого ими программного обеспечения. К этим средствам относятся компиляторы, безопасные среды разработки и встроенные проверки безопасности.
Проверки
Перед выпуском любого написанного кода требуется несколько проверок и утверждений, чтобы убедиться, что код соответствует SDL, соответствует требованиям к проектированию и не содержит ошибок программирования. Проверки вручную выполняются рецензентом отдельно от инженера, разработавшего код. Разделение обязанностей является важным элементом управления на этом шаге, чтобы свести к минимуму риск написания и выпуска кода, что приведет к случайному или злонамеренному вреду.
Различные автоматические проверки также необходимы и встроены в конвейер для анализа кода во время проверка и при компиляции сборок. Проверки безопасности, используемые в корпорации Майкрософт, делятся на следующие категории:
- Статический анализ кода. Анализирует исходный код на наличие потенциальных ошибок безопасности, включая наличие учетных данных в коде.
- Двоичный анализ. Оценивает уязвимости на уровне двоичного кода, чтобы убедиться, что код готов к работе.
- Проверка учетных данных и секретов. Определите возможные экземпляры раскрытия учетных данных и секретов в исходном коде и файлах конфигурации.
- Сканирование шифрования. Проверяет рекомендации по шифрованию в исходном коде и выполнении кода.
- Нечеткое тестирование. Используйте неправильные и непредвиденные данные для реализации API и средств синтаксического анализа для проверка уязвимостей и проверки обработки ошибок.
- Проверка конфигурации. Анализирует конфигурацию рабочих систем в соответствии со стандартами безопасности и рекомендациями.
- Управление компонентами (CG): обнаружение программного обеспечения с открытым кодом и проверка версии, уязвимостей и юридических обязательств.
Если рецензент вручную или автоматизированные средства обнаруживают какие-либо проблемы с кодом, отправитель будет уведомлен, и он должен внести необходимые изменения перед отправкой его на проверку еще раз.
Кроме того, внутренние и внешние поставщики регулярно проводят тесты на проникновение на веб-службы Майкрософт. Тесты на проникновение предоставляют еще одно средство обнаружения ошибок безопасности, не обнаруженных другими методами. Дополнительные сведения о тестировании на проникновение в Корпорации Майкрософт см . в статье Моделирование атак в Microsoft 365.
Выпуск
После прохождения всех необходимых тестов безопасности и проверок сборки не сразу выпускаются для всех клиентов. Сборки систематически и постепенно выпускаются в большие и большие группы, называемые кольцами, в так называемом безопасном процессе развертывания (SDP). Как правило, круги SDP можно определить следующим образом:
- Круг 0: группа разработчиков, ответственная за службу или функцию.
- Круг 1. Все сотрудники Майкрософт
- Круг 2. Пользователи за пределами Корпорации Майкрософт, настроившие свою организацию или определенных пользователей на целевой канал выпуска
- Круг 3. Выпуск стандарта по всему миру в подфазе
Сборки остаются в каждом из этих кругов в течение соответствующего количества дней с большим периодом нагрузки, за исключением круга 3, так как сборка была надлежащим образом проверена на стабильность в предыдущих кругах.
Отклик
Все службы Майкрософт тщательно регистрируются и отслеживаются после выпуска, выявляя потенциальные инциденты безопасности с помощью централизованной собственной системы мониторинга почти в реальном времени. Дополнительные сведения о мониторинге безопасности и управлении инцидентами безопасности в Корпорации Майкрософт см. в разделах Обзор мониторинга безопасности и Управление инцидентами безопасности Майкрософт.