Опытный разработчик не так давно зашёл в .Net и поставил цель получить сертификат Microsoft. Свой ежедневный прогресс он описывает на канале .Net Разработчик. Заметки об изученном материале, советы по повышению производительности и поддержке мотивации, ин
День 1479. #ProjectManagement
Организация Разработки Безопасного ПО. Начало
Каждый год университеты, колледжи и курсы выпускают новых разработчиков, которые никогда не учились безопасному программированию или безопасности приложений. Это отсутствие понимания безопасности имеет последствия для разработки ПО на трёх уровнях: отдельный разработчик, пишущий небезопасный код, команда инженеров, слепо доверяющая зависимостям, и организация, считающая, что лучше всего внедрить собственные средства безопасности.
С самого начала нас учат программировать небезопасно. Мы спрашиваем у пользователя его имя, он его вводит, мы берем эти данные и отображаем их: «Привет, <имя>». Студента не учат проверке пользовательского ввода или кодированию информации на выходе, чтобы отключить любой потенциальный код, введённый пользователем и избежать межсайтового скриптинга (XSS).
Рекомендации по написанию безопасного кода
Начнём с жизненного цикла разработки системы. Некоторые общие действия по обеспечению безопасности, которые можно добавить в него, включают:
- Требования безопасности: меры, которые необходимо принять, чтобы приложение считалось безопасным. Создаём бессерверное приложение? Вот список требований безопасности, которые нужно добавить в ТЗ проекта, чтобы убедиться, что он достаточно безопасен для размещения в сети.
- Моделирование угроз: сеанс мозгового штурма, в котором участвуют как минимум один специалист по безопасности, владелец продукта и/или представитель бизнеса, а также член технической группы. Цель состоит в том, чтобы определить как можно больше потенциальных угроз для продукта, а затем работать над устранением тех из них, которые кажутся наиболее разрушительными или опасными. Это часто делается на этапе проектирования, но это можно сделать в любой момент позже.
- Сканирование кода: на этапе написания кода можно сканировать его с помощью статического инструмента тестирования безопасности приложений (SAST) или инструмента анализа состава программного обеспечения (SCA) или отправить приложение на сервер разработки и просканировать его с помощью инструмента DAST.
- Ранний взлом: на этапе тестирования можно нанять пентестера для тщательного автоматического и ручного тестирования всей системы.
- Защита кода в рабочей среде: на этапе выпуска можно настроить мониторинг, журналирование и оповещения.
Это только начало. Можно использовать некоторые элементы или ничего из перечисленного выше; главное найти действия и инструменты, которые работают для вас. Мы можем создать безопасный жизненный цикл разработки, добавив действия по безопасности во все процессы. Тем не менее, безопасностью надо заниматься всегда, а не только иногда или когда это удобно.
Если добавите даже один шаг по безопасности или лишнюю проверку, вы создадите более безопасное приложение. Ещё шаг – и оно ещё более безопасно. ПО — это всегда компромисс: мы не хотим тратить миллион долларов на безопасность приложения, которое заработает пару тысяч долларов. Мы хотим убедиться, что защищаем систему так, чтобы она соответствовала допустимым рискам. Проще говоря, мы должны работать с командой безопасности, чтобы точно решить, какой уровень безопасности требуется, но в целом, когда речь идет о безопасности, можно с уверенностью предположить, что «чем больше, тем лучше».
Окончание следует…
Источник: https://stackoverflow.blog/2023/02/09/three-layers-to-secure-a-software-development-organization