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. Тогда в несколько шагов можно получить отличный инструмент для статического анализа кода, который в автоматическом режиме будет выявлять ошибки, уязвимости, недостатки в качестве кода.