
Главное
• Двухнедельный аудит кода стоит 375 тыс.–1,1 млн ₽ и экономит 3,7–15 млн ₽ на переделке архитектуры в середине проекта или сюрпризах после сделки. Самая дешёвая страховка, которой большинство основателей пренебрегает.
• Чек-лист из 12 разделов закрывает всё, что убивает проекты: архитектуру, качество кода, безопасность, производительность, базу данных, инфраструктуру, тесты, документацию, соответствие требованиям, технический долг, компетенции команды и стоимость владения.
• Аудитор должен быть внешним по отношению к проверяемой команде. Когда подрядчик аудирует собственный код, это конфликт интересов. Платите независимой третьей стороне; подрядчик, которого вы только собираетесь нанять, подходит.
• Пять тревожных сигналов срывают сделки: отсутствие депонирования исходников (escrow), зависимость от одного разработчика, PII/PHI в открытом виде, заброшенные собственные фреймворки, потребительские SaaS-сервисы в роли критической инфраструктуры. Каждый всплывает в первые 2 дня аудита.
• Результаты аудита — это вводные, а не приговор. На выходе должен быть план устранения с оценкой трудозатрат и приоритетами, а не список претензий.
Почему Фора Софт написала этот плейбук
Фора Софт выпустила более 625 проектов с 2005 года и провела десятки аудитов унаследованного кода для клиентов в сделках M&A, при смене подрядчика и после поглощений. Несколько недавних кейсов под NDA: сделка Series A на 727 млн ₽, где наш двухнедельный аудит вскрыл критическую проблему с интеллектуальной собственностью и привёл к пересмотру цены; стартап в сфере здравоохранения, где аудит за 4 дня нашёл нарушения HIPAA, способные сорвать следующий раунд финансирования; основатель SaaS, меняющий подрядчика, который сэкономил 6 млн ₽ на технологическом долге.
Если вы основатель, наследующий код от прежнего подрядчика, покупатель в сделке M&A, проводящий технический due diligence, или CTO, оценивающий технический долг перед масштабированием, — этот гайд даёт чек-лист из 12 разделов, набор инструментов и шаблон отчёта, которыми пользуемся мы.
Унаследовали кодовую базу, в которой не уверены?
Пришлите доступ к репозиторию. Мы вернём одностраничную сводку тревожных сигналов за 5 рабочих дней. Бесплатно.
4 сценария, которые запускают аудит кода
1. Смена подрядчика. Вы расстаётесь с текущей командой. Прежде чем новая возьмётся за работу, проверьте, что именно вам передают. Аудит ловит заброшенный технический долг, недокументированные костыли, отсутствующие тесты, сломанный CI/CD — то самое, о чём уходящий подрядчик умолчит при передаче.
2. Технический due diligence в сделке M&A. Покупатель заказывает аудит до подписания. Находки могут пересмотреть цену, добавить escrow-удержания или сорвать сделку. Продавец не может позволить себе отказать в доступе к аудиту; если отказывает — это сам по себе тревожный сигнал.
3. Готовность к масштабированию перед Series A. Основатели с MVP стадии seed готовятся расти и должны понимать, что сломается при 10-кратной нагрузке. Аудит ловит обрывы в масштабируемости до того, как они случатся.
4. Разбор после инцидента. После взлома, простоя или потери данных. Криминалистический аудит определяет первопричину, смежные риски и план устранения. Часто требуется по закону.
Чек-лист из 12 разделов
| Раздел | Что искать | Время |
|---|---|---|
| 1. Обзор архитектуры | Границы сервисов, потоки данных, история масштабирования, единые точки отказа | 2 дня |
| 2. Качество кода | Цикломатическая сложность, дублирование, именование, комментарии, мёртвый код | 1 день |
| 3. Аудит безопасности | OWASP Top 10, зависимости, секреты в репозитории, аутентификация и авторизация | 1,5 дня |
| 4. Производительность и масштабируемость | Горячие пути, проблема N+1, кэширование, асинхронные паттерны, результаты нагрузочных тестов | 1 день |
| 5. Проектирование БД | Адекватность схемы, индексы, история миграций, качество данных | 1 день |
| 6. Инфраструктура и DevOps | Зрелость IaC, пайплайны CI/CD, мониторинг, организация дежурств | 1 день |
| 7. Покрытие тестами | Соотношение unit/integration/e2e, мутационное тестирование, нестабильные тесты | 0,5 дня |
| 8. Документация | README, runbook, документы по архитектуре, материалы для онбординга | 0,5 дня |
| 9. Соответствие требованиям | Контроли HIPAA / SOC 2 / GDPR, журналы аудита, цепочка BAA | 1 день |
| 10. Инвентаризация технического долга | Устаревшие зависимости, deprecated API, риски смены платформы | 1 день |
| 11. Оценка компетенций команды | Bus factor, концентрация знаний, рынок найма под этот стек | 0,5 дня |
| 12. Стоимость владения | Динамика инфраструктурных расходов, лицензии, vendor lock-in, стоимость масштабирования | 0,5 дня |
Итого: 11 рабочих дней одного senior-аудитора на кодовой базе средней сложности. Обычно мы пускаем двух аудиторов параллельно и укладываемся в 5–7 календарных дней; второй аудитор перепроверяет находки, чтобы снизить долю ложных срабатываний в отчёте.
Полный аудит из 12 разделов нужен, когда: идёт due diligence в M&A, меняется подрядчик на проекте от 15 млн ₽ или нужна оценка готовности к масштабированию после Series A.
Аудит с акцентом на безопасность нужен, когда: есть требования соответствия (HIPAA, подготовка к SOC 2), идёт разбор после инцидента или вот-вот начнётся pentest. Только разделы 3, 9, 10.
Аудит с акцентом на производительность нужен, когда: ожидается всплеск трафика, клиенты жалуются на скорость или питч на Series A требует внятной истории масштабирования. Разделы 1, 4, 5, 6.
Одностраничная сводка тревожных сигналов нужна, когда: вы оцениваете несколько целей в воронке M&A или выбираете подрядчика. 5 рабочих дней. Мы предлагаем её бесплатно как часть будущего проекта по аудиту.
Инструменты, которыми мы пользуемся
Качество кода. SonarQube (или SonarCloud) для цикломатической сложности, дублирования и выявления code smell. CodeClimate как альтернатива. Кастомные запросы на базе Tree-sitter для нестандартных языков.
Безопасность. Snyk для уязвимостей в зависимостях и проверки лицензий. Semgrep для кастомных SAST-правил. trufflehog для поиска секретов в истории. Burp Suite или OWASP ZAP для DAST. Trivy для контейнерных образов.
Производительность. k6 / Locust для нагрузочных тестов. py-spy / clinic.js / dotnet-trace для профилирования. Sqlcheck или pgBadger для анализа медленных запросов.
Полнота документации. Кастомные скрипты обхода репозитория — считают README, ADR, runbook. Извлечение Mermaid-графов для схем архитектуры.
Анализ затрат. Экспорт из AWS Cost Explorer / GCP Billing Reports / Azure Cost Mgmt API. Разбивка по сервисам за 6–12 месяцев. Прогноз динамики на следующие 12 месяцев.
AI-ассистированный анализ. Claude или GPT-4 читают исходники, чтобы дать срез по архитектуре, выявить точки сложности и проанализировать зависимости. Используется в дополнение к традиционным инструментам, а не вместо них.
Что вы получаете на выходе двухнедельного аудита
У стандартного отчёта по аудиту такая структура:
Резюме для руководства (1 страница). Топ-3 риска, топ-3 сильные стороны, итоговая оценка стоимости устранения, рекомендация: «покупать как есть», «покупать с удержанием на сумму X», «не покупать без устранения замечаний» или «отказаться».
Находки по разделам (12 разделов, по 2–6 страниц). У каждой находки указаны критичность (critical/high/medium/low), описание влияния, доказательства (фрагмент кода, скриншот, выдержка из лога) и рекомендуемое исправление.
План устранения (2–4 страницы). Приоритизированный список работ, оценка трудозатрат по каждому пункту, рекомендуемый порядок, зависимости, итоговый диапазон.
Приложения. Выгрузки из инструментов (отчёт SonarQube, скан уязвимостей Snyk, дерево зависимостей, разбивка инфраструктурных расходов). Опционально: подробные аннотации к фрагментам кода.
Объём отчёта: 30–60 страниц в зависимости от размера кодовой базы. Поставляется как PDF плюс машиночитаемый JSON для интеграции с инструментами due diligence у покупателя.
Как ставить задачу внешнему аудитору
1. Назовите сценарий. Аудит для M&A, смена подрядчика, готовность к масштабированию — все они скоупируются по-разному. Скажите аудитору прямо, не заставляйте угадывать.
2. Дайте read-only доступ ко всему. Репозиторий (все ветки), CI/CD, инфраструктура (read-only IAM), дашборды мониторинга, отчёты по биллингу. Аудитор не найдёт того, чего не видит.
3. Опишите ICP-контекст. Кто пользователи, какие SLA, какой регуляторный режим. Без этого аудитор не сможет оценить, критичны ли пробелы в нефункциональных требованиях или приемлемы.
4. Заложите 1 час с действующим инженерным лидом. Это вылавливает недокументированный контекст, который аудит иначе пропустит. Не пропускайте этот шаг: без интервью с инженерами теряется 20–40 % контекста.
5. Убедитесь, что аудитор независим от проверяемого подрядчика. Самопроверка тем же подрядчиком — это конфликт интересов. Нанимайте третью сторону.
Тревожные сигналы, срывающие сделку
1. Нет escrow для исходников. Если продавец не положил исходный код у независимого escrow-агента, шансы получить его при банкротстве или отказе подрядчика туманны. Покупатель должен потребовать оформить escrow до закрытия сделки.
2. Критические зависимости от пользовательских SaaS. Боевые данные идут через бесплатный тариф Zapier, бизнес-логика живёт в общедоступной Google-таблице, платежи проходят через чей-то личный Stripe-аккаунт. Норма до MVP, фатально на сделке.
3. Один разработчик с ключами от всего царства. Один человек знает, где зарыты тела, катит все деплои с личного ноутбука и держит все доступы в голове. Если он уходит — компания перестаёт выпускать релизы.
4. PHI/PII в открытом виде. В логах имена пациентов, email клиентов, номера платёжных карт. trufflehog находит это за один проход. Нарушение HIPAA / GDPR / PCI-DSS, мгновенный риск утечки.
5. Самописные проприетарные фреймворки. Подрядчик зашил внутрь поставки собственный ORM, фреймворк или библиотеку компонентов. Покупатель не сможет развивать продукт без этого подрядчика — это vendor lock-in под другим именем.
На столе цель для M&A?
Пришлите доступ к репозиторию (или образец, если ещё до LOI). Мы вернём одностраничную сводку тревожных сигналов за 5 рабочих дней. Бесплатно.
Как спланировать устранение замечаний после аудита
Сортируйте по критичности. Critical-находки (дыры в безопасности, нарушения требований, единые точки отказа) идут первыми — недели 1–4. High (покрытие тестами, пробелы в мониторинге, обрывы в масштабируемости) — недели 4–12. Medium и low уходят в квартальный спринт по техническому долгу.
Оценивайте каждую находку. Каждый пункт получает оценку в человеко-неделях из рекомендаций аудита. Сумма плюс 15 %-ный буфер = общий бюджет на устранение. Типовой бюджет после полного аудита: 15–30 % от исходной стоимости разработки.
Решайте: чинить или переписывать. Если бюджет на устранение превышает 50 % стоимости полной переразработки, разумнее переписать. Аудит даёт вводные для этого решения, но не решает за вас.
Работайте через change-order. Устранение идёт через формальные change-order. Новый объём, обнаруженный в процессе, оценивается отдельно и подписывается обеими сторонами до начала работ.
Мини-кейс — сделка Series A на 727 млн ₽, спасённая аудитом
SaaS-покупатель под NDA пригласил нас в середине 2025 года на двухнедельный аудит цели Series A стоимостью 727 млн ₽. Продавец заявлял: «чистая кодовая база, недавний SOC 2 Type 1, клиенты только из США».
Что мы нашли за 2 недели. Три критические находки: (1) самописный фреймворк для конструктора форм, в котором не разбирался ни один инженер вне 3-человечной команды продавца (lock-in); (2) email клиентов в открытом виде в боевых логах (нарушение CCPA, риск утечки); (3) аттестация SOC 2 Type 1 ссылалась на контроли, которых в кодовой базе не было — аудит был «нарисован».
Итог. Покупатель использовал находки, чтобы пересмотреть условия — снизил предложение на 90 млн ₽, добавил escrow-удержание на 60 млн ₽ под устранение замечаний и сделал закрытие сделки условным: вычистить логи за 60 дней. Сделка закрылась на 577 млн ₽ вместо 727 млн ₽; устранение заняло 11 недель. Если у вас на столе цель для сделки — позвоните или напишите нам.
Как выбрать глубину аудита — пять вопросов
В1. Какой триггер? M&A → полный аудит. Смена подрядчика → полный аудит. Подготовка к Series A → фокус на производительности и архитектуре. После инцидента → фокус на безопасности.
В2. Какой размер кодовой базы? <100k LoC: 5–7 дней, один аудитор. 100k–500k LoC: 10–14 дней, два аудитора. >500k LoC: 3–5 недель, команда из 3+ человек.
В3. Важны ли требования соответствия? Если регулируемая сфера (HIPAA, SOC 2, PCI), раздел 9 ощутимо расширяется — закладывайте дополнительное время.
В4. Доступна ли действующая команда? Часовое интервью с инженерным лидом — не опция. Если они отказываются, это уже находка.
В5. Насколько срочно? Быстрый просмотр перед LOI: 5-дневная сводка тревожных сигналов. Due diligence перед закрытием сделки: двухнедельный полный аудит. Планирование устранения после закрытия: 3–4 недели глубокого погружения.
Чего избегать
1. Самопроверка проверяемым подрядчиком. Конфликт интересов. Аудитор всегда внешний.
2. Аудит без интервью с инженерами. Теряется 20–40 % контекста. Часовое интервью обязательно.
3. Выгрузка инструмента вместо отчёта. Сам по себе отчёт SonarQube — ещё не аудит. Инструменты дают шум; аудитор интерпретирует и расставляет приоритеты.
4. Нет плана устранения. Находки без оценки трудозатрат и приоритетов — это претензии, а не задачи.
5. Доверие к собственной аттестации SOC 2 продавца. Иногда аттестации «рисуют». Проверяйте контроли независимо.
KPI, по которым измеряется ценность аудита
KPI качества. Количество critical-находок (задача аудита — найти их, а не обойти стороной). Доля ложных срабатываний (цель: <10 % находок отозваны после ревью инженерами).
Бизнес-KPI. Изменение цены сделки на основе аудита (в M&A): обычно 37–225 млн ₽ влияния на оценку. Сэкономленные расходы на устранение (при смене подрядчика): обычно 2–5× от стоимости аудита.
KPI надёжности. Завершение аудита в плановые сроки (цель: 100 %). Точность оценки трудозатрат через 6 месяцев (цель: ±15 %).
Когда аудит кода избыточен
Код до MVP / хакатонный код. Кодовая база и так одноразовая. Пропустите аудит; перепишете после product-market fit.
Продолжаете работать с тем же подрядчиком. Если команда вас устраивает и вы просто добавляете функции, аудит не нужен — кодовая база на её ответственности.
Свободный отбор перед сделкой. Если вы оцениваете 30 целей для поглощения, а закроется только 3, одностраничная сводка тревожных сигналов дешевле. Полный аудит — только на финальных кандидатах.
FAQ
Сколько стоит аудит кода?
Сводка тревожных сигналов (5 дней, 1 аудитор): 375 тыс.–1,1 млн ₽. Полный аудит из 12 разделов (10–14 дней, 2 аудитора): 1,5–3,7 млн ₽. Корпоративный аудит (3–5 недель, команда): 5,6–15 млн ₽. Аудиторы дешевле существуют; качество гуляет дико — запрашивайте артефакты прошлых проектов.
Может ли одна и та же команда сначала провести аудит, а потом разрабатывать?
Распространённый сценарий. Команда, которую вы только собираетесь нанять, может проверить кодовую базу (конфликта нет, ведь они аудируют не свою работу). Команда, которая ведёт разработку прямо сейчас, не может аудировать саму себя — в этом и конфликт.
Что делать, если продавец отказывает в доступе к коду?
Серьёзный тревожный сигнал. В M&A отказ от технического due diligence — повод выйти из сделки. Договаривайтесь о read-only доступе для независимого аудитора под NDA; если продавец продолжает отказывать, сделка не такая чистая, как вам её представляют.
Сколько занимает экспресс-аудит?
Одностраничная сводка тревожных сигналов от опытного аудитора — 5 рабочих дней. Мы предлагаем её бесплатно как первый шаг более глубокого проекта — уходит примерно полдня senior-аудитора.
Что, если в отчёте всё ОК, а на деле всё плохо?
Ответственность аудитора закреплена договором — за пропуски при низком качестве отвечает аудиторская компания. Перед наймом обязательно посмотрите образец работы. Прочитайте обезличенные отчёты прошлых проектов, чтобы оценить глубину.
Заменяют ли AI-инструменты (Claude, GPT-4) живых аудиторов?
Дополняют, а не заменяют. AI отлично справляется с обходом репозитория, поиском точек сложности и анализом зависимостей. Но не оценивает, что приемлемо в данном контексте. Лучшая практика 2026 года: AI-ассистированные аудиты идут на 30–40 % быстрее ручных, но за оценкой по существу всё равно стоит senior-аудитор.
А что насчёт pentest — это то же самое?
Нет. Pentest — это имитация внешней атаки на работающую систему, ищет эксплуатируемые уязвимости. Аудит кода — white-box-разбор исходников, ищет недостатки проектирования, скрытые зависимости, технический долг. У зрелой безопасности есть и то, и другое.
Заменяет ли аудит аттестацию SOC 2?
Нет. SOC 2 — это формальная аттестация лицензированной CPA-компанией по AICPA Trust Service Criteria. Аудит кода готовит к SOC 2, но не заменяет саму аттестацию. См. наш гайд по HIPAA + SOC 2.
Что почитать дальше
Оценка
Гайд по оценке проекта для CTO
После аудита оцените работы по устранению.
Основателю
Гайд по найму подрядчика
Аудит до найма; шаблон тот же.
НФТ
Чек-лист нефункциональных требований
Аудит измеряет соответствие НФТ вашей спецификации.
Соответствие
HIPAA + SOC 2
Раздел 9 чек-листа — в подробностях.
Баги
Баги Lovable-приложений и стоимость их починки
Когда AI-сгенерированному коду нужен аудит перед масштабированием.
Готовы провести аудит кодовой базы, в которой пока не уверены?
Двухнедельный аудит кода стоит 1,5–3,7 млн ₽ и окупается в 2–5 раз за счёт пересмотра цены в M&A или экономии на устранении после смены подрядчика. Чек-лист из 12 разделов закрывает всё, что убивает проекты. Сочетайте выгрузку инструментов с экспертной оценкой; интервью с инженерами обязательно; результат — план устранения с оценкой трудозатрат, а не список претензий.
Пять тревожных сигналов всплывают в первые 2 дня любого аудита: пробелы в escrow-депонировании, зависимость от одного разработчика, PII в открытом виде, самописные проприетарные фреймворки, потребительские SaaS как критическая инфраструктура. Поймайте их раньше, чем они поймают вас.
Хотите одностраничную сводку тревожных сигналов по своей кодовой базе?
Пришлите read-only доступ к репозиторию. Мы вернём находки за 5 рабочих дней. Бесплатно.

