Использование жизненного цикла разработки программного обеспечения (SDLC) в качестве модели для защиты вашего приложения

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

  1. Этап требований: вы начинаете с перечисления того, что вам нужно создать, или «требований» вашего приложения. Поэтому, если вы создаете приложение для обмена сообщениями, вам, вероятно, понадобится способ, позволяющий пользователям регистрироваться, позволять им входить в систему, разрешать пользователям отправлять личные сообщения и т. Д. Понимание того, что именно вам нужно создать, поможет вам разработать приложение на следующем этапе.
  2. Этап проектирования: на этом этапе вы берете требования к приложению с последнего шага и планируете структуру своего приложения.
  3. Этап кодирования: на этапе кодирования вы фактически наращиваете функциональность приложения.
  4. Этап тестирования: вы тестируете приложение с точки зрения функциональности, удобства использования и безопасности.
  5. Фаза выпуска: наконец, вы выпускаете приложение для пользователей и поддерживаете его в течение долгого времени.

При чем здесь безопасность приложений?

Итак, какое отношение все это имеет к безопасности приложений?

Когда мы смотрим на SDLC, мы также видим пять различных шансов интегрировать меры безопасности в процесс разработки или пять шансов убедиться, что ваше приложение максимально безопасно!

Требования

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

Дизайн

Следующим шагом является планирование дизайна приложения с учетом этих требований безопасности. Вы можете взять требования безопасности, которые вы перечислили на этапе требований, и выяснить, как спроектировать приложение с учетом этих требований. Обычно вы задаете такие вопросы, как: как реализовать аутентификацию и авторизацию? Как безопасно обрабатывать вводимые пользователем данные? Какую проверку ввода мы должны использовать для разных типов ввода? Где мы делаем резервную копию данных и кода? Какие протоколы или шифрование мы должны использовать для безопасного хранения и передачи данных?

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

Кодирование

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

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

Тестирование

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

Вам также следует протестировать свое приложение с помощью инструмента анализа состава программного обеспечения (SCA). Инструменты SCA отслеживают зависимости приложения и предупреждают вас, если в вашем приложении обнаруживаются публично раскрытые уязвимости.

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

Выпуск

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

Безопасность «Сдвиг влево»

Весь этот процесс - это то, что люди имеют в виду, когда говорят «сдвиг влево». «Сдвиг влево» означает выполнение тестирования и проверки безопасности раньше, чем позже, в SDLC. Вместо того, чтобы включать соображения безопасности только на более поздних этапах разработки программного обеспечения, таких как тестирование и выпуск, мы должны включать их в более ранние этапы требований, проектирования и кодирования.

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

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

Спасибо за прочтение! Какая часть разработки безопасного программного обеспечения является для вас самой сложной? Я хотел бы знать. Не стесняйтесь подключаться к Twitter @ vickieli7.