
Книга представляет собой пошаговое руководство по созданию успешной программы обеспечения безопасности приложений. Предлагается доступное объяснение основ безопасности, способов поиска и устранения уязвимостей веб-приложений, рассматриваются ключевые аспекты безопасности, включая риски и угрозы, с которыми сталкиваются команды. Рассмотрена разработка эффективной программы безопасности, в том числе создание конвейера DevSecOps, выпуск безопасного кода и реализация безопасности как сервиса. Значительная часть материала посвящена интеграции безопасности в жизненный цикл разработки, способам измерения и показателям эффективности внедрения, а также мерам поддержки программы в рабочем состоянии.
Для разработчиков ПО, ИТ-архитекторов и руководителей проектов
Безопасность приложений – это нечто большее, чем защитный слой, прикрепленный к коду. Настоящая безопасность требует координации методов, людей, инструментов, технологий и процессов на протяжении всего жизненного цикла программного продукта.
Эта книга представляет собой пошаговое руководство по созданию успешной программы обеспечения безопасности приложений. Вы узнаете, как оценить текущую безопасность приложения, определить, предоставляют ли инструменты поставщика то, что вам нужно, а также смоделировать риски и угрозы. Попутно вы узнаете, как обеспечить надежную защиту программного приложения, а также как выстроить эффективный процесс обеспечения безопасности.
Рассмотрены
- Средства обеспечения безопасности приложений на протяжении всего жизненного цикла разработки
- Поиск и устранение уязвимостей веб-приложений
- Создание конвейера DevSecOps
- Настройка программы безопасности под непрерывное совершенствование
Книгу “Стратегия обеспечения безопасности приложений” можно купить в нашем интенет-магазине.
Краткое оглавление…………………………………………………………………………………. 5
Вступительное слово………………………………………………………………………………. 15
Предисловие…………………………………………………………………………………………… 17
Благодарности……………………………………………………………………………………….. 19
Об этой книге………………………………………………………………………………………… 21
Для кого предназначена эта книга?…………………………………………………………………………………………. 21
Структура книги: путеводитель……………………………………………………………………………………………….. 22
Дискуссионный форум LiveBook……………………………………………………………………………………………… 23
Об авторе……………………………………………………………………………………………….. 25
Об иллюстрации на обложке………………………………………………………………….. 27
Часть I. Определение безопасности приложений……………. 29
Глава 1. Почему нам нужна безопасность приложений?………………………… 31
1.1. Роль программы по обеспечению безопасности приложений………………………………………… 33
1.1.1. Программное обеспечение: от идеи до воплощения в жизнь……………………………….. 34
1.1.2. Насколько важна безопасность приложений?………………………………………………………. 36
1.2. Оценка текущего уровня безопасности приложений………………………………………………………. 37
1.3. Основные причины, по которым создание системы безопасности связано с определенными трудностями 39
Упражнение 1.1………………………………………………………………………………………… 40
1.3.1. Защита программы во время ее выполнения…………………………………………………………. 41
1.3.2. Недостаточно получить выходные данные от инструментов……………………………… 41
1.3.3. Очистка от шума в средствах защиты сигналов……………………………………………………. 42
1.4. Сдвиг вправо по сравнению со сдвигом влево в процессе разработки………………………….. 43
1.4.1. Сдвиг вправо в жизненном цикле программного обеспечения…………………………….. 45
1.4.2. Ошибки при сдвиге вправо………………………………………………………………………………………. 47
1.4.3. Сдвиг влево в жизненном цикле программы………………………………………………………….. 48
1.4.4. Ошибки при сдвиге влево…………………………………………………………………………………………. 51
1.5. Что лучше: сдвиг влево или сдвиг вправо?……………………………………………………………………….. 53
1.6. Безопасности приложений необходимы и вы!…………………………………………………………………. 55
Упражнение 1.2………………………………………………………………………………………… 56
1.6.1. Демократизация защиты приложений……………………………………………………………………. 56
1.6.2. Пользователи — это всего лишь пользователи……………………………………………………… 57
1.7. Примеры сбоев в защите программного обеспечения……………………………………………………… 58
Упражнение 1.3………………………………………………………………………………………… 59
1.7.1. SolarWinds…………………………………………………………………………………………………………………. 59
1.7.2. Accellion…………………………………………………………………………………………………………………….. 60
1.7.3. Фальшивое программное обеспечение…………………………………………………………………… 61
Выводы……………………………………………………………………………………………………………………………………….. 63
Глава 2. Определение проблемы…………………………………………………………….. 65
2.1. Триада CIA………………………………………………………………………………………………………………………….. 66
2.2. Конфиденциальность………………………………………………………………………………………………………….. 66
2.2.1. Политика защиты данных……………………………………………………………………………………….. 67
2.2.2. Данные в состоянии покоя………………………………………………………………………………………. 68
2.2.3. Использование шифрования……………………………………………………………………………………. 71
Упражнение 2.1………………………………………………………………………………………… 72
2.2.4. Транзитные данные………………………………………………………………………………………………….. 74
2.2.5. Шифрование перед передачей данных………………………………………………………………….. 78
2.2.6. Данные во время их использования………………………………………………………………………… 78
2.2.7. Не всё так конфиденциально…………………………………………………………………………………… 79
2.2.8. Зачем мне это нужно?………………………………………………………………………………………………. 80
Упражнение 2.2………………………………………………………………………………………… 81
2.3. Доступность………………………………………………………………………………………………………………………… 81
2.3.1. DoS- и DDoS-атаки……………………………………………………………………………………………………. 82
2.3.2. Аварийное отключение……………………………………………………………………………………………. 83
2.3.3. Роль программ-вымогателей…………………………………………………………………………………… 84
2.3.4. Ставки в казино в автономном режиме…………………………………………………………………… 85
2.3.5. Организации здравоохранения всё еще становятся объектом охоты…………………. 86
2.3.6. Повышение отказоустойчивости…………………………………………………………………………….. 86
2.4. Целостность…………………………………………………………………………………………………………………………. 88
2.4.1. Обеспечение целостности начинается с организации доступа…………………………… 89
2.4.2. Роль системы контроля версий……………………………………………………………………………….. 91
2.4.3. Проверка достоверности данных……………………………………………………………………………. 92
2.4.4. Репликация данных………………………………………………………………………………………………….. 93
2.4.5. Проверка данных……………………………………………………………………………………………………… 93
2.5. Аутентификация и авторизация…………………………………………………………………………………………. 94
2.5.1. Аутентификация……………………………………………………………………………………………………….. 95
2.5.2. Авторизация……………………………………………………………………………………………………………… 95
2.6. Противники………………………………………………………………………………………………………………………….. 96
2.6.1. Скрипт-кидди……………………………………………………………………………………………………………. 96
2.6.2. Инсайдер…………………………………………………………………………………………………………………… 97
2.6.3. Киберпреступники……………………………………………………………………………………………………. 98
2.6.4. Хактивисты и террористы……………………………………………………………………………………….. 99
2.6.5. Постоянная серьезная угроза………………………………………………………………………………….. 99
2.6.6. Зачем нам это нужно?……………………………………………………………………………………………. 100
2.7. Оценка риска……………………………………………………………………………………………………………………… 101
2.7.1. Исправление, уменьшение, допустимость……………………………………………………………. 102
2.7.2. Определение риска…………………………………………………………………………………………………. 103
2.7.3. Оценка вероятности……………………………………………………………………………………………….. 103
2.7.4. Оценка воздействия………………………………………………………………………………………………… 105
2.7.5. Степень риска…………………………………………………………………………………………………………. 106
2.7.6. Пример риска………………………………………………………………………………………………………….. 106
Упражнение 2.3………………………………………………………………………………………. 108
2.7.7. Другие методики…………………………………………………………………………………………………….. 108
Выводы……………………………………………………………………………………………………………………………………… 109
Глава 3. Компоненты безопасности приложений…………………………………. 111
3.1. Моделирование угроз………………………………………………………………………………………………………. 112
3.1.1. Основные термины, применяемые в процессе моделирования угроз………………… 113
3.1.2. Ручное моделирование угроз………………………………………………………………………………… 115
3.1.3. Запуск процесса моделирования вручную………………………………………………………….. 117
3.1.4. Моделирование угроз с привязкой банковских счетов………………………………………. 118
3.1.5. Как поступить с обнаруженными угрозами?………………………………………………………. 120
3.1.6. Использование инструментов для моделирования угроз…………………………………… 123
Упражнение 3.1………………………………………………………………………………………. 125
3.2. Инструменты для анализа безопасности……………………………………………………………………….. 125
3.2.1. Статическое тестирование безопасности приложений………………………………………. 127
3.2.2. Инструменты для работы в среде разработки…………………………………………………….. 129
3.2.3. Динамическое тестирование безопасности приложений…………………………………… 131
3.2.4. Анализ состава программного обеспечения……………………………………………………….. 133
Упражнение 3.2………………………………………………………………………………………. 136
3.3. Тест на проникновение…………………………………………………………………………………………………….. 136
Упражнение 3.3………………………………………………………………………………………. 136
3.4. Средства защиты, применяемые во время выполнения программы…………………………….. 138
3.5. Сбор информации об уязвимостях и определение приоритетов………………………………….. 141
3.5.1. Интеграция с инструментами отслеживания дефектов………………………………………. 141
3.5.2. Определение приоритетности уязвимостей…………………………………………………………. 143
3.5.3. Устранение уязвимостей……………………………………………………………………………………….. 143
3.6. Программы вознаграждения за выявленные ошибки и раскрытие информации об уязвимостях 144
3.6.1. Программа VDP………………………………………………………………………………………………………. 145
3.6.2. Программа BBP………………………………………………………………………………………………………. 146
3.6.3. Помощь в устранении уязвимостей от независимых разработчиков………………… 146
Упражнение 3.4………………………………………………………………………………………. 147
3.7. Собираем все вместе…………………………………………………………………………………………………………. 147
Выводы……………………………………………………………………………………………………………………………………… 150
Часть II. Разработка программы по обеспечению безопасности приложений…………………………………………………………………………………………………………….. 151
Глава 4. Создание безопасного кода…………………………………………………….. 153
4.1. Безопасность в DevOps…………………………………………………………………………………………………….. 155
4.1.1. Конвейеры DevOps…………………………………………………………………………………………………. 155
4.2. DevOps — не единственная игра на площадке………………………………………………………………. 157
4.2.1. Методология Waterfall…………………………………………………………………………………………… 157
4.2.2. Методология Agile………………………………………………………………………………………………….. 159
4.2.3. Методология Lean………………………………………………………………………………………………….. 162
4.2.4. DevOps лучше обеспечивает поддержку безопасности……………………………………… 165
4.2.5. Пример DevSecOps…………………………………………………………………………………………………. 168
4.3. Инструменты обеспечения безопасности приложений, применяемые на стадии разработки 170
4.3.1. Моделирование угроз в DevSecOps………………………………………………………………………. 170
4.3.2. SAST в DevSecOps…………………………………………………………………………………………………… 172
4.3.3. DAST и IAST в DevSecOps……………………………………………………………………………………… 174
4.3.4. SCA в DevSecOps…………………………………………………………………………………………………….. 179
4.3.5. Защита во время работы в DevSecOps………………………………………………………………….. 181
4.3.6. Оркестровка безопасности……………………………………………………………………………………. 183
4.3.7. Образование в сфере безопасности………………………………………………………………………. 185
4.4. Обратная связь………………………………………………………………………………………………………………….. 186
Выводы……………………………………………………………………………………………………………………………………… 188
Глава 5. Безопасность — дело каждого………………………………………………… 189
5.1. Безопасность — это общая проблема…………………………………………………………………………….. 190
5.1.1. Структура команды по безопасности приложений…………………………………………….. 191
Упражнение 5.1………………………………………………………………………………………. 192
5.1.2. Просто наймите больше специалистов по безопасности приложений……………… 193
5.1.3. Как ликвидировать разрыв?………………………………………………………………………………….. 195
5.2. Обучение в сфере безопасности………………………………………………………………………………………. 195
5.2.1. Повышение интеллектуального уровня в сфере обеспечения безопасности……. 197
5.2.2. Микрообучение и обучение по мере необходимости…………………………………………. 198
5.2.3. Это гораздо больше, чем просто обучение………………………………………………………….. 202
5.3. Стандарты, требования и эталонная архитектура……………………………………………………….. 203
5.3.1. Создание стандартов и их внедрение…………………………………………………………………… 204
Упражнение 5.2………………………………………………………………………………………. 207
5.3.2. Создание эталонной архитектуры……………………………………………………………………….. 207
5.3.3. Внесение требований в организацию…………………………………………………………………… 211
Упражнение 5.3………………………………………………………………………………………. 211
5.4. Модели зрелости………………………………………………………………………………………………………………. 212
5.4.1. Модель зрелости SAMM от OWASP…………………………………………………………………….. 212
5.4.2. Модель зрелости BSIMM………………………………………………………………………………………. 216
5.4.3. Решение проблем незрелости вашей безопасности…………………………………………….. 220
5.5. Децентрализованная защита приложений……………………………………………………………………… 221
5.5.1. Программа чемпионов по безопасности………………………………………………………………. 222
5.5.2. Эффективное использование децентрализованной модели……………………………….. 224
Выводы……………………………………………………………………………………………………………………………………… 226
Глава 6. Безопасность приложений как услуга…………………………………….. 227
6.1. Управление рисками в процессе разработки…………………………………………………………………. 228
6.1.1. Определение и снижение риска…………………………………………………………………………….. 229
6.1.2. Определение риска приложения…………………………………………………………………………… 230
6.1.3. Распределение по степени риска………………………………………………………………………….. 234
Упражнение 6.1………………………………………………………………………………………. 236
6.2. Безопасный выпуск вместо блокировок………………………………………………………………………….. 240
6.2.1. Автоматизация выпуска с учетом степени риска………………………………………………… 241
6.2.2. Устранение барьеров с помощью установки ограждений…………………………………. 242
6.3. Объединение инженерных решений и требований безопасности на основе предложения услуг 244
6.3.1. Экосистема безопасности приложений как услуга…………………………………………….. 246
Упражнение 6.2………………………………………………………………………………………. 249
6.3.2. Услуги, запрашиваемые с использованием заявок……………………………………………… 249
6.3.3. Обеспечение общей безопасности приложений………………………………………………….. 252
Выводы……………………………………………………………………………………………………………………………………… 255
Часть III. Внедрение и оценка………………………………………………….. 257
Глава 7. Разработка плана действий…………………………………………………….. 259
7.1. Определение текущего уровня безопасности…………………………………………………………………. 260
7.1.1. Начинаем наше путешествие………………………………………………………………………………… 260
7.1.2. Какими инструментами вы сможете воспользоваться?………………………………………. 262
7.1.3. Какие уязвимости есть в вашей организации?…………………………………………………….. 266
7.1.4. Какая дополнительная информация вам доступна?…………………………………………… 269
7.2. Определение целей организации в области безопасности……………………………………………. 270
7.2.1. Цели организации…………………………………………………………………………………………………… 271
7.2.2. Цели обеспечения безопасности приложений…………………………………………………….. 272
7.2.3. Согласование целей бизнеса и безопасности……………………………………………………… 273
7.3. Выявление недостатков……………………………………………………………………………………………………. 274
7.3.1. Выявление существующих недостатков………………………………………………………………. 275
7.3.2. Вводные данные для анализа недостатков…………………………………………………………. 277
7.3.3. Как поступать с результатами анализа недостатков?……………………………………….. 279
7.4. Образец плана действий по обеспечению безопасности приложений………………………… 281
7.4.1. Инженерное образование в области безопасности…………………………………………….. 282
7.4.2. Обучение команды по обеспечению безопасности приложений………………………. 285
7.4.3. Программа развития средств защиты приложений…………………………………………….. 287
7.4.4. Согласование планов действий инженерных команд и службы безопасности приложений 289
7.4.5. Планы на будущее…………………………………………………………………………………………………. 291
Упражнение 7.1………………………………………………………………………………………. 293
Выводы……………………………………………………………………………………………………………………………………… 295
Глава 8. Оценка эффективности…………………………………………………………… 297
8.1. Что нам нужно измерять?…………………………………………………………………………………………………. 298
8.1.1. Измерение эффективности ваших инструментов…………………………………………………. 299
8.1.2. Настройка инструментов с учетом обратной связи……………………………………………. 300
8.1.3. Измерение эффективности процессов безопасности…………………………………………… 303
8.1.4. Измерение среднего времени восстановления…………………………………………………….. 304
8.1.5. Оптимизация среднего времени устранения уязвимостей………………………………….. 305
8.2. Использование ключевых показателей эффективности………………………………………………… 307
8.2.1. Создание ключевых показателей эффективности……………………………………………….. 308
8.2.2. Отслеживание ключевых показателей эффективности………………………………………. 310
8.2.3. Реализация изменений на основе ключевых показателей эффективности……….. 311
Упражнение 8.1………………………………………………………………………………………. 314
8.3. Обратная связь………………………………………………………………………………………………………………….. 314
8.3.1. Получение обратной связи в ходе бесед………………………………………………………………. 315
8.3.2. Получение обратной связи с помошью опросов…………………………………………………. 316
8.4. Карта показателей безопасности……………………………………………………………………………………. 318
8.4.1. Подготовка к созданию карты показателей безопасности………………………………… 319
Упражнение 8.2………………………………………………………………………………………. 320
8.4.2. Определение значений баллов для карты показателей безопасности……………… 322
8.4.3. Создание карты показателей безопасности………………………………………………………… 323
Упражнение 8.3………………………………………………………………………………………. 324
Выводы……………………………………………………………………………………………………………………………………… 325
Глава 9. Дальнейшее совершенствование программы………………………….. 327
9.1. Опережать атакующего……………………………………………………………………………………………………. 328
9.1.1. Матрица MITRE…………………………………………………………………………………………………….. 329
Разведка………………………………………………………………………………………………………………….. 329
Ресурсы, доступ и выполнение…………………………………………………………………………….. 330
Постоянное присутствие, повышение привилегий и попытки уклонения от блокировки 330
Поиск учетных данных и получение доступа к ним………………………………………….. 331
Сбор информации и горизонтальное перемещение……………………………………………. 331
Командно-контрольная деятельность и эксфильтрация……………………………………. 331
Воздействие……………………………………………………………………………………………………………. 332
9.1.2. Система Cyber Kill Chain……………………………………………………………………………………….. 332
Разведка………………………………………………………………………………………………………………….. 333
Создание и доставка средства атаки…………………………………………………………………… 333
Внедрение и эксплуатация…………………………………………………………………………………… 334
Командно-контрольная деятельность…………………………………………………………………. 334
9.2. Каталоги угроз………………………………………………………………………………………………………………….. 335
9.2.1. Первая десятка уязвимостей из каталога угроз OWASP…………………………………….. 336
Идентификация уязвимостей из списка первой десятки OWASP………………………. 337
Использование первой десятки OWASP для проведения тестов на проникновение 338
Использование первой десятки OWASP для определения эффективности инструментов 338
Использование первой десятки OWASP для разработки требований………………. 338
Стандарт проверки безопасности приложений OWASP……………………………………. 338
9.2.2. Первые 25 уязвимостей из каталога угроз MITRE CWE…………………………………….. 340
9.3. Опережающее развитие инженерной мысли………………………………………………………………….. 342
9.3.1. Идти в ногу с языками программирования…………………………………………………………… 342
9.3.2. Идти в ногу с технологическими изменениями……………………………………………………. 343
9.3.3. Когда набор персонала и обучение сталкиваются с затруднениями……………….. 345
Построение партнерских отношений с инженерной службой организации……. 345
Взаимозаменяемые инструменты………………………………………………………………………… 346
9.4. Перестаньте гнаться за новым суперинструментом………………………………………………………. 347
9.4.1. Использование матрицы возможностей……………………………………………………………….. 348
9.4.2. Работа с инструментами и их поставщиками……………………………………………………… 350
9.4.3. Купите новый суперинструмент…………………………………………………………………………… 351
9.5. Готовьтесь к самому худшему…………………………………………………………………………………………. 352
Выводы……………………………………………………………………………………………………………………………………… 356
ПРИЛОЖЕНИЕ. Ответы на упражнения……………………………………………… 357
Глава 1……………………………………………………………………………………………………………………………………… 357
Упражнение 1.1………………………………………………………………………………………………………………… 357
Упражнение 1.2………………………………………………………………………………………………………………… 357
Упражнение 1.3………………………………………………………………………………………………………………… 358
Глава 2……………………………………………………………………………………………………………………………………… 358
Упражнение 2.1………………………………………………………………………………………………………………… 358
Упражнение 2.2………………………………………………………………………………………………………………… 358
Упражнение 2.3………………………………………………………………………………………………………………… 359
Глава 3……………………………………………………………………………………………………………………………………… 360
Упражнение 3.1………………………………………………………………………………………………………………… 360
Упражнение 3.2………………………………………………………………………………………………………………… 360
Упражнение 3.3………………………………………………………………………………………………………………… 361
Упражнение 3.4………………………………………………………………………………………………………………… 361
Глава 5……………………………………………………………………………………………………………………………………… 361
Упражнение 5.1………………………………………………………………………………………………………………… 361
Упражнение 5.2………………………………………………………………………………………………………………… 362
Упражнение 5.3………………………………………………………………………………………………………………… 362
Глава 6……………………………………………………………………………………………………………………………………… 362
Упражнение 6.1………………………………………………………………………………………………………………… 362
Упражнение 6.2………………………………………………………………………………………………………………… 363
Глава 7……………………………………………………………………………………………………………………………………… 363
Упражнение 7.1………………………………………………………………………………………………………………… 363
Глава 8……………………………………………………………………………………………………………………………………… 363
Упражнение 8.1………………………………………………………………………………………………………………… 363
Упражнение 8.2………………………………………………………………………………………………………………… 363
Упражнение 8.3………………………………………………………………………………………………………………… 364
Предметный указатель…………………………………………………………………………. 365
