Управление требов аниями безопасности
Большинство уязвимостей — это не ошибки реализации, а отсутствующие требования. Никто не написал, что токен сброса пароля должен истекать через час. Никто не указал, что API-эндпоинт требует ограничения частоты запросов. Разработчик реализовал то, что было описано. Безопасность описана не была.
Явные, проверяемые требования безопасности решают эту проблему. Когда вместо «пользователь должен аутентифицироваться» написано «пароли хэшируются bcrypt с коэффициентом 12, сессии истекают через 30 минут неактивности, количество попыток входа ограничено пятью в час» — реализацию можно проверить, а не угадывать.
Почему это важно для бизнеса
Без явных требований:
- Разработчики принимают решения по безопасности самостоятельно — несогласованно
- Проверки ИБ выявляют проблемы поздно, когда исправление дорого
- При аудите (ФСТЭК, внешний пентест, запрос корпоративного заказчика) нечего показать в качестве доказательной базы
С явными требованиями:
- Решения принимаются один раз и документируются
- Разработчики знают, что ожидается
- QA тестирует безопасность как любой другой функционал
- Аудит — это верификация существующих требований, а не экстренный проект с нуля
Стоимость обнаружения и исправления уязвимости растёт с каждым этапом. Требование, учтённое при проектировании, стоит почти ничего. То же самое, обнаруженное в продакшне, может потребовать экстренного патчинга, уведомления клиентов и недель работы по устранению последствий. лидер безопасности (лидер безопасности — сотрудник, ответствен ный за вопросы ИБ в команде) управляет этим процессом от лица руководства.
Стандарт OWASP ASVS
OWASP Application Security Verification Standard (ASVS) — исчерпывающий каталог требований безопасности для веб-приложений. Вместо того чтобы изобретать собственный список, используйте ASVS как базу.
Структура ASVS
Требования организованы по темам:
| Раздел | Тема | Примеры требований |
|---|---|---|
| V1 | Архитектура | Анализ угроз, шаблоны безопасного проектирования |
| V2 | Аутентификация | Политика паролей, MFA, хранение учётных данных |
| V3 | Управление сессиями | Токены, тайм-ауты, выход |
| V4 | Контроль доступа | Ролевой доступ, авторизация на уровне объектов |
| V5 | Валидация | Проверка входных данных, кодирование вывода |
| V6 | Криптография | Выбор алгоритмов, управление ключами |
| V7 | Обработка ошибок | Журналирование, сообщения об ошибках |
| V8 | Защита данных | Классификация данных, обработка ПДн |
| V9 | Коммуникации | Конфигурация TLS, проверка сертификатов |
| V10 | Вредоносный код | Целостность зависимостей, ревью кода |
| V11 | Бизнес-логика | Сценарии злоупотреблений, безопасность процессов |
| V12 | Файлы | Загрузка файлов, защита от обхода пути |
| V13 | API | Безопасность REST, GraphQL, WebSocket |
| V14 | Конфигурация | Заголовки безопасности, защита сборки |
Уровни ASVS
ASVS определяет три уровня верификации:
Уровень 1 — минимальный базис. Базовая безопасность для всех приложений. Покрывает наиболее распространённые уязвимости (OWASP Top 10). Может быть верифицирован преимущественно автоматическими инструментами.
Уровень 2 — стандартный. Рекомендуется для большинства приложений, особенно обрабатывающих чувствительные данные. Требует частичного ручного ревью.
Уровень 3 — расширенный. Для приложений с высокими требованиями к безопасности: банки, объекты КИИ, медицинские системы. Требует полного ревью и углублённого тестирования.
Для большинства российских компаний МСБ: начните с уровня 1, расширьте до уровня 2 для функций, работающих с персональными данными.
ASVS и российские требования соответствия
ASVS хорошо пересекается с требованиями российского регулирования. Это делает его удобным единым базисом — один документ закрывает и технические требования команды, и потребности аудиторов.
| Нормативный акт | Релевантные разделы ASVS | Примечание |
|---|---|---|
| 152-ФЗ + Приказ ФСТЭК № 21 (ПДн) | V2, V3, V4, V7, V8, V9 | Защита персональных данных, аутентификация, журналирование |
| ГОСТ Р ИСО/МЭК 27001-2021 (СМИБ) | Все разделы | Полное пересечение |
| ГОСТ Р 57580.1 (финансовый сектор) | V2, V3, V4, V6, V7, V8 | Строгая аутентификация, шифрование, аудит |
| 187-ФЗ + Приказ ФСТЭК № 239 (КИИ) | V1, V2, V4, V7, V9, V14 | Безопасность критической информационной инфраструктуры |
| Приказ ФСТЭК № 17 (ГИС) | V2, V3, V4, V7, V14 | Государственные информационные системы |
Когда аудиторы ФСТЭК или корпоративный заказчик спрашивают «как обеспечивается безопасная аутентификация?» — вы показываете требования раздела V2 и доказательства их выполнения.
Как выбрать требования для вашего проекта
Не нужно сразу внедрять все 286 требований ASVS. Начните с того, что важно для вашего приложения.
Шаг 1: классифицируйте данные
Что обрабатывает приложение?
- Только публичные данные → базовые требования
- Персональные данные пользователей → V8 (Защита данных) критичен, обязателен 152-ФЗ
- Финансовые данные → V6 (Криптография), V2 (Аутентификация) критичны; применим ГОСТ Р 57580.1
- Медицинские данные → 152-ФЗ + 323-ФЗ «Об основах охраны здоровья граждан», полный V8, V2, V3
Шаг 2: начните с базового уровня 1
Для любого веб-приложения первыми должны быть реализованы эти разделы:
- V2 — Аутентификация — политика паролей, защита от перебора
- V3 — Управление сессиями — безопасность токенов, истечение срока действия
- V4 — Контроль доступа — проверка авторизации на сервере
- V5 — Валидация — проверка входных данных, кодирование вывода
- V14 — Конфигурация — заголовки безопасности, HTTPS
Это закрывает самые распространённые векторы атак при разумных затратах. Типичная оценка внедрения для небольшой команды — 2–4 недели.
Шаг 3: добавляйте требования по функциям
При планировании новых функций лидер безопасности определяет применимые разделы ASVS:
| Функция | Применимые разделы ASVS |
|---|---|
| Регистрация пользователей | V2.1 (Парольная безопасность) |
| Вход / SSO | V2.2 (Аутентификация), V3 (Сессии) |
| Загрузка файлов | V12.1 (Загрузка файлов) |
| API-эндпоинты | V13 (API), V4 (Контроль доступа) |
| Платёжные операции | V6 (Криптография), V8 (Защита данных) |
| Сброс пароля | V2.5 (Восстановление учётных данных) |
| Административная панель | V4 (Контроль доступа), V7 (Журналирование) |
Шаг 4: документируйте базу требований
Составьте документ, определяющий, какие требования ASVS применимы к вашему проекту:
- Уровень ASVS для проекта в целом и для критичных функций
- Применимые разделы с обоснованием
- Исключённые разделы с указанием причины (например, «V12 — загрузка файлов не поддерживается»)
- Дата последнего пересмотра и кто ответственен
Это не разовое упражнение — документ обновляется при добавлении функций и при изменении регуляторных требований.
Приоритизация требований по риску
Не все требования одинаково важны. Использу йте простую матрицу для расстановки приоритетов:
Оценка воздействия (при отсутствии требования):
- Критичное (4): прямая утечка данных, компрометация системы, нарушение 152-ФЗ
- Высокое (3): значительная утечка, захват аккаунтов
- Среднее (2): ограниченное воздействие, требует дополнительных условий
- Низкое (1): минимальное воздействие, только глубокая защита
Оценка вероятности эксплуатации:
- Высокая (3): распространённый вектор, лёгкая эксплуатация
- Средняя (2): требуется определённая квалификация
- Низкая (1): редкая атака, значительные усилия атакующего
Итоговый приоритет = Воздействие × Вероятность
| Балл | Приоритет | Действие |
|---|---|---|
| 9–12 | Критичный | Реализовать немедленно |
| 5–8 | Высокий | Реализовать в текущем спринте |
| 3–4 | Средний | Запланировать на следующий квартал |
| 1–2 | Низкий | Бэклог |
Отслеживание требований в рабочем процессе
Требования безопасности должны отслеживаться как любые другие рабочие задачи — в системе управления задачами (Jira, YouTrack, Kaiten, GitFlic Tasks или любом аналоге).
Жизненный цикл требования
Каждое требование проходит несколько состояний:
Не применимо → функциональность отсутствует, требование снято с учётом (обязательно с обоснованием)
Не реализовано → требование применимо, работа не начата
В работе → реализация ведётся
Реализовано → код написан, ожидает верификации
Верифицировано → подтверждено тестами или ревью, зафиксированы дата и ответственный