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


Разработка безопасных приложений в Azure

В этой статье мы представляем действия и элементы управления безопасностью, которые следует учитывать при разработке приложений для облака. Рассматриваются вопросы и понятия, которые следует учитывать во время реализации и проверки жизненного цикла разработки безопасности Майкрософт (SDL ). Цель — определить действия и службы Azure, которые можно использовать для разработки более безопасного приложения.

В этой статье описаны следующие этапы SDL:

  • Внедрение
  • Проверка

Внедрение

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

Выполнение проверок кода

Перед проверкой кода провести проверки кода, чтобы повысить общее качество кода и снизить риск создания ошибок. С помощью Visual Studio можно управлять процессом проверки кода.

Выполнение анализа статического кода

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

Azure Marketplace предлагает средства разработчика , которые выполняют статический анализ кода и помогают с проверками кода.

Проверка и очистка всех входных данных для приложения

Обрабатывать все входные данные как ненадежные, чтобы защитить приложение от наиболее распространенных уязвимостей веб-приложения. Ненадежные данные — это средство для атак методом внедрения. Входные данные для вашего приложения включают параметры в URL-адресе, данные от пользователя, данные из базы данных или из API, а также все, что передается и может быть изменено пользователем. Приложение должно проверить , что данные синтаксически и семантично допустимы, прежде чем приложение использует данные любым способом (включая отображение его обратно пользователю).

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

Блокировка и список разрешений являются двумя общими подходами к выполнению проверки синтаксиса ввода:

  • Создание черного списка проверяет, что введенные пользователем данные не содержат содержимое, известного как вредоносное.

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

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

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

Выполняйте эту работу на сервере, а не на стороне клиента (или на сервере и на стороне клиента).

Проверка выходных данных приложения

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

Экранирование гарантирует, что все отображается в виде выходных данных. Экранирование также позволяет интерпретатору знать, что данные не предназначены для выполнения, и это предотвращает работу атак. Это еще один распространенный метод атаки, называемый межсайтовый скриптинг (XSS).

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

Использование параметризованных запросов при обращении к базе данных

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

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

Удаление стандартных заголовков сервера

Заголовки, такие как Сервер, X-Powered-By и X-AspNet-Version показывают сведения о сервере и базовых технологиях. Рекомендуется отключить эти заголовки, чтобы избежать отпечатков пальцев приложения. См. статью об удалении стандартных заголовков сервера на веб-сайтах Azure.

Разделение рабочих данных

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

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

Реализация политики строгого пароля

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

Внешний идентификатор Microsoft Entra во внешних арендаторах помогает управлять паролями, предоставляя самостоятельный сброс пароля и многое другое.

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

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

Проверка отправки файлов

Если приложение разрешает отправку файлов, рассмотрите меры предосторожности, которые можно принять для этого рискованного действия. Первым шагом во многих атаках является получение вредоносного кода в систему, которая находится под атакой. Использование отправки файлов помогает злоумышленнику выполнить это. OWASP предлагает решения для проверки файла, чтобы убедиться, что загруженный файл является безопасным.

Защита от вредоносных программ помогает выявлять и удалять вирусы, шпионские программы и другое вредоносное программное обеспечение. Вы можете установить антивредоносное ПО Майкрософт или решение защиты конечных точек партнера Майкрософт (Trend Micro, Broadcom, McAfee, Microsoft Defender Антивирусная программа в Windows и Endpoint Protection).

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

Не кэшируйте конфиденциальное содержимое

Не кэшируйте конфиденциальное содержимое в браузере. Браузеры могут хранить сведения для кэширования и истории. Кэшированные файлы хранятся в папке, например в папке временных файлов Интернета в случае Internet Explorer. При повторном обращении к этим страницам браузер отображает страницы из кэша. Если конфиденциальная информация (адрес, сведения о кредитной карте, номер социального страхования, имя пользователя) отображается пользователю, данные могут храниться в кэше браузера и получать их, проверяя кэш браузера или нажав кнопку "Назад браузера".

Проверка

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

Поиск и исправление уязвимостей в зависимостях приложения

Вы сканируете приложение и зависимые библиотеки, чтобы определить все известные уязвимые компоненты. Продукты, доступные для выполнения этой проверки, включают проверку зависимостей OWASP, Snyk и черную уку.

Тестирование приложения в операционном состоянии

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

DAST отличается от статического тестирования безопасности приложений (SAST). Средства SAST анализируют исходный код или скомпилированные версии кода, если код не выполняется для поиска ошибок безопасности.

Выполните DAST, предпочтительно с помощью специалиста по безопасности (специалист по тестированию на проникновение или же оценщик уязвимостей). Если специалист по безопасности недоступен, вы можете самостоятельно выполнять DAST с помощью сканера веб-прокси и некоторых учебных занятий. Подключите сканер DAST на ранней стадии, чтобы убедиться, что в коде не возникают очевидные проблемы с безопасностью. Список сканеров уязвимостей веб-приложений см. на сайте OWASP .

Выполнение нечёткого тестирования

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

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

Проверка поверхности атак

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

Вы можете создать изображение области атаки, просканировав приложение. Корпорация Майкрософт предлагает средство анализа поверхностей атак под названием "Анализатор поверхности атаки". Вы можете выбрать множество средств или служб для проверки уязвимостей, включая детектор атак OWASP, Arachni и w3af. Эти средства сканирования обходят приложение и сопоставляют части приложения, доступные через Интернет. Вы также можете искать в Azure Marketplace аналогичные средства разработчика.

Тестирование на проникновение безопасности

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

Запуск тестов проверки безопасности

Решение безопасности клиента Azure (AzTS) из пакета Secure DevOps для Azure (AzSK) содержит svts для нескольких служб платформы Azure. Эти периодические проверки конфигурации проводятся, чтобы убедиться, что ваша подписка на Azure и различные ресурсы, составляющие ваше приложение, находятся в безопасном состоянии. Вы также можете автоматизировать эти тесты с помощью расширений непрерывной интеграции и непрерывного развертывания (CI/CD) AzSK, что делает SVTs доступными в виде расширения Visual Studio.

Дальнейшие шаги

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