Конспект "Страх и ненависть DevSecOps Шабалин Юрий"
Автор:Андрей Александров
Суть: хотим предотвращать появление уязвимостей, а не обнаруживать их. Для этого разработчикам можно дать инструменты сканирования.
Application Security
Безопасность приложений. Тестируем приложения, интегрируемся с разработкой. Мы хотим предотвратить появление уязвимостей, а не обнаружить их.
Существующие подходы: OWASP, BSIMM, OpenSAMM. Рекомендуемый: BSIMM
Как сейчас: безопасность это контролирующий орган, который всех пинает в конце релиза. Проблемы:
- Инструменты ИБ отдельно от разработки
- Особенности процесса разработки не учитываются
- Проверки ИБ проходят перед релизом
- Требования ИБ непонятны
Можно купить кучу инструментов безопасности, вывалить кучу уязвимостей, но это не поможет. Нужен процесс.
ИБ должны использовать те же инструменты, что и разработчики: чаты, документация и т.п. Security Champions.
Security Champions
Чувак в команде, который заинтересован в обеспечении безопасности. Т.е. Это разработчик, который работает с инструментами ИБ, консультирует команду об ИБ, проводить код-ревью и тренинги.
Этапы тестирования
Статический анализ
Анализ кода на наличие уязвимостей, анализ паттернов, датафлоу, анализ конфигураций. Такое сканирование занимает кучу времени, высокий уровень False Nagative/False Positive.
Требование к продукту стат. анализа
- Низкий уровень False Positive
- Возможности кастомизации
- Инкрементальные сканирования
- Интеграция в CI
- Интеграция в Code Review
- Интеграция со средой разработки
- Понимание Roadmap продукта
Инструменты: PVS-Stidio, Chechmarx, veracode, incode, fortify, coverity, positive technologies
Есть OpenSource решения под конкретные языки, на них можно обкатывать процесс. Интегрировать решение на PR, делать инкрементальные сканы. Запретить мердж, если тест не пройден. Отправлять отчет в SonarQube. Интеграция в CI. Бежит после тестов.
Нельзя после первого скана требовать исправление всего что нашли! Сформируйте технический долг и постепенно его разбирайте.
Все сканы всегда по дельте, чтобы на разработчика не вывались фиксирует по всему проекту.
Контроль OpenSource
Анализ используемых библиотек на уязвимости в открытых и закрытых источниках Анализ лицензии Контроль библиотек в периметре организации. По определенным политикам мы можем отсечь использованные библиотеки. Например, отсекать все что с критикал уязвимостью. Мониторинг новых уязвимостей в компонентах
Требования к инструменту
- Низкий уровень False Positive
- Удобство использования, интеграции
- Разные политики для разных этапов разработки
- Мониторинг компонентов в проде и организации
- Поддержка разных сборок, языков, контейнеров
Инструменты: Sonatype Nexus, Source Clear, BlackDuck, Dependency-check, WhiteSource
Интеграция. В CI как этап тестирования, запрет сборки, если там есть критичные баги или запрет деплить в прод. Интеграция в среду разработки, чтобы знать об уязвимостях до коммита. Мониторим что у нас в проде(Nexus IQ).
Динамический анализ
Анализ уже собранного и развернутого приложения. Имитирует работу пользователя, анализирует ответы приложения. Поиск известных уязвимостей. Fuzzing. Проверка конфигурации сервера.
Риски: высокая нагрузка на сервер, нет интеграций, возможность изменения настроек аналитики, отсутствие поддержки технологий, сложность.
Требования к инструменту
- Низкий уровень False Positive
- Наличие интеграций
- Поддержка технологий
- Удобноство записи последовательности логина
- Возможность настройки сканирование(интенсивности и исключение адресов)
Инструменты: Burpsuite, appscan, acunetix, w3af, owasp, microfocus
Интеграция: в CD после установки на стенд. Идеально иметь отдельный стенд для тестирования. До начала тестирования необх записать послед логина. Наличие уязвимостей — не стоппер.
Уязвимости
Тоже самое, что и просто баги. У критичности есть ранжирование по критичности, как и у багов, это позволяет их приоретизировать в одном беклоге, т.к. с точки зрения качества ПО они идентичны.
Процесс
Надо собирать метрички(производственные, инструментов, дефект-трекеры)
Ссылки
Я консультирую о том о чем пишу, связаться со мной можно через telegram @aladmit или по почте [email protected].
Подпишись, чтобы не пропустить новые статьи