AI SAST Vulnerability Detection in Code

We design and deploy artificial intelligence systems: from prototype to production-ready solutions. Our team combines expertise in machine learning, data engineering and MLOps to make AI work not in the lab, but in real business.
Showing 1 of 1 servicesAll 1566 services
AI SAST Vulnerability Detection in Code
Complex
~1-2 weeks
FAQ
AI Development Areas
AI Solution Development Stages
Latest works
  • image_website-b2b-advance_0.png
    B2B ADVANCE company website development
    1212
  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Website development for BELFINGROUP
    852
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1041
  • image_logo-advance_0.png
    B2B Advance company logo design
    561
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    822

AI-система обнаружения уязвимостей (SAST)

Традиционный SAST работает на правилах и AST-паттернах. Он хорошо ловит SQL injection и XSS по классическим шаблонам, но пропускает логические уязвимости, race conditions, сложные taint propagation пути через несколько функций. AI-powered SAST понимает контекст кода — не только «есть ли конкатенация строки в SQL-запросе», но и «доходит ли пользовательский input до этой точки».

Что ловит AI-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%.

Технический подход

Code Property Graph (CPG). Joern строит CPG: AST + CFG (control flow graph) + PDG (program dependence graph) в одном представлении. 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()
    )

Интеграция в CI/CD

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

  • High severity + high confidence: блокируем merge автоматически
  • High severity + low confidence: обязательный security review без автоблокировки
  • Medium severity: комментарий в PR, не блокируем
  • Low severity: периодический отчёт, не в PR

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

Сроки: 2–4 недели для интеграции AI-SAST в CI/CD, 2–3 месяца для полного решения с custom правилами и обучением на кодовой базе клиента.