Semgrep умный grep или швейцарский нож?
Хотите одним инструментом проанализировать свой код на наличие типичных уязвимостей, проверить качество кода, выявить секреты в коде или ошибки в IaC и Dockerfile? Для решения таких задач можно воспользоваться инструментом Semgrep.
Semgrep — статический анализатор, который для поиска использует правила, написанные в yaml формате. У semgrep есть свой репозиторий с правилами, где можно подобрать нужный для вас стек и проверки: https://semgrep.dev/r / https://github.com/returntocorp/semgrep-rules
Semgrep поддерживает следующие языки:
- C#
- Go
- Java
- JavaScript
- JSON
- JSX
- Python
- Ruby
- TypeScript
- TSX
- YAML
- Generic (ERB, Jinja, и тд.)
И многие другие в Beta или Experimental режиме, например, C++, Rust, PHP.
Интересно то, что можно свободно писать собственные правила с указанием уровня критичности, описания, рекомендаций, CWE, ссылок на источники. Еще semgrep очень просто встраивается в процесс CI/CD.
Все это может быть полезно, если у вас есть процесс сборки и вы используете некий сервис для агрегации всех уязвимостей в рамках процесса управления уязвимостями, например, DefectDojo. Тогда в несколько шагов можно получить отличный инструмент для статического анализа кода, который в автоматическом режиме будет выявлять ошибки, уязвимости, недостатки в качестве кода.
Хотите одним инструментом проанализировать свой код на наличие типичных уязвимостей, проверить качество кода, выявить секреты в коде или ошибки в IaC и Dockerfile? Для решения таких задач можно воспользоваться инструментом Semgrep.
Semgrep — статический анализатор, который для поиска использует правила, написанные в yaml формате. У semgrep есть свой репозиторий с правилами, где можно подобрать нужный для вас стек и проверки: https://semgrep.dev/r / https://github.com/returntocorp/semgrep-rules
Semgrep поддерживает следующие языки:
- C#
- Go
- Java
- JavaScript
- JSON
- JSX
- Python
- Ruby
- TypeScript
- TSX
- YAML
- Generic (ERB, Jinja, и тд.)
И многие другие в Beta или Experimental режиме, например, C++, Rust, PHP.
Интересно то, что можно свободно писать собственные правила с указанием уровня критичности, описания, рекомендаций, CWE, ссылок на источники. Еще semgrep очень просто встраивается в процесс CI/CD.
Все это может быть полезно, если у вас есть процесс сборки и вы используете некий сервис для агрегации всех уязвимостей в рамках процесса управления уязвимостями, например, DefectDojo. Тогда в несколько шагов можно получить отличный инструмент для статического анализа кода, который в автоматическом режиме будет выявлять ошибки, уязвимости, недостатки в качестве кода.