SAST (Static Application Security Testing) - это метод статического анализа безопасности приложений, который заключается в автоматизированном сканировании исходного кода, байт-кода или бинарных файлов на предмет уязвимостей и нарушений правил безопасности до запуска программы (на этапе разработки).
Ключевые характеристики SAST
- "Белый ящик" (White Box): Анализирует внутреннюю структуру приложения (исходный код, зависимости, конфигурации), не требуя его запуска.
- Раннее обнаружение: Интегрируется в IDE разработчика или CI/CD-пайплайн, выявляя проблемы на этапах написания кода, коммита или сборки.
- Анализ "изнутри": Ищет шаблоны уязвимостей, опасные функции, нарушения лучших практик (OWASP Top 10, CWE, SANS 25).
Преимущества
- Скорость: Позволяет исправлять ошибки до коммита.
- Точность локализации: Указывает на проблемную строку кода.
- Проактивность: Предотвращает уязвимости на ранних этапах (Shift Left).
- Покрытие: Анализирует 100% кода, включая неисполняемые ветви.
Недостатки и ограничения
- Ложные срабатывания: Требует ручной верификации результатов.
- Не видит runtime-контекст: Не обнаруживает уязвимости, проявляющиеся только при работе (логика, аутентификация).
- Языковая зависимость: Требует поддержки конкретных языков/фреймворков инструментом.
- Сложность настройки: Качественный анализ требует тонкой настройки правил.
Как работает SAST?
- Сканирование: Инструмент парсит код, строит абстрактное синтаксическое дерево (AST) и/или граф потока данных.
- Проверка: Сравнивает код с базой правил (например: SQL-инъекции, XSS, небезопасное использование криптографии, hardcoded-пароли).
- Отчет: Формирует список уязвимостей с указанием:
- Точного места в коде (файл, строка),
- Уровня риска (Critical/High/Medium/Low),
- Описания угрозы и рекомендаций по исправлению.
Примеры обнаруживаемых уязвимостей
Категория | Конкретные примеры |
Инъекции | SQLi, NoSQLi, OS Command Injection |
XSS | Отраженный, хранимый, DOM-based XSS |
Управление доступом | Непроверенные привилегии, IDOR |
Криптография | Слабые алгоритмы, hardcoded ключи, SSL-ошибки |
Конфиденциальные данные | Утечки паролей, токенов, ключей API |
SAST - это метод автоматизированного тестирования безопасности приложений путем анализа исходного кода без его выполнения, направленный на раннее выявление уязвимостей в процессе разработки.