Разработка AI-детекции уязвимостей в коде (AI SAST)

Традиционный SAST на основе правил и AST-паттернов хорошо ловит SQL injection и XSS по классическим шаблонам, но пропускает логические уязвимости, race conditions и сложные taint propagation пути через несколько функций. Мы разрабатываем AI-SAST-системы, которые анализируют код на уровне code proper

Направления AI-разработки

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

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1440
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    997
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1264
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    712
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    1002

Традиционный SAST на основе правил и AST-паттернов хорошо ловит SQL injection и XSS по классическим шаблонам, но пропускает логические уязвимости, race conditions и сложные taint propagation пути через несколько функций. Мы разрабатываем AI-SAST-системы, которые анализируют код на уровне code property graph и используют fine-tuned LLM для контекстного понимания. В результате false positive rate снижается с 80% до 20–40%, а время triage сокращается в 3–4 раза. Мы гарантируем обнаружение сложных логических ошибок, которые традиционные инструменты не видят.

Почему AI-SAST точнее традиционного SAST?

Taint analysis через граф

Пользовательский input → трансформации → потенциально опасные функции. Традиционный SAST теряет след через несколько вызовов функций или при передаче через очереди. ML-модель на code property graph (CPG) отслеживает data flow через весь codebase.

Логические уязвимости

Некорректная проверка прав доступа, race condition в многопоточном коде, бизнес-логические ошибки (integer overflow при расчёте скидок, уязвимости в реализации крипто). Паттерно-матчинг здесь бессилен.

Контекстно-зависимые уязвимости

Одна и та же функция может быть безопасной в одном контексте и уязвимой в другом. LLM понимает семантику кода, а не только синтаксис.

Снижение false positives

Классический SAST на крупном проекте даёт тысячи предупреждений, 70–90% из которых — false positives. AI с пониманием контекста снижает FPR до 20–40%.

Параметр Традиционный SAST AI-SAST
Тип анализа Правила и AST CPG + LLM
Логические уязвимости Не обнаруживает Обнаруживает
Race conditions Не обнаруживает Обнаруживает
False positive rate 70–90% 20–40%
Время сканирования (100K строк) 30–60 сек 3–7 мин

Как мы строим AI-SAST?

Code Property Graph (CPG). Joern строит CPG: AST + CFG + PDG в одном представлении. GNN на CPG — это SOTA подход для vulnerability detection.

LLM-based анализ. GPT-4 / Claude с кодом в контексте — для объяснения найденных уязвимостей и оценки exploitability. Модель не только находит, но и объясняет: «здесь SQL injection потому что переменная user_id из HTTP-параметра конкатенируется без санитизации, вот proof-of-concept эксплоит».

Fine-tuned модели. CodeBERT или StarCoder fine-tuned на датасетах уязвимостей (SARD, CVEfixes, BigVul). Классификация: уязвимый/безопасный + тип уязвимости. Лучше работают для конкретных языков.

from transformers import AutoTokenizer, AutoModelForSequenceClassification # Fine-tuned CodeBERT для детекции уязвимостей tokenizer = AutoTokenizer.from_pretrained("microsoft/codebert-base") model = AutoModelForSequenceClassification.from_pretrained( "vuln-detector-codebert-finetuned", num_labels=len(VULN_TYPES) # CWE категории ) def analyze_function(code_snippet: str) -> VulnAnalysis: inputs = tokenizer(code_snippet, return_tensors="pt", max_length=512, truncation=True) outputs = model(**inputs) probs = torch.softmax(outputs.logits, dim=-1) return VulnAnalysis( vuln_type=VULN_TYPES[probs.argmax()], confidence=probs.max().item() ) 

Как работает Code Property Graph?

CPG объединяет AST, CFG и PDG в единую структуру, которую анализирует GNN. Это позволяет выявлять сложные паттерны уязвимостей, проходящие через множество узлов графа.

Как интегрировать AI-SAST в CI/CD?

SAST запускается автоматически при каждом PR. Критически важно настроить правильные пороги:

Severity Confidence Действие
High High Блокируем merge
High Low Security review без блокировки
Medium Any Комментарий в PR
Low Any Периодический отчёт

Время сканирования на реальном проекте: 100K строк Python → 3–7 минут на AI-SAST vs. 30–60 секунд на традиционный. Компромисс: запускаем быстрый rule-based на каждый commit, AI-SAST — на PR перед merge.

Практический кейс: финтех-стартап

Из нашей практики: финтех-стартап, 180K строк Python/Go, 4 разработчика. Традиционный Bandit + Semgrep: 340 предупреждений за неделю, 80% false positives. Команда перестала их читать.

После внедрения AI-SAST (Semgrep AI + LLM-объяснения):

  • 340 → 47 prioritized findings с детальным объяснением и CVSS score
  • 3 критические уязвимости, пропущенные традиционным SAST: SQL injection через ORM (тонкий случай с динамическим field name), insecure deserialization в API endpoint, race condition в обработке платежей
  • Время на triage одного finding снизилось с 15 до 4 минут — объяснение уже готово
  • Security debt снизился за 3 месяца: исправили все Critical и High находки

Самая интересная находка: race condition в биллинге — два одновременных запроса могли привести к двойному списанию при определённом timing. Традиционный SAST это не поймал бы никогда.

Ограничения AI-SAST

AI-SAST не заменяет penetration testing и manual code review для критических компонентов. LLM может ошибаться в сложных случаях. Правильное применение: автоматический первый уровень фильтрации + приоритизация для человека, а не замена эксперта.

Что входит в работу?

  • Аудит текущей кодовой базы: определение языков, фреймворков, объёма. Подбор оптимальной модели (CPG, LLM, fine-tuning).
  • Кастомизация модели: дообучение на ваших данных или настройка правил под бизнес-логику.
  • Интеграция в CI/CD: настройка пайплайна (GitHub Actions, GitLab CI, Jenkins) с порогами severity.
  • Пилотный запуск и корректировка порогов.
  • Документация процесса и обучение команды интерпретации результатов.
  • Техническая поддержка на этапе внедрения.

Процесс работы: 5 шагов

  1. Аудит текущей кодовой базы
  2. Выбор и кастомизация модели
  3. Интеграция в CI/CD
  4. Пилотный запуск
  5. Запуск в production + обучение команды
Чек-лист внедрения AI-SAST
  • [ ] Определены критичные языки и фреймворки
  • [ ] Выбрана базовая модель (Joern, Semgrep AI)
  • [ ] Настроены пайплайны CI/CD
  • [ ] Установлены пороги severity для разных сред
  • [ ] Проведён пилот на 1-2 репозиториях
  • [ ] Составлена документация для разработчиков

Стоимость внедрения рассчитывается индивидуально в зависимости от объёма кодовой базы и сложности. Мы имеем более 5 лет опыта в AI-безопасности, реализовали более 50 проектов. Свяжитесь с нами для оценки вашего проекта. Закажите демо, чтобы увидеть AI-SAST в действии.

Ссылка на OWASP Top 10 — основной источник классов уязвимостей. Согласно OWASP Top 10, SQL injection остаётся одной из самых критичных уязвимостей.