DeteAct

Аудит безопасности исходного кода

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

Паспорт услуги
Объект
Приложения и сервисы, библиотеки, middleware, микросервисы, смарт-контракты, криптографические библиотеки, прошивки HSM и IoT
Языки
Java, C#, PHP, Python, JavaScript, TypeScript, Go, C++, Rust, Solidity и другие
Методы
SAST, SCA, ручной taint-анализ, динамический анализ и фаззинг, проверка эксплуатируемости
Сроки
1–3 недели для отдельного сервиса или библиотеки, от 4 недель для крупной кодовой базы
Результат
Лаконичный отчёт с подтверждёнными уязвимостями, PoC, оценкой риска и рекомендациями под ваш проект
Доступ к коду
Под NDA; через репозиторий заказчика, архив или работу в его инфраструктуре

Экспертный анализ исходного кода

Аудит кода — единственный способ проверить то, что снаружи не видно: ветки логики без проверок прав, собственную криптографию, обработку редких форматов ввода, зависимости, до которых не доходит трафик пентеста. Мы имеем опыт анализа кода любой сложности на множестве языков программирования: Java, C#, PHP, Python, JavaScript, Go, TypeScript, C++, Rust, Solidity и других.

Среди проектов были аудиты различных middleware-компонентов, микросервисов, смарт-контрактов, криптографических библиотек, прошивок HSM-модулей и IoT-устройств; по результатам ручных исследований команда получила CVE в популярном ПО — ещё до эпохи ИИ-инструментов. Инструментарий подбираем под стек, а ручной анализ одинаково применим к любому коду.

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

Что входит в аудит

Шесть методов, которые применяем в каждом проекте. Они дополняют друг друга: инструменты дают широту, ручной анализ — глубину, проверка эксплуатируемости — точность.
Анализ документации
Изучаем архитектуру, спецификации и требования к безопасности, чтобы понимать контекст и выделить критические компоненты: обработку аутентификации, платежей, внешнего ввода и секретов.
Автоматизированный анализ (SAST)
Применяем специализированные инструменты статического анализа — коммерческие, открытые и собственные правила DeteAct — для выявления потенциальных уязвимостей по всей кодовой базе.
Композиционный анализ (SCA)
Проверяем зависимости и сторонние компоненты на наличие известных уязвимостей, устаревших версий и лицензионных рисков; оцениваем, достижим ли уязвимый код из вашего приложения.
Ручной taint-анализ
Отслеживаем пути данных от точек входа до опасных операций: запросов к базе, файловой системе, команд ОС, десериализации, криптографии. Так находятся векторы атак, которые инструменты не связывают между собой.
Динамический анализ и фаззинг
Дополняем статический анализ динамическими методами: запускаем код на стенде, фаззим парсеры и обработчики ввода, проверяем поведение в реальных условиях.
Проверка эксплуатируемости
Для каждой потенциальной уязвимости подтверждаем реальный риск: собираем PoC или обосновываем недостижимость, отсеивая ложные срабатывания до того, как они попадут в отчёт.

Какие дефекты находим

Классы уязвимостей по CWE, с которыми работаем чаще всего. Состав проверок зависит от языка и назначения кода и уточняется на скоупинге.
КлассЧто ищемПоследствия
ИнъекцииSQL, NoSQL, команды ОС, LDAP, шаблоны, XPath; небезопасные запросы, собранные конкатенациейЧтение и изменение данных, выполнение команд на сервере
Аутентификация и управление доступомПроверки прав, пропущенные в отдельных ветках кода, небезопасные сравнения токенов, ошибки в реализации OAuth и JWTДоступ к чужим данным, подъём привилегий
КриптографияСлабые алгоритмы и режимы, предсказуемые ключи и IV, собственные реализации примитивов, ошибки в протоколахРасшифровка данных, подделка подписей и токенов
Обработка внешнего вводаДесериализация, парсеры XML и JSON, загрузка файлов, path traversal, SSRF в интеграцияхВыполнение кода, доступ во внутреннюю сеть и к файлам
Память и низкоуровневый кодПереполнения буфера, use-after-free, целочисленные переполнения, состояния гонки в C, C++ и Rust-unsafeВыполнение кода, отказ в обслуживании
Бизнес-логикаСостояния гонки в платёжных операциях, обход лимитов и проверок, ошибки округления и порядка операцийПрямые финансовые потери
Секреты и конфигурацияКлючи и пароли в коде и истории репозитория, отладочные режимы, небезопасные значения по умолчаниюКомпрометация сторонних сервисов и окружений
Смарт-контрактыReentrancy, ошибки контроля доступа, арифметика, оракулы и фронтраннинг, ошибки обновляемых контрактовПотеря средств, блокировка контракта

Отчёт, а не выдача сканера

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

Лаконичный отчёт

Только подтверждённые уязвимости с описанием, местом в коде, условиями эксплуатации и оценкой реального риска.

Экспертная оценка

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

Рекомендации по исправлению

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

Раннее обнаружение

Находки приходят до релиза, когда исправление стоит дешевле всего; сложные уязвимости, которые пропускают автоматические инструменты, не доживают до продакшена.

Что нужно от вас

Аудит начинается после подписания NDA. Минимальный набор — код и инструкция по сборке; документация и стенд повышают глубину проверки.

Код
Доступ к репозиторию (чтение) или архив с фиксированной версией и историей коммитов, если она нужна для поиска секретов
Сборка
Инструкции по сборке и запуску, зависимости, переменные окружения; Docker-окружение ускоряет динамическую часть
Документация
Архитектура, спецификации API, модель угроз или перечень компонентов, работающих с чувствительными данными
Стенд
Не обязателен. Тестовое окружение позволяет подтверждать находки динамически и фаззить реальные обработчики
Контакт разработки
Инженер, который ответит на вопросы по коду в ходе проекта и примет результаты на разборе

Вопросы об аудите кода

Как защищён исходный код, который мы передаём на аудит?
До получения любых материалов подписываем соглашение о конфиденциальности. Код хранится в изолированном окружении на время проекта и удаляется по его завершении; при необходимости работаем в инфраструктуре заказчика — через выданный доступ к репозиторию или на выделенной машине. Порядок работы с кодом фиксируется в договоре.
Какие языки программирования вы анализируете?
Java, C#, PHP, Python, JavaScript, Go, TypeScript, C++, Rust, Solidity и другие. Инструментальная часть зависит от языка, ручной taint-анализ и проверка эксплуатируемости — нет, поэтому редкий стек не является препятствием.
Сколько стоит аудит кода и от чего зависит цена?
Стоимость фиксируется после скоупинга и зависит от объёма кода, числа компонентов и языков, наличия документации и требуемой глубины: от целевого аудита критичных модулей до полного обхода кодовой базы. Коммерческое предложение с составом работ и ценой готовим за один-два рабочих дня.
Сколько длится аудит?
Отдельный сервис или библиотека обычно занимает одну-три недели, крупная кодовая база из нескольких сервисов — от четырёх недель. При ограниченном бюджете начинаем с модулей, обрабатывающих аутентификацию, платежи и внешний ввод.
Чем аудит кода отличается от SAST, который у нас уже есть в CI?
SAST входит в аудит как один из инструментов, но его результаты мы верифицируем вручную и дополняем taint-анализом, фаззингом и проверкой эксплуатируемости. В итоге вы получаете не выдачу сканера с множеством ложных срабатываний, а короткий отчёт только с подтверждёнными уязвимостями и реальным риском.
Что нужно предоставить для начала работ?
Доступ к репозиторию или архив кода, инструкции по сборке и запуску, архитектурную документацию и спецификации, если они есть, и описание того, какие компоненты обрабатывают чувствительные данные. Тестовый стенд не обязателен, но позволяет подтверждать находки динамически.
Аудируете ли вы смарт-контракты и прошивки?
Да. Среди проектов были аудиты смарт-контрактов на Solidity, криптографических библиотек, middleware-компонентов, микросервисов, прошивок HSM-модулей и IoT-устройств.
Можно ли совместить аудит кода с пентестом?
Да, и это самый результативный формат: пентест в режиме белого ящика с доступом к коду. Пентестеры подтверждают находки аудита на работающем приложении, а аудит кода показывает то, что снаружи не видно. Состав работ согласуется на скоупинге.

Заказать аудит исходного кода

Опишите, что за код, на каких языках, примерный объём и что для вас критично. Уточним границы аудита, предложим глубину проверки и зафиксируем стоимость в течение одного-двух рабочих дней. Доступ к коду запрашиваем только после подписания NDA.

Почта
info@deteact.ru
Телефон
+7 499 444-12-46
Офис
Москва, Пресненская набережная, 10с2 (IQ-квартал, Москва-Сити)
Лицензия
ФСТЭК России №Л024-00107-00/00581935
Заявка уходит напрямую команде, без колл-центра. Ответим с рабочей почты.