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

curl -X POST localhost/api/v1/scan/import/ -H "Authorization: Token a75bb26171cf391671e67b128bfc8ae1c779ff7b" -H "Content-Type: multipart/form-data" -F "file=@./" -F "product_name=Product1" -F "product_type=Application" -F "scanner_name=Semgrep JSON Report" -F "branch=dev" -F "repository=git@gitlab.com:whitespots-public/appsec-portal.git"

В этой команде используются следующие параметры:

  1. -X POST: задает используемый метод HTTP (в данном случае POST).

  2. -H "Authorization: Token <authorization_token>": задает токен авторизации, полученный от Security Center.

  3. -H "Content-Type: multipart/form-data": задает тип содержимого запроса.

  4. -F "file=@<report_file_path>": задает путь к файлу отчета, создаваемого сканером.

  5. -F "product_name=<product_name>": задает название сканируемого продукта.

  6. -F "product_type=<product_type>": задает тип сканируемого продукта.

  7. -F "scanner_name=<scanner_name>": задает имя сканера, используемого для создания отчета (Bandit Scan или GitLab Bandit)

  8. -F "branch=<branch_name>": (необязательно) указывает имя ветки в репозитории исходного кода (если применимо). Этот параметр особенно полезен, когда вы хотите связать результаты сканирования с определенной веткой в вашем репозитории. Если параметр не указан, сканирование будет связано с веткой по умолчанию

Информация об активах, если используется Auditor

  1. -F "repository=<repository SSH URL>": Если ваш продукт хранится в репозитории, введите адрес репозитория в определенном формате, например: git@gitlab.com:whitespots-public/appsec-portal.git

  2. -F "docker_image=<registry address>": Если ваш продукт является образом, введите адрес реестра, в котором находится ваш продукт, например: registry.gitlab.com/whitespots-public/appsec-portal/back/auto_validator:latest

  3. -F "domain=<domain>": Если ваш продукт является веб-продуктом, введите доменное имя вашего продукта, например: cybercodereview.ru

  4. -F "host=<host>": Если ваш продукт является веб-продуктом, введите IP-адрес вашего продукта, например: 0.0.0.0

Пример отчета:

Last updated