Semgrep
Semgrep - это быстрый инструмент с открытым исходным кодом, который сканирует исходный код, чтобы найти ошибки программирования, уязвимости безопасности и нарушения политики.
Название задания в Auditor: Semgrep, Gitlab Semgrep, Gitlab Php
Образ в Auditor: registry.gitlab.com/whitespots-public/security-images/semgrep:1.74.0
registry.gitlab.com/whitespots-public/security-images/semgrep-sast-gitlab:4
Название импортера в Security Center: Semgrep JSON Report, GitLab Semgrep
Semgrep поддерживает ряд языков программирования, таких как:
Python
JavaScript
Java
Go
Ruby
TypeScript
C#
Kotlin
PHP
Swift
Semgrep можно использовать для проверки на наличие таких проблем безопасности, как:
SQL-инъекции
Межсайтовый скриптинг (XSS)
Инъекция команд
Проблемы аутентификации и авторизации
Небезопасная криптография
Инъекция кода
Обход путей
Включение файлов
Утечка информации
Инъекция внешних сущностей XML (XXE)
Подделка запросов на стороне сервера (SSRF)
и другие
Интересной особенностью Semgrep является его способность обнаруживать проблемы безопасности в сложных кодовых базах. Он использует мощный механизм сопоставления шаблонов для выявления уязвимостей и является очень настраиваемым.
Пример команды Curl
В этой команде используются следующие параметры:
-X POST
: задает используемый метод HTTP (в данном случае POST).-H "Authorization: Token <authorization_token>"
: задает токен авторизации, полученный от Security Center.-H "Content-Type: multipart/form-data"
: задает тип содержимого запроса.-F "file=@<report_file_path>"
: задает путь к файлу отчета, создаваемого сканером.-F "product_name=<product_name>"
: задает название сканируемого продукта.-F "product_type=<product_type>"
: задает тип сканируемого продукта.-F "scanner_name=<scanner_name>"
: задает имя сканера, используемого для создания отчета (Bandit Scan или GitLab Bandit)-F "branch=<branch_name>"
: (необязательно) указывает имя ветки в репозитории исходного кода (если применимо). Этот параметр особенно полезен, когда вы хотите связать результаты сканирования с определенной веткой в вашем репозитории. Если параметр не указан, сканирование будет связано с веткой по умолчанию
Информация об активах, если используется Auditor
-F "repository=<repository SSH URL>"
: Если ваш продукт хранится в репозитории, введите адрес репозитория в определенном формате, например: git@gitlab.com:whitespots-public/appsec-portal.git-F "docker_image=<registry address>"
: Если ваш продукт является образом, введите адрес реестра, в котором находится ваш продукт, например: registry.gitlab.com/whitespots-public/appsec-portal/back/auto_validator:latest-F "domain=<domain>"
: Если ваш продукт является веб-продуктом, введите доменное имя вашего продукта, например: cybercodereview.ru-F "host=<host>"
: Если ваш продукт является веб-продуктом, введите IP-адрес вашего продукта, например: 0.0.0.0
Пример отчета:
Last updated