Отчёт об уязвимости: severity, шаги, рекомендации

Найти уязвимость — половина дела. Настоящая ценность пентестера в отчёте, по которому команда сможет всё починить.

Зачем нужен отчёт

Отчёт переводит технические находки на язык, понятный и разработчикам, и руководству. Хороший отчёт воспроизводим, приоритизирован и конструктивен: он не «ругает», а помогает исправить.

Из чего состоит описание уязвимости

  • Название и краткое описание — что это за проблема.
  • Severity (важность) — насколько серьёзно, обычно по шкале от Info до Critical.
  • Влияние — что злоумышленник реально получит.
  • Шаги воспроизведения — как повторить находку.
  • Доказательства — скриншоты, логи (без лишнего ущерба).
  • Рекомендации — как исправить, конкретно.

Про severity

Важность оценивают не «на глаз», а по влиянию и вероятности. Часто используют стандарт CVSS, который даёт числовую оценку. Грубая шкала: Critical — мгновенный серьёзный ущерб, High — серьёзно, Medium — важно, Low/Info — стоит знать. Приоритет помогает команде чинить сначала самое опасное.

# Упрощённая приоритизация находок по важности
findings = [
    {"name": "SQL-инъекция", "severity": "critical"},
    {"name": "Отсутствует заголовок безопасности", "severity": "low"},
    {"name": "Сломанный контроль доступа", "severity": "high"},
]

order = {"critical": 0, "high": 1, "medium": 2, "low": 3, "info": 4}
for f in sorted(findings, key=lambda x: order[x["severity"]]):
    print(f"[{f['severity'].upper()}] {f['name']}")

Хорошие рекомендации

Рекомендация должна быть конкретной и выполнимой: не «сделайте безопаснее», а «используйте параметризованные запросы здесь и здесь». Чем понятнее совет, тем быстрее проблему закроют. Указывайте и ссылки на надёжные руководства (например, OWASP).

Тон и ответственность

Отчёт — деловой и уважительный документ. Уязвимости — это нормальная часть разработки, и задача безопасника — помочь, а не пристыдить. Конфиденциальность отчёта обязательна: в нём описаны слабые места реальной системы.

Проверьте себя
1. Зачем в отчёте об уязвимости указывать severity?
AЧтобы отчёт выглядел длиннее
BЧтобы команда понимала, что чинить в первую очередь, и расставляла приоритеты по реальной опасности
CЧтобы запугать заказчика
DЭто необязательное украшение
Поддержать проект