Аудит информационной безопасности: что проверяют в приложении и коде
«Нам нужен аудит безопасности» — запрос, за которым скрываются три разные работы с разной ценой и разным результатом. Одному нужен разбор кода, другому — попытка взлома снаружи, третьему — бумаги для крупного клиента. Мы в Code Pilots делаем аудит кода и архитектуры и сразу говорим, где заканчивается наша часть.
Если совсем коротко. Аудит защищённости продукта отвечает на три вопроса: где в приложении можно получить доступ к чужим данным, что будет при утечке и какие исправления стоит сделать первыми.
И ещё одна причина заняться этим в 2026 году: штрафы за утечки персональных данных стали оборотными, а первая утечка обходится в миллионы даже небольшой компании.
Три разные работы
| Работа | Что делают | Что получаете | Кто делает |
|---|---|---|---|
| Аудит кода и архитектуры | Читают код, схемы, права доступа, зависимости; ищут места, где данные утекают или доступ обходится | Приоритизированный список проблем с оценкой риска и стоимости исправления | Разработчики с опытом безопасной разработки |
| Тест на проникновение | Пытаются пробить систему снаружи, как атакующий | Подтверждённые векторы атаки | Профильные команды по тестированию защищённости |
| Проверка соответствия требованиям | Сверяют процессы и документы с нормативными требованиями, готовят аттестацию | Заключение и документы для регуляторов и контрактов | Лицензированные организации |
Разница практическая. Аудит кода находит проблему до того, как её найдут снаружи, и сразу показывает, где именно её исправлять. Пентест доказывает, что проблему можно использовать. Проверка соответствия отвечает на вопрос «есть ли у нас бумаги», а не «защищены ли мы».
Мы делаем первую работу. Аттестацию, лицензированные средства защиты и обследование серверного парка не берём — для этого нужны лицензии, и это отдельная индустрия. По похожему принципу работает и проверка производительности: нагрузочное тестирование отвечает на вопрос, выдержит ли система пик, а не защищена ли она.
Когда пора
Перед крупным клиентом или тендером. Требование по безопасности всё чаще входит в договор, а анкету поставщика заполняют совместно с ИТ.
Когда данных стало много. База клиентов на сотни тысяч записей — это уже риск, измеряемый оборотными штрафами.
После смены команды. Ушёл разработчик, знавший систему целиком; никто не может сказать, где хранятся ключи доступа.
После инцидента. Своего или отраслевого: утечка у конкурента — хороший повод проверить себя.
Перед запуском продукта с платежами или медицинскими данными. Дешевле заложить требования в проект, чем переделывать после запуска.
Раз в год как регламент. Код меняется, зависимости стареют, права накапливаются.
Что смотрят в приложении
| Область | Что проверяют | Типичная находка |
|---|---|---|
| Аутентификация | Пароли, восстановление доступа, вторая фактор, время жизни сессии | Восстановление пароля позволяет перебирать чужие адреса |
| Права доступа | Проверка прав на каждом действии, а не только в интерфейсе | Смена идентификатора в запросе открывает чужой заказ |
| Ввод данных | Инъекции в базу, выполнение скриптов в браузере, обработка файлов | Загрузка файла без проверки типа и размера |
| Секреты | Ключи, пароли, токены в коде и репозитории | Ключ платёжного шлюза в истории коммитов |
| Зависимости | Версии библиотек, известные уязвимости, лишние пакеты | Библиотека с известной уязвимостью, не обновлявшаяся два года |
| Данные | Что храним, сколько, где, зачем; шифрование, обезличивание | Паспортные данные в открытом виде и без срока хранения |
| Логи | Что пишем, что не пишем, кто читает | В логах пароли и полные номера карт |
| Обработка ошибок | Что показывается пользователю при сбое | Стек ошибки с путями и версиями в ответе сервиса |
| Интеграции | Авторизация обменов, права сервисных пользователей | Один токен на все интеграции с полными правами |
Самая частая и самая недооценённая находка — не экзотическая уязвимость, а отсутствие проверки прав на стороне сервера: интерфейс не показывает лишнего, но запрос с изменённым идентификатором возвращает чужие данные.
Инфраструктура и доступы
Даже когда речь идёт о продукте, а не о серверном парке, часть находок всегда лежит в организации доступов.
Кто имеет доступ к боевой базе и почему; сколько людей знают пароль администратора; остались ли учётные записи уволившихся; используются ли одни ключи для тестового и боевого контуров; есть ли резервные копии и проверял ли кто-нибудь восстановление из них; как раздаются права в системе управления кодом.
Отдельный сюжет — тестовые окружения с копией боевых данных. Формально это внутренний контур, фактически — та же база клиентов, но без ограничений доступа и с более слабой защитой. Обезличивание тестовых данных стоит несколько дней работы и снимает целый класс риска.
В распределённых системах добавляется вопрос доверия между сервисами: если внутренняя сеть считается «доверенной» и сервисы не проверяют, кто их вызывает, одна пробитая точка открывает всё остальное. Подробнее про устройство таких систем — в материале про монолит и микросервисы.
Персональные данные и цена ошибки
Экономика вопроса изменилась, и это главный аргумент в разговоре с руководством.
С 30 мая 2025 года действуют новые штрафы за утечки персональных данных. За первую утечку — от нескольких миллионов до пятнадцати миллионов рублей в зависимости от числа пострадавших, а для биометрии и особых категорий данных — до двадцати миллионов. За повторную — оборотный штраф от 1 до 3% годовой выручки, при этом не меньше двадцати с лишним миллионов и не больше 500 млн.
Отсюда практическая логика: сокращать объём данных. Всё, что не собрано, не может утечь. Второй шаг — сроки хранения: данные, которые больше не нужны, удаляются или обезличиваются по регламенту, а не хранятся «на всякий случай».
Дополнительно стоит держать в голове требования к размещению данных и к используемому ПО — особенно если компания попадает под регулирование по отраслевому признаку. Общая картина требований разобрана в материале про импортозамещение ПО.
Как проходит аудит кода
Порядок работ примерно такой.
- 1. Модель угроз на страницу. Что защищаем, от кого, что будет, если это утечет. Без этого шага проверка превращается в перечисление всего подряд.
- 2. Обзор архитектуры. Схема компонентов, где хранятся данные, кто с кем общается, где границы доверия.
- 3. Автоматические проверки. Статический анализ кода, анализ зависимостей, поиск секретов в репозитории. Дают быстрый первый список.
- 4. Ручной разбор критичных мест. Аутентификация, права, платежи, работа с файлами, интеграции. Это то, что автоматика находит хуже всего.
- 5. Проверка доступов и окружений. Кто имеет доступ, чем отличается тестовый контур, как хранятся ключи.
- 6. Воспроизведение находок. Каждая проблема подтверждается на тестовом контуре: без воспроизведения это гипотеза.
- 7. Оценка риска и отчёт. Вероятность, последствия, стоимость исправления.
Сроки: для среднего продукта — от двух до четырёх недель, в зависимости от объёма кода и числа интеграций.
Что должно быть в отчёте
Плохой отчёт — список из ста пунктов с уровнями критичности из инструмента. Хороший отвечает на четыре вопроса.
Что именно нашли — с описанием на человеческом языке, местом в коде и шагами воспроизведения.
Чем это грозит — какие данные и какие деньги под риском. «Обход прав в кабинете даёт доступ к заказам и телефонам всех клиентов» вместо «нарушение контроля доступа».
Что делать — конкретное решение, а не отсылка к стандарту.
В каком порядке — приоритет по соотношению риска и стоимости исправления: сначала то, что закрывается за день и убирает крупный риск.
Плюс раздел, который часто забывают: что уже сделано хорошо. Это не вежливость, а защита от переделок того, что работало.
Что делать после
Аудит без плана исправлений — документ, который через полгода будет неактуален. Рабочая схема — три горизонта.
Первая неделя. Смена скомпрометированных ключей, закрытие критичных дыр в правах доступа, удаление лишних доступов, обновление уязвимых зависимостей.
Первый месяц. Исправления, требующие изменений в коде: проверки прав на сервере, валидация ввода, логирование без чувствительных данных, обезличивание тестовых контуров.
Кварталы. Изменения архитектуры и процессов: разделение прав, управление секретами, регламент хранения данных, обучение команды. Обычно это делается в потоке продуктовой разработки — исправления встраиваются в спринты вместе с развитием системы, а не выносятся в отдельный проект, который никогда не начнётся.
И повторная проверка через несколько месяцев: без неё непонятно, закрыты ли находки на самом деле.
Проверки в конвейере
Разовый аудит стареет. Чтобы не возвращаться к нулю каждый год, часть проверок переносят в процесс разработки.
- Анализ зависимостей на каждый релиз: новые уязвимости в библиотеках появляются постоянно, и это самая дешёвая автоматизация.
- Поиск секретов в коммитах — до попадания в репозиторий, а не после.
- Статический анализ с разумным набором правил: слишком строгий набор команда отключит через месяц.
- Обновление зависимостей по расписанию, а не «когда сломается».
- Ревью изменений в чувствительных местах — права, аутентификация, платежи — обязательным вторым человеком.
- Проверка прав в тестах: автотест, который убеждается, что чужой заказ недоступен, ловит регрессию навсегда.
Это и есть безопасная разработка в практическом смысле: не отдельная дисциплина, а несколько шагов, встроенных в обычный конвейер сборки.
Пентест
Тест на проникновение отвечает на другой вопрос: что можно сделать с системой снаружи, не имея доступа к коду.
Он полезен как проверка результата после исправлений и как аргумент для руководства: подтверждённый вектор атаки убеждает лучше любого отчёта. Но у него есть ограничение: пентест находит то, что удалось найти за отведённое время, и не даёт полноты — уязвимость в редком сценарии останется незамеченной.
Разумный порядок: сначала аудит кода и исправления, потом пентест как контрольная проверка. Обратный порядок обычно означает, что вы платите за поиск того, что и так видно в коде.
Отдельно стоит договориться о правилах: что тестируется, в какое время, что делать при обнаружении критичной проблемы и как фиксируются результаты. Тест на боевой системе без согласованных правил заканчивается инцидентом.
Сколько стоит
Стоимость определяется объёмом кода, числом интеграций и глубиной проверки.
По нашим работам: аудит кода и архитектуры — от 200 до 600 тыс. ₽, консалтинг по стеку и разбор смет подрядчика — от 300 до 900 тыс. ₽, исправления в составе разработки — от 1,7 млн ₽, работы по конвейеру и инфраструктурным проверкам отдельной услугой — от 200 тыс. ₽. Аттестацией и защитой серверного парка мы не занимаемся — это работа лицензированных организаций. Точная цифра зависит от объёма системы: оценка проекта бесплатная.
Прикинуть бюджет можно заранее — бесплатный калькулятор оценки собирает вилку по составу работ за несколько минут.
Ошибки
Покупают не ту работу. Нужен был разбор кода, заказали проверку документов — бумаги есть, дыра в правах доступа осталась.
Собирают данные «на всякий случай». Чем больше собрано, тем дороже утечка; половину полей в формах можно убрать без потерь для бизнеса.
Тестируют на копии боевых данных. Тестовый контур защищён слабее, а данные в нём те же самые.
Исправляют по списку из инструмента. Команда тратит недели на предупреждения низкой критичности, а обход прав доступа остаётся.
Не проверяют восстановление из резервных копий. Копии есть, но никто не пробовал развернуть их; выясняется это в худший момент.
С чего начать
Первое — написать модель угроз на одну страницу: какие данные у вас есть, кто может ими заинтересоваться, что произойдёт при утечке и при недоступности сервиса. Этот документ определяет всё остальное.
Второе — провести инвентаризацию данных и доступов: что храним, сколько лет, кто имеет доступ к боевой базе, есть ли учётные записи уволившихся. Это бесплатно и обычно даёт первые находки в тот же день.
Третье — включить в конвейер анализ зависимостей и поиск секретов. Два дня работы, а закрывают целый класс типовых проблем.
Часто задаваемые вопросы
Аудит кода смотрит систему изнутри: код, архитектуру, права доступа, зависимости, хранение данных — и находит проблемы вместе с местом, где их исправлять. Пентест атакует систему снаружи и показывает, что реально можно пробить за отведённое время. Аудит даёт полноту и понятный план работ, пентест — доказательство. Разумно делать в этом порядке.
Зависит от того, кто вы и с какими данными работаете: для государственных заказчиков, объектов критической инфраструктуры и отдельных отраслей это обязательное требование, для большинства коммерческих продуктов — нет. Аттестацию проводят лицензированные организации; мы этой работой не занимаемся и говорим об этом сразу, чтобы вы не покупали у нас не то, что нужно.
С 30 мая 2025 года штраф за первую утечку составляет от нескольких миллионов до пятнадцати миллионов рублей в зависимости от числа пострадавших, а для биометрии и особых категорий данных — до двадцати миллионов. За повторную утечку предусмотрен оборотный штраф в размере от 1 до 3% годовой выручки, не менее двадцати с лишним миллионов и не более 500 млн. К этому добавляются репутационные потери и работа по реагированию.
Аутентификацию и права доступа — там находится большинство критичных проблем. Затем хранение и передачу данных, секреты в коде и репозитории, устаревшие зависимости, логирование без чувствительных данных и доступы к боевым контурам. Экзотические уязвимости встречаются реже, чем обычная непроверенная авторизация запроса на сервере.
Полный разбор — раз в год и при существенных изменениях: новая архитектура, работа с новыми категориями данных, смена команды. Автоматические проверки — анализ зависимостей и поиск секретов — должны идти на каждый релиз, иначе к моменту следующего аудита накопится то же самое.
Разработка с Code Pilots
Code Pilots — студия заказной разработки полного цикла: веб- и мобильные продукты со сложной бизнес-логикой, интеграциями и высокими нагрузками. По безопасности наша зона — продукт: разбор кода и архитектуры, права доступа, хранение и передача данных, секреты, зависимости, проверки в конвейере сборки и сами исправления.
Границу называем прямо: аттестацией, лицензированными средствами защиты и обследованием серверного парка мы не занимаемся — если задача в этом, честнее пойти к профильным организациям. Мы можем разобрать код и архитектуру, показать риски в деньгах и закрыть их вместе с вашей командой.
Внутри — backend- и мобильные разработчики, DevOps, QA и аналитики, middle+ и senior. Начните с модели угроз на одну страницу — по ней уже понятно, что проверять первым. Обсудить проект →