Жизненный цикл разработки защищенных приложений (Майкрософт) (SDL)

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

Процесс жизненного цикла разработки безопасности.

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

Обучение

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

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

Требования

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

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

Разработка

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

Схема моделирования угроз.

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

Разработчики должны использовать Threat Modeling Tool Майкрософт для всех моделей угроз, что позволяет команде выполнять следующие действия:

  • Информирование о проектировании системы безопасности
  • Анализ схем безопасности на наличие потенциальных проблем безопасности с помощью проверенной методологии
  • Предложить меры по устранению проблем безопасности и управлять ими

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

Реализация

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

Проверки

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

Также требуются различные автоматические проверки, которые встроены в конвейер фиксации для анализа кода во время регистрации и при компиляции сборок. Проверки безопасности, используемые корпорацией Майкрософт, делятся на следующие категории:

  • Анализ статического кода. Анализирует исходный код на наличие потенциальных недостатков безопасности, включая наличие учетных данных в коде.
  • Двоичный анализ: оценивает уязвимости на уровне двоичного кода, чтобы убедиться, что код готов к использованию в рабочей среде.
  • Сканер учетных данных и секретов: определение возможных экземпляров учетных данных и секретов в файлах исходного кода и конфигурации.
  • Проверка шифрования: проверяет рекомендации по шифрованию в исходном коде и выполнении кода.
  • Нечеткое тестирование. Используйте неправильно сформированные и непредвиденные данные для выполнения API и средств синтаксического анализа для проверки уязвимостей и проверки обработки ошибок.
  • Проверка конфигурации: анализирует конфигурацию производственных систем на соответствие стандартам безопасности и рекомендациям.
  • Управление компонентами (CG): обнаружение программного обеспечения с открытым кодом и проверка версий, уязвимостей и юридических обязательств.

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

Кроме того, тесты на проникновение регулярно проводятся в microsoft веб-службы как внутренними, так и внешними поставщиками. Тесты на проникновение предоставляют еще один способ обнаружения ошибок безопасности, не обнаруженных другими методами. Дополнительные сведения о тестировании на проникновение в Корпорации Майкрософт см. в разделе моделирования атак в Microsoft 365.

Выпуск

После передачи всех необходимых тестов безопасности и проверок сборки не сразу выпускаются для всех клиентов. Сборки системно и постепенно выпускаются в более крупные и крупные группы, называемые кругами, в так называемом безопасном процессе развертывания (SDP). Круги SDP определяются следующим образом:

  • Круг 0: группа разработчиков, отвечающая за службу
  • Круг 1. Все сотрудники Майкрософт
  • Круг 2. Пользователи за пределами Корпорации Майкрософт, которые настроили свою организацию или определенных пользователей для использования в целевом канале выпуска
  • Круг 3. Стандартный выпуск по всему миру в подфазах

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

Отклик

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