Обычная история: у компании есть личный кабинет или внутренний портал. Его когда-то сделал подрядчик или собственная команда разработки. Подрядчика давно нет, команда разошлась, документации не осталось. Сервис работает, заявки уходят, никто его не трогает. И никто в компании не может ответить на простой вопрос — что там внутри и насколько это безопасно.
Пока проблему не нашёл злоумышленник, её можно найти спокойно самостоятельно. Аудит безопасности веб-приложений — это и есть спокойный поиск: проверка сайта, личного кабинета, портала, админки или API на уязвимости, ошибки доступа и слабые места бизнес-логики. Ниже разберём, какие приложения имеет смысл проверять, что входит в проверку, чем она отличается от сканера и пентеста и что вы получите на выходе.
О каких веб-приложениях идёт речь
На практике можно выделить три разных класса систем, которыми пользуются компании. Работать с каждой из них нужно по-разному.
Свои приложения
Их писали вы, ваша команда или подрядчик: личный кабинет клиента, портал для партнёров, внутренняя админка, интернет-магазин на собственной логике, API для интеграций. Это тот случай, когда проверять есть что и есть смысл: доступна логика, доступны роли, часто доступен код. И это же самый частый запрос — особенно когда разработчиков уже нет, а приложение осталось и продолжает обрабатывать данные клиентов.
Коробочные системы, развёрнутые у вас
CMS, CRM, корпоративные порталы, self-hosted-сервисы. Код чужой, но ваши — версия, настройки, права доступа, плагины и всё, что вокруг. Уязвимость здесь обычно не в самом продукте, а в том, как его развернули: не обновили, оставили дефолтный пароль, открыли админку наружу, поставили сомнительный модуль.
Внешние облачные сервисы
Их аудировать нельзя — приложение вам не принадлежит. Зато можно и нужно проверить то, что относится к вам: кто имеет доступ, какие права у сотрудников и подрядчиков, что уходит в сервис через интеграцию и какие ключи для этого используются.
Первый шаг любой проверки — договориться, какой из этих классов мы смотрим. Иначе аудит превращается в осмотр главной страницы сайта, пока настоящий риск живёт в API.
Когда веб-приложение пора проверять
Не обязательно ждать инцидента. Есть моменты, в которые проверка окупается почти всегда:
- перед запуском нового сервиса или крупного модуля;
- после смены подрядчика разработки — особенно если предыдущий ушёл не по-доброму;
- когда приложение осталось «в наследство» и никто не знает, что там внутри;
- перед подключением внешней интеграции или открытием API наружу;
- когда этого требует крупный заказчик, партнёр или регулятор;
- регулярно — если через приложение проходят деньги, персональные данные или критичные операции.
Отдельный триггер — ощущение «вроде всё работает, но мы не понимаем, как». Это не паранойя, это нормальный повод посмотреть.
Что именно проверяется
Проверка идёт в трёх слоях, и пропуск любого из них делает результат неполным.
Периметр
Сначала описываем, что вообще входит в проверку: домены и поддомены, личные кабинеты, админпанели, API, внутренние веб-сервисы, тестовые среды. Забытый поддомен со старой версией приложения — классическая точка входа, о которой в компании уже никто не помнит.
Техника
Версии библиотек и фреймворков, настройки сервера, заголовки, шифрование, обработка пользовательского ввода, загрузка файлов, работа с сессиями и токенами. Часть этого находит автоматика, часть приходится проверять руками.
Логика
Самый интересный слой. Сканер не знает, что заказ одного клиента не должен открываться другому, что скидку нельзя проставить через параметр запроса, а согласование платежа нельзя обойти сменой статуса. Такие вещи находит только человек, который разбирается, как устроен ваш бизнес-процесс, и пробует его сломать.
Методически проверка опирается на общепринятые отраслевые практики: OWASP Top 10 — список ключевых рисков веб-приложений, OWASP WSTG — методику самого тестирования. Если приложение работает с персональными данными, платежами или относится к финансовой сфере, добавляются требования 152-ФЗ, PCI DSS или ГОСТ 57580 — набор зависит от того, что именно обрабатывает система.
Что находят в веб-приложениях чаще всего
Конкретный набор зависит от архитектуры, фреймворка и зрелости команды разработки. Но есть группы уязвимостей, которые встречаются из проекта в проект — и стоят бизнесу дороже всего.
|
Уязвимость |
Как выглядит на практике |
Чем оборачивается для бизнеса |
|
Нарушение контроля доступа |
Пользователь меняет номер заказа в адресной строке и открывает чужой. Или обычный аккаунт вызывает метод, который задумывался для администратора. |
Утечка клиентских данных без всякого взлома — достаточно любопытства одного пользователя. |
|
Инъекции |
Данные из формы или параметра запроса попадают в SQL-запрос или системную команду без проверки. |
Выгрузка всей базы, подмена данных, в тяжёлых случаях — управление сервером. |
|
Слабые места в сессиях |
Токен живёт вечно, не сбрасывается при выходе, передаётся или хранится небезопасно. |
Перехваченная сессия продолжает работать месяцами, в том числе у уволенного сотрудника. |
|
Незащищённые API |
Метод отдаёт больше данных, чем показывает интерфейс, не проверяет права или не ограничивает частоту запросов. |
Клиентскую базу выкачивают через тот же API, которым пользуется мобильное приложение. |
|
Устаревшие компоненты |
Библиотеки и фреймворки, которые не обновляли годами и для которых давно опубликованы эксплойты. |
Атака не требует квалификации: уязвимость известна, инструмент лежит в открытом доступе. |
|
Ошибки конфигурации |
Открытая тестовая страница, доступная снаружи админка, включённый режим отладки, дефолтные пароли. |
Атакующему не нужно ничего искать — вы сами показали, куда бить. |
Сканер, анализ защищённости, пентест: что вам нужно
Эти три слова часто используют как синонимы, хотя разница принципиальная.
Автоматическое сканирование — быстрый поиск известных признаков уязвимостей. Дёшево, полезно как первый слой, но даёт ложные срабатывания и ничего не понимает в вашей бизнес-логике.
Анализ защищённости — то, что в этой статье называется аудитом. Автоматика плюс ручная проверка логики, доступов, настроек и кода. Отвечает на вопрос «где мы уязвимы и что чинить в первую очередь». Это то, что нужно в большинстве случаев — особенно если приложение никогда не проверяли.
Пентест — имитация действий атакующего. Отвечает на другой вопрос: «можно ли реально дойти от найденной дыры до компрометации». Имеет смысл, когда базовая гигиена уже наведена и нужно проверить худший сценарий.
Если приложение проверяют впервые — начинать с пентеста рано. Сначала стоит увидеть картину целиком.
Как проходит аудит в ОБИТ
1. Определяем цель и периметр
Зачем проверяем: запуск, доработка, «наследство» от подрядчика, требование заказчика, регулярный контроль. Фиксируем, какие приложения, домены, API и среды входят в работу, какие действия запрещены и кто отвечает за коммуникацию с вашей стороны.
2. Собираем исходные данные
Разбираемся, как устроено приложение: роли пользователей, критичные операции, авторизация, интеграции. Помогает всё, что есть, — схема архитектуры, описание API, список ролей. Если ничего не сохранилось, что бывает часто, восстанавливаем картину сами.
От вас нужны тестовые учётные записи под каждую роль — клиент, менеджер, администратор, партнёр. Без них проверить разграничение доступа физически невозможно: это как просить проверить замки, не давая ключей.
3. Проверяем
Автоматика — на массовые и известные проблемы, руки — на логику, права, обработку ввода, сессии, API и поведение приложения при нестандартных запросах. Если доступен код, отдельно смотрим работу с базой, файлами и интеграциями.
Работать можно и на боевой версии, и на тестовой копии — выбираем по ситуации. На бою действуем в щадящем режиме и в согласованное окно, чтобы не задеть пользователей и данные.
4. Оцениваем риск
Каждую находку взвешиваем не только по технической критичности, но и по влиянию на бизнес. Формально «средняя» уязвимость может оказаться самой опасной в проекте — если через неё видны договоры или персональные данные клиентов.
5. Отдаём отчёт и обсуждаем исправления
Разработчикам — шаги воспроизведения и рекомендации. Руководителям — приоритеты, риски и понимание, что будет, если отложить.
Сроки зависят от объёма: типовая проверка занимает от двух недель, команда — от двух инженеров. Точную оценку даём после того, как увидим периметр.
Что будет в отчёте
Хороший отчёт — не выгрузка из сканера на триста страниц. Из него должно быть ясно, что закрывать сегодня, что включить в план доработок, а что можно принять как осознанный риск. Внутри:
- границы проверки и что в них не вошло;
- список уязвимостей с уровнем критичности;
- сценарий эксплуатации: как именно это ломается;
- влияние на данные, процессы и пользователей;
- шаги воспроизведения для разработчиков;
- рекомендации по устранению и проверке исправлений;
- приоритеты и дорожная карта;
- резюме для руководства — под решения по бюджету и срокам.
Отчёт можно передать своей команде, внутренней ИБ-функции или подрядчику, который сопровождает приложение. Если разработчиков не осталось — поможем разобраться, что и в каком порядке чинить.
Три вещи, которые чаще всего портят результат
Проверяют только то, что видно
Главная страница сайта — самое безопасное место в вашей инфраструктуре, потому что на неё все смотрят. Риски живут в личном кабинете, админке, API и на забытом поддомене с прошлогодней версией приложения.
Ограничиваются сканером
Сканер закрывает первый слой и создаёт ощущение, что всё проверено. Он честно не умеет думать про ваши бизнес-процессы — и именно там обычно лежит самое дорогое.
Не планируют исправления
Отчёт без владельцев задач и сроков живёт в почте до следующего аудита, который находит ровно то же самое. Договоритесь заранее: кто чинит, в какие сроки и кто подтверждает результат.
Что делать дальше
Смысл аудита не в документе, а в изменениях: закрыть критичные уязвимости, починить авторизацию, пересмотреть роли, обновить библиотеки, настроить логирование. И, если приложение важно для продаж или клиентского сервиса, встроить проверку в жизненный цикл — чтобы новый модуль или интеграция проходили оценку до публикации, а не после жалоб.
Мы в ОБИТ проводим аудит информационной безопасности с фокусом на веб-приложения, бизнес-приложения и внутренние сервисы. Согласуем цель и периметр, проверим технические и логические риски, соберём отчёт с приоритетами и дорожной картой — и поможем довести исправления до конца.
Часто задаваемые вопросы (FAQ)
-
Что такое аудит безопасности веб-приложения?Это проверка сайта, личного кабинета, портала, админки или API на уязвимости, ошибки доступа, небезопасные настройки и слабые места бизнес-логики. Результат — список проблем с оценкой критичности и рекомендациями, что чинить в первую очередь.
-
Не сломается ли сайт во время проверки?Проверку можно проводить как на боевой версии, так и на тестовой копии — выбираем по ситуации. На боевой работаем в щадящем режиме и в согласованное окно, а перечень запрещённых действий фиксируем до старта, чтобы не задеть данные, платежи и пользователей.
-
Нужно ли передавать исходный код?Не обязательно. Проверку можно провести и без кода — снаружи, как это делает атакующий. Доступ к коду делает анализ глубже, но если разработчиков не осталось и исходников нет, это не повод отказываться от аудита: такие приложения проверяют чаще всего.
-
Сколько занимает проверка?Зависит от объёма: числа приложений, API, ролей и глубины анализа. Типовая проверка занимает от двух недель, команда — от двух инженеров. Точную оценку даём после согласования периметра.
-
Можно ли обойтись автоматическим сканером?Сканер находит типовые технические проблемы, но не понимает вашу бизнес-логику: что заказ одного клиента не должен открываться другому, а согласование платежа нельзя обойти сменой статуса. Для таких рисков нужна ручная проверка.
-
Кто исправляет найденные уязвимости?Обычно команда разработки или подрядчик, который сопровождает приложение: в отчёте есть шаги воспроизведения и рекомендации. Если своей команды нет, поможем разобраться, что и в каком порядке чинить, и проверим исправления.
