Содержание

Пентест (тестирование на проникновение) — это проверка, при которой специалисты по безопасности по согласованию с вами пытаются взломать продукт так же, как это сделал бы злоумышленник. Он находит уязвимости, которые пропускают автоматические сканеры: ошибки в логике доступа, обход оплаты, утечки чужих данных. Заказывать его стоит перед запуском продукта с деньгами или персональными данными, после крупных изменений и регулярно — раз в год.

Разберём, чем пентест отличается от других проверок, когда он нужен, как подготовиться и что делать с результатами.

Чем пентест отличается от сканирования и аудита кода?

Автоматический сканер быстро находит известные типовые проблемы: устаревшие библиотеки, отсутствующие заголовки безопасности, простые инъекции. Аудит кода проверяет исходники. Пентест — это ручная работа эксперта, который ищет способы использовать уязвимости и их сочетания в реальном работающем продукте.

Проверка Что делает Сильные стороны Ограничения
Автоматический сканер Проверяет по базе известных проблем Быстро, дёшево, регулярно Не понимает бизнес-логику
Аудит кода Читает исходники Находит причины, а не симптомы Не видит настройки окружения
Пентест Атакует работающую систему вручную Находит реальные пути взлома Дороже, это снимок на момент проверки

Сканеры стоит запускать постоянно в CI, а пентест — периодически. Про аудит кода и архитектуры — статья технический аудит продукта.

Когда продукту действительно нужен пентест?

Пентест нужен, когда цена взлома высока: продукт работает с деньгами, персональными или медицинскими данными, корпоративными клиентами или критичными процессами. Часто его требуют крупные заказчики, партнёры, банки и регуляторы.

  • перед запуском продукта с платежами или персональными данными;
  • перед подписанием договора с корпоративным клиентом, который требует отчёт;
  • после крупных изменений: новая авторизация, платёжный модуль, публичный API;
  • после инцидента безопасности — чтобы найти другие слабые места;
  • регулярно, раз в год, для зрелых продуктов.

О безопасности финансовых сервисов — статья разработка финтех-продукта.

Абстрактные фрагменты кода с цифровыми помехами Фото: Unsplash

Какие бывают виды пентеста?

Виды пентеста различаются тем, сколько информации о системе получает проверяющий. Чем больше информации, тем глубже и дешевле проверка в пересчёте на найденные проблемы, но тем меньше она похожа на атаку постороннего.

  1. Чёрный ящик. Проверяющий знает только адрес сайта — как внешний злоумышленник.
  2. Серый ящик. Есть тестовые аккаунты с разными ролями — самый популярный вариант для веб-приложений, потому что большинство серьёзных проблем связаны с правами доступа.
  3. Белый ящик. Доступны исходный код и архитектура — максимальная глубина.

Для веб-продуктов обычно выбирают серый ящик: он проверяет, может ли обычный пользователь получить доступ к чужим данным или функциям администратора.

Как подготовиться к пентесту?

Подготовка определяет, сколько пользы вы получите. Главное — чётко описать область тестирования, правила и предоставить окружение, похожее на продакшен.

  • определите область: какие домены, API, мобильные приложения и роли входят в проверку;
  • подготовьте тестовое окружение с реалистичными данными и отключёнными реальными платежами и рассылками;
  • создайте тестовые аккаунты всех ролей;
  • согласуйте правила: что запрещено, время проверки, контакт для экстренной остановки;
  • подпишите соглашение о конфиденциальности и разрешение на тестирование;
  • предупредите хостинг и команду, чтобы атаки не приняли за настоящие.

Как читать отчёт и что делать с результатами?

Хороший отчёт описывает каждую уязвимость: где она находится, как её воспроизвести, что может сделать злоумышленник, насколько это критично и как исправить. Исправлять начинают с критичных и высоких, а после исправления заказывают повторную проверку.

Что важно в отчёте:

  • оценка критичности по понятной шкале — например, по CVSS;
  • шаги воспроизведения, по которым разработчик сам увидит проблему;
  • реалистичный сценарий атаки, а не только техническое описание;
  • рекомендации по исправлению;
  • краткое резюме для руководства.

После исправлений добавьте найденные классы ошибок в чек-лист код-ревью и в автотесты, чтобы они не вернулись. Про типичные уязвимости — статья OWASP Top 10 простыми словами.

Коротко

  • Пентест — ручная попытка взлома по согласованию, которая находит реальные пути атаки.
  • Сканеры запускают постоянно, пентест — перед запуском, после крупных изменений и раз в год.
  • Для веб-приложений чаще всего выбирают серый ящик с аккаунтами разных ролей.
  • Подготовьте область, окружение, аккаунты и правила проверки.
  • Исправляйте по критичности, проводите повторную проверку и закрепляйте выводы в процессах.

Частые вопросы

  • Сколько длится пентест?

    Для типичного веб-приложения с API — от одной до трёх недель работы вместе с отчётом. Крупные системы с мобильными приложениями и инфраструктурой проверяют дольше.

  • Можно ли проводить пентест на продакшене?

    Можно, но с ограничениями и согласованием: без нагрузочных атак, в оговорённое время, с контактом для экстренной остановки. Чаще тестируют на копии продакшена с реалистичными данными.

  • Как часто нужно повторять пентест?

    Обычно раз в год и после крупных изменений: новой системы авторизации, платёжного модуля, публичного API. Для регулируемых отраслей частота может быть задана требованиями.