Отчёт об уязвимости: 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).
Тон и ответственность
Отчёт — деловой и уважительный документ. Уязвимости — это нормальная часть разработки, и задача безопасника — помочь, а не пристыдить. Конфиденциальность отчёта обязательна: в нём описаны слабые места реальной системы.