раздел 11 · рецепт
Security-аудит
Security-аудит - то, что должно происходить минимум перед каждым крупным релизом и при каждой смене авторизации/работы с деньгами/работы с PII. С Claude Code это не страшный многонедельный процесс, а одна команда /security-review + час осознанной работы.
Когда применять
- Перед публичным запуском продукта
- После добавления авторизации или работы с платежами
- Когда подключаете новую внешнюю интеграцию
- После того, как PII (имена, телефоны, документы) появились в системе
- Раз в квартал на действующем продукте
Шаги
Шаг 1. Автоматический security-review
В Claude Code:
/security-review
Что делает:
- Просматривает текущие изменения (diff с main)
- Проверяет паттерны OWASP top 10
- Ищет хардкод секретов
- Анализирует контекст: где входная точка, какие данные принимаются
- Возвращает приоритизированный отчёт с severity
Это первый проход. Берите топ-priority находки, остальные - на ревью человеком.
Шаг 2. OWASP top 10 - ручной чек-лист
Запустите для каждого пункта:
Промпт:
"Проверь код на OWASP A01:2021 - Broken Access Control.
Найди все endpoints, ищи:
- Где роль/owner проверяется в начале, а не в конце
- Где user_id берётся из request body вместо JWT
- IDOR - где id запрашиваемого ресурса не сверяется с owner
- Privilege escalation - где роль меняется без проверки текущей
Верни таблицу endpoint:уязвимость:как исправить."
Повторите для:
| OWASP | Что искать | |---|---| | A01 Broken Access Control | IDOR, отсутствие проверки роли, privilege escalation | | A02 Cryptographic Failures | Слабые алгоритмы (MD5, SHA1), хранение паролей в plain | | A03 Injection | SQL/NoSQL/Command injection, XSS, template injection | | A04 Insecure Design | Отсутствие rate limiting, captcha, валидации | | A05 Security Misconfiguration | Default credentials, debug-режим в проде, открытый /admin | | A06 Vulnerable Components | Устаревшие зависимости с известными CVE | | A07 Identification & Authentication | Слабые пароли, отсутствие 2FA, session fixation | | A08 Software & Data Integrity | Unsigned обновления, eval() с user-input | | A09 Security Logging Failures | Нет логирования критических событий (login, payment) | | A10 SSRF | Запрос на user-controlled URL без whitelisting |
Шаг 3. Поиск утечек секретов
# Поиск секретов в git-истории
pip install gitleaks
gitleaks detect --source . --verbose
# Или через Claude
Промпт:
"Просканируй весь репозиторий на наличие хардкод-секретов:
- API-ключи (паттерны: AIza..., sk-..., AKIA..., AAAA...)
- Пароли в коде ("password": "...")
- Приватные ключи (-----BEGIN PRIVATE KEY-----)
- Connection strings с паролем
Используй grep и регулярки. Включи .git/ историю.
Не репортуй примеры в .env.example и тестовые фикстуры."
Шаг 4. Аудит зависимостей
# Node
pnpm audit
npm audit --audit-level=moderate
# Python
pip-audit
safety check
# Universal
trivy fs .
Шаг 5. Headers и CORS
Промпт:
"Проверь HTTP-headers нашего API:
- Strict-Transport-Security есть?
- X-Frame-Options или Content-Security-Policy?
- X-Content-Type-Options: nosniff?
- Referrer-Policy?
CORS:
- Allow-Origin не *, если cookies?
- Allow-Credentials с осознанием рисков?
- Whitelist origins, не regex .* ?
Покажи curl-команду для проверки и предложи middleware."
Шаг 6. Финальный отчёт
После всех проходов:
Промпт:
"Сведи все findings в один отчёт:
- Критические (фиксить до релиза)
- Высокие (фиксить в этом спринте)
- Средние (план на квартал)
- Низкие (бэклог)
Для каждого: что, где, как эксплуатировать, как фиксить.
Формат: Markdown, можно отправить команде."
Антипаттерны
| Что не делать | Почему |
|---|---|
| Аудит только перед прод-релизом | Безопасность - не финальный чек, она в каждом PR. |
| Игнорировать «low severity» | Несколько low может комбинироваться в high. |
| Удалять console.log как «security fix» | Утечка через логи - это другая проблема. |
| Менять секрет, но не ротировать его на проде | Хакер уже знает старый, он работает. |
| Доверять «AI-сгенерированный fix» без ревью | Иногда Claude добавляет уязвимости, фиксируя другие. |
Полезные ссылки
- OWASP Top 10 2021 - текущая версия списка
- Skill /security-review - встроенная команда
- gitleaks - поиск секретов в git-истории
- trivy - сканер уязвимостей
- SecurityHeaders.com - онлайн-проверка HTTP-заголовков