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

Аудит безопасности веб-приложения: что проверять и как

Аудит безопасности веб-приложения — это проверка кода, конфигурации и логики на уязвимости по методикам OWASP: этапы, методы, инструменты и ошибки.

Аудит безопасности веб-приложения: зачем он нужен и из чего состоит

Аудит безопасности веб-приложения — это комплексная проверка исходного кода, архитектуры, конфигурации серверов и бизнес-логики, которая выявляет уязвимости и оценивает риск их эксплуатации. Результат — отчёт с приоритетами и планом исправлений.

Стоимость устранения уязвимости на этапе эксплуатации в разы выше, чем на этапе разработки, а ущерб от утечки данных клиентов несопоставим с бюджетом на аудит.

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

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

Многие воспринимают аудит как «запуск сканера и получение PDF». На деле сканирование — лишь малая часть работы. Полноценная проверка отвечает на три вопроса: что может пойти не так, насколько это вероятно и к каким последствиям приведёт.

Аудит затрагивает несколько уровней: клиентскую часть (JavaScript, формы, работа с cookie), серверную логику (авторизация, обработка запросов, API), базу данных, серверное окружение, сторонние библиотеки и интеграции. Отдельно изучаются процессы: как хранятся секреты, кто имеет доступ к продакшену, как ведутся логи и что происходит при инциденте.

Поводов для проверки несколько. Это требования регуляторов — например, закона о персональных данных 152-ФЗ или стандарта PCI DSS для приёма банковских карт. Это запрос от крупного заказчика, который просит подтвердить уровень защищённости. Или это просто здравый смысл перед запуском нового сервиса либо после смены подрядчика разработки.

Что даёт компании аудит безопасности

  1. 01

    Выявление уязвимостей до того, как их найдут злоумышленники или автоматические сканеры

  2. 02

    Защита персональных данных клиентов и снижение рисков штрафов и судебных исков

  3. 03

    Сохранение репутации: взломанный сайт теряет доверие пользователей, а Яндекс и Google могут показать предупреждение об опасности

  4. 04

    Приоритизированный план работ — команда исправляет сначала критичное, а не всё подряд

  5. 05

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

  6. 06

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

Единый язык: методика OWASP

Основой большинства аудитов служит открытый проект OWASP (Open Web Application Security Project). Его главный документ — OWASP Top 10, список наиболее распространённых и опасных классов уязвимостей веб-приложений. Для глубокой проверки используют также OWASP ASVS (стандарт верификации безопасности приложений) и OWASP Testing Guide — пошаговое руководство по тестированию.

Пользоваться общей методикой удобно: заказчик, разработчики и аудиторы говорят на одном языке, а результаты проверок можно сравнивать между собой год от года. Ниже — десять категорий актуального списка OWASP Top 10 в редакции 2021 года, с которых обычно начинается любая проверка.

owasp top 10 · 2021

Десять категорий, которые проверяют в первую очередь

a01Нарушение контроля доступа

Пользователь видит чужие данные или выполняет действия сверх своих прав.

a02Криптографические сбои

Слабое шифрование, пароли в открытом виде, данные без HTTPS.

a03Инъекции

SQL-инъекции, XSS и подмена команд через непроверенный ввод.

a04Небезопасное проектирование

Ошибки заложены в архитектуре и бизнес-логике, а не в коде.

a05Ошибки конфигурации

Пароли по умолчанию, открытые панели, лишние сервисы, подробные ошибки.

a06Устаревшие компоненты

Библиотеки и CMS с известными уязвимостями без обновлений.

a07Сбои аутентификации

Слабые пароли, нет защиты от перебора, небезопасные сессии.

a08Нарушение целостности

Непроверенные обновления, небезопасная десериализация, уязвимости CI/CD.

a09Недостаток логирования

Атаку невозможно заметить и расследовать из-за отсутствия журналов.

a10SSRF

Сервер делает запросы по адресу, который подставил злоумышленник.

Три подхода к проверке: чёрный, серый и белый ящик

Выбор подхода определяет, сколько информации получает аудитор до начала работ.

Чёрный ящик (black box). Аудитор знает только адрес приложения и действует как внешний злоумышленник. Подход показывает, что видно снаружи, но может пропустить глубоко спрятанные ошибки.

Серый ящик (gray box). Аудитору выдают тестовые учётные записи разных ролей, документацию по API и общую схему системы. Это самый популярный вариант: он имитирует атаку авторизованного пользователя и даёт хороший баланс между глубиной и стоимостью.

Белый ящик (white box). Аудитор получает доступ к исходному коду и конфигурациям. Это самая полная проверка, которая находит уязвимости, недоступные внешнему наблюдателю, — но и самая трудоёмкая.

МетодЧто анализируетСильная сторонаОграничение
SASTИсходный код без запускаНаходит ошибки на ранних этапах разработкиЛожные срабатывания, не видит проблем окружения
DASTРаботающее приложение снаружиВыявляет проблемы конфигурации и инъекцииНе видит код и плохо понимает логику
SCAСторонние библиотеки и зависимостиБыстро показывает известные CVE в зависимостяхНе ищет ошибки в собственном коде
IASTПриложение изнутри во время тестовТочное указание строки кода с проблемойТребует внедрения агента в приложение
Ручной пентестСистему целиком, включая бизнес-логикуНаходит цепочки уязвимостей и логические ошибкиДорого и зависит от квалификации специалиста

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

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

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

Ниже — чек-лист того, что обычно запрашивает исполнитель.

checklist · перед стартом

Что подготовить до начала аудита

доступы
  • Тестовые учётные записи для каждой роли (клиент, менеджер, администратор)
  • Доступ к тестовому стенду или согласованное окно работ на продакшене
  • Доступ к репозиторию кода для подхода «белый ящик»
  • Список IP-адресов исполнителя для исключения из блокировок WAF
документы
  • Схема архитектуры и перечень внешних интеграций
  • Описание API (Swagger / OpenAPI или коллекция запросов)
  • Соглашение о границах и правилах проведения работ
  • Контакты ответственных со стороны заказчика на случай критичной находки

Как проходит аудит от начала до конца

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

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

Этапы аудита безопасности веб-приложения

  1. 01

    Определение границ и целей. Согласуйте перечень доменов, API и сервисов, выберите подход (чёрный, серый или белый ящик), зафиксируйте правила работ и контакты.

  2. 02

    Моделирование угроз. Определите, что именно нужно защищать — платёжные данные, персональные данные, учётные записи — и кто может быть нарушителем: внешний посетитель, клиент, сотрудник.

  3. 03

    Разведка и анализ поверхности атаки. Изучите поддомены, открытые порты, версии ПО, используемые фреймворки, скрытые разделы и точки входа API.

  4. 04

    Автоматизированное сканирование. Запустите SAST, DAST и SCA-инструменты, чтобы быстро найти типовые проблемы и устаревшие зависимости.

  5. 05

    Ручная проверка. Проверьте контроль доступа, бизнес-логику, механизмы сессий и восстановления пароля, загрузку файлов и обработку платежей. Именно здесь находят то, что сканеры пропускают.

  6. 06

    Подтверждение и оценка уязвимостей. Исключите ложные срабатывания, покажите возможность эксплуатации и присвойте каждой находке уровень критичности по шкале CVSS.

  7. 07

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

  8. 08

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

Как оценивать критичность найденного

После проверки обычно остаётся десяток-другой замечаний, и вопрос «с чего начать» становится главным. Универсальный инструмент здесь — шкала CVSS (Common Vulnerability Scoring System), которая присваивает уязвимости числовую оценку от 0 до 10 на основе вектора атаки, сложности эксплуатации и влияния на конфиденциальность, целостность и доступность данных.

Однако цифра — не приговор. Уязвимость средней критичности в модуле оплаты может быть важнее «высокой» в редко используемой админке. Поэтому хороший аудитор учитывает контекст бизнеса и объясняет, почему порядок исправлений именно такой.

cvss v3 · приоритизация

Уровни критичности и ориентиры по срокам исправления

critical
9.0–10.0

Удалённое выполнение кода, обход авторизации, утечка базы. Исправлять немедленно — в течение 24–72 часов.

high
7.0–8.9

SQL-инъекции, хранимый XSS, доступ к чужим данным. Срок — до 1–2 недель.

medium
4.0–6.9

Отражённый XSS, слабая политика паролей, отсутствие защитных заголовков. Срок — до 30 дней.

low
0.1–3.9

Раскрытие версий ПО, мелкие недочёты конфигурации. Исправлять в плановых релизах.

Сроки — типичные ориентиры; конкретные значения закрепляются во внутренней политике управления уязвимостями компании.

Почему аудиты бывают неэффективными

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

Частые ошибки при проведении аудита безопасности

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

Как делать не стоит

  • Ограничиться автоматическим сканированием и выдавать его отчёт за аудит
  • Проверять только главную страницу и не включать в границы API, личный кабинет и админку
  • Тестировать на боевой системе без согласования окон и резервных копий
  • Не назначать ответственных за исправление найденных уязвимостей
  • Не проводить повторную проверку после исправлений
  • Игнорировать зависимости и сторонние плагины, считая их «чужой зоной ответственности»

Как правильно

  1. 01

    Сочетать автоматические инструменты с ручной проверкой бизнес-логики

  2. 02

    Включать в границы все точки входа: веб-интерфейс, API, мобильный клиент, админ-панель

  3. 03

    Согласовывать правила работ письменно и делать резервные копии заранее

  4. 04

    Заводить каждую уязвимость в трекере задач с исполнителем и сроком

  5. 05

    Проверять исправления повторно и фиксировать результат в отчёте

  6. 06

    Встроить SCA и SAST в процесс сборки, чтобы замечать проблемы при каждом релизе

Инструменты и периодичность

Для базовой проверки доступен хороший набор открытых и коммерческих инструментов. OWASP ZAP и Burp Suite применяют для динамического тестирования и ручного анализа запросов. Nmap помогает изучить сетевую поверхность. Для анализа кода используют Semgrep и SonarQube, для проверки зависимостей и контейнеров — OWASP Dependency-Check и Trivy. Эти инструменты не заменяют эксперта, но экономят время и закрывают типовые проблемы.

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

Не забывайте и про внешние сигналы. Яндекс Вебмастер и Google Search Console уведомляют о подозрительном контенте и взломе сайта. Подключите оба сервиса и настройте уведомления: иногда именно так компания узнаёт о проблеме раньше всех. Дополнительную защиту периметра дают WAF и средства защиты от DDoS, например Yandex Smart Web Security или аналогичные решения других провайдеров.

Проверять чужие веб-приложения без письменного разрешения владельца нельзя: это может быть расценено как неправомерный доступ к компьютерной информации по статье 272 УК РФ. Перед началом работ всегда оформляйте соглашение с чёткими границами и сроками проверки.

Итоги: с чего начать аудит безопасности

Безопасность веб-приложения — это не состояние, а процесс: аудит показывает текущую картину, а регулярные проверки и дисциплина исправлений поддерживают её актуальной.
  1. 01

    Определите границы проверки и выберите подход: чёрный, серый или белый ящик

  2. 02

    Опирайтесь на методики OWASP Top 10 и ASVS как на общий язык с исполнителем

  3. 03

    Сочетайте автоматические инструменты (SAST, DAST, SCA) с ручным тестированием логики

  4. 04

    Приоритизируйте уязвимости по CVSS с учётом ценности данных и бизнес-контекста

  5. 05

    Назначьте ответственных, зафиксируйте сроки и обязательно проведите повторную проверку

  6. 06

    Встройте проверки в разработку и пересматривайте защиту минимум раз в год

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

Часто задаваемые вопросы

Узнайте, где ваше веб-приложение уязвимо, до того как это сделают злоумышленники

Получите отчёт с приоритизированным списком уязвимостей и конкретными рекомендациями по устранению каждой из них

Предварительная оценка бесплатноОтчёт с рекомендациямиПовторная проверка включена

Проверка по методикам OWASP и CVSS

Политика конфиденциальности

При оставлении заявки на ресурсе «https://gurucontext.ru» пользователи предоставляют следующие сведения:

  • Имя
  • Контактный телефон или Telegram
  • Адрес сайта пользователя (не обязательно)

Также администрация сайта получает данные об IP-адресе посетителей, типе браузера, времени нахождения на сайте и прочие подобные сведения через сервисы статистики.

Использование информации

Вся полученная информация используется администрацией «https://gurucontext.ru» исключительно в целях связи с клиентом.

Защита персональных данных

Компания «https://gurucontext.ru» обязуется не разглашать сведения, полученные от пользователей, и хранит их в защищённом виде.

Предоставление данных третьим лицам

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

Контакты

Телефон: +7 (499) 955-47-00.
E-mail: info@gurucontext.ru.