Lex Humanitas показывает, где форма скрывает власть и подменяет смысл.

SAST

К сравнительной статье

SAST, или Static Application Security Testing, — статический анализ безопасности исходного кода, байткода или другого представления программы без выполнения её бизнес-сценариев.

Как работает

В зависимости от языка и инструмента анализ может включать:

  • поиск известных небезопасных конструкций;
  • анализ AST и байткода;
  • построение control flow и data flow;
  • taint analysis — отслеживание данных от недоверенного источника до опасной операции;
  • межпроцедурный анализ вызовов.

Например, инструмент может проследить путь:

HTTP parameter → controller → repository → SQL query

и сообщить, что недоверенное значение достигает SQL-запроса без необходимой обработки.

Что способен обнаружить

SAST применяют для поиска потенциальных injection-уязвимостей, небезопасной работы с вводом, неправильного использования криптографических API, утечек секретов, ошибок проверки доступа и других дефектов, выраженных в анализируемом коде.

Конкретное покрытие зависит от языка, фреймворка, набора правил и глубины анализа.

Ограничения

  • инструмент может сообщать о теоретически возможных, но фактически недостижимых путях;
  • без runtime-контекста он не всегда знает реальную конфигурацию и состояние системы;
  • динамическая генерация кода, reflection и сложные межсервисные потоки затрудняют анализ;
  • найденная небезопасная конструкция ещё не всегда означает практически эксплуатируемую уязвимость.

Где применять

SAST полезен в IDE, при проверке pull request и в CI. Его сильная сторона — ранний сигнал с привязкой к коду, когда исправление обычно дешевле.

Примеры инструментов

  • Semgrep Code — SAST с поддержкой правил и dataflow-анализа;
  • CodeQL — движок анализа, который представляет код как данные и выполняет запросы для поиска уязвимостей и ошибок.

Ключевая мысль: SAST наблюдает программу как структуру, не запуская её бизнес-сценарии.

Прокрутить вверх