Semgrep

Exploitation v1.171.0 · 22.07.2026 активный

Молниеносный статический анализатор кода с человекочитаемым синтаксисом правил (похож на сам код, а не на regex): находит реальные уязвимости и антипаттерны в десятках языков за секунды на кодовых базах любого размера. Используется огромным количеством компаний для проверки кода на лету, до продакшна.

v1.171.0
22.07.2026 current
Добавлен 27.07.2026 · Обновлён 27.07.2026 · Exploitation
Установка
pip install semgrep

semgrep --config auto /path/to/code
semgrep --config "p/security-audit" .
переведено ИИ


Логотип Semgrep

Сканирование кода на безумной скорости.

Homebrew PyPI Документация Присоединяйтесь к Slack-сообществу Semgrep Проблемы приветствуются! Поставьте звёздочку Semgrep на GitHub Загрузки Docker Загрузки Docker (старые) Подпишитесь на @semgrep в Twitter


Semgrep — это быстрый инструмент статического анализа с открытым исходным кодом, который ищет в коде, находит ошибки и обеспечивает соблюдение безопасных стандартов и стандартов кодирования. Semgrep поддерживает более 30 языков программирования и может работать в IDE, в качестве проверки перед коммитом и как часть пайплайнов CI/CD.

Semgrep — это семантический grep для кода. Если запустить grep "2", будут найдены только точные совпадения со строкой 2, тогда как Semgrep найдёт совпадение в x = 1; y = x + 1 при поиске 2. Правила Semgrep выглядят как код, который вы уже пишете; никаких абстрактных синтаксических деревьев, возни с регулярными выражениями или болезненных ДСЯ (DSL).

Обратите внимание, что в контексте безопасности Community Edition Semgrep будет пропускать многие истинно положительные результаты, поскольку он может анализировать код только в пределах одной функции или одного файла. Если вы хотите использовать Semgrep в целях безопасности (SAST, SCA или сканирование секретов), настоятельно рекомендуется платформа Semgrep AppSec, поскольку она добавляет следующие критически важные возможности:

  1. Улучшенные возможности анализа ядра (межфайловый, межфункциональный анализ, отслеживаемость потока данных), которые значительно снижают количество ложноположительных результатов на 25% и увеличивают количество обнаруженных истинно положительных результатов на 250%
  2. Контекстная постобработка находок с помощью Semgrep Assistant (ИИ) для дальнейшего снижения шума примерно на ~20%. Кроме того, Assistant обогащает находки индивидуальными пошаговыми рекомендациями по исправлению, которые >80% людей находят применимыми на практике.
  3. Настраиваемые политики и бесшовная интеграция в рабочие процессы разработчиков, обеспечивающие командам безопасности детальный контроль над тем, где, когда и как различные находки представляются разработчикам (IDE, комментарии к PR и т.д.)

Платформа Semgrep AppSec работает из коробки с 20 000+ проприетарными правилами в области SAST, SCA и сканирования секретов. Профессиональные правила написаны и поддерживаются командой безопасности Semgrep и отличаются высокой точностью, что означает, что команды AppSec могут уверенно передавать находки напрямую разработчикам, не замедляя их.

Semgrep анализирует код локально на вашем компьютере или в вашей среде сборки: по умолчанию код никогда не загружается. Начните использовать →.

Изображение Semgrep CLI

Поддерживаемые языки

Semgrep Code поддерживает более 30 языков, включая:

Apex · Bash · C · C++ · C# · Clojure · Dart · Dockerfile · Elixir · HTML · Go · Java · JavaScript · JSX · JSON · Julia · Jsonnet · Kotlin · Lisp · Lua · OCaml · PHP · Python · R · Ruby · Rust · Scala · Scheme · Solidity · Swift · Terraform · TypeScript · TSX · YAML · XML · Generic (ERB, Jinja и др.)

Semgrep Supply Chain поддерживает 12 языков в рамках 15 менеджеров пакетов, включая:

C# (NuGet) · Dart (Pub) · Go (Go модули, go mod) · Java (Gradle, Maven) · Javascript/Typescript (npm, Yarn, Yarn 2, Yarn 3, pnpm) · Kotlin (Gradle, Maven) · PHP (Composer) · Python (pip, pip-tool, Pipenv, Poetry) · Ruby (RubyGems) · Rust (Cargo) · Scala (Maven) · Swift (SwiftPM)

Дополнительные сведения см. в разделе Поддерживаемые языки.

Начало работы 🚀

  1. Через платформу Semgrep AppSec
  2. Через CLI

Для новых пользователей мы рекомендуем начинать с платформы Semgrep AppSec, поскольку она предоставляет визуальный интерфейс, демо-проект, рабочие процессы сортировки и исследования результатов и обеспечивает быструю настройку в CI/CD. Сканирование по-прежнему выполняется локально, и код не загружается. Как альтернатива, вы также можете начать с CLI и работать с выводом в терминале для выполнения разовых поисковых запросов.

Вариант 1: Начало работы через платформу Semgrep AppSec (Рекомендуется)

Изображение платформы Semgrep

  1. Зарегистрируйтесь на semgrep.dev

  2. Ознакомьтесь с демонстрационными находками, чтобы понять, как работает Semgrep

  3. Отсканируйте свой проект, перейдя в Projects > Scan New Project > Run scan in CI

  4. Выберите свою систему контроля версий и выполните шаги по настройке для добавления вашего проекта. После этой настройки Semgrep будет сканировать ваш проект после каждого pull request.

  5. [Необязательно] Если вы хотите запустить Semgrep локально, следуйте инструкциям в разделе CLI.

Примечания:

Если возникнут какие-либо проблемы, обратитесь за помощью в Slack Semgrep.

Вариант 2: Начало работы через CLI

  1. Установите Semgrep CLI

    ```

    Для macOS

    $ brew install semgrep

    Для Ubuntu/WSL/Linux/macOS

    $ python3 -m pip install semgrep

    Чтобы попробовать Semgrep без установки, запустите через Docker

    $ docker run -it -v "${PWD}:/src" semgrep/semgrep semgrep login $ docker run -e SEMGREP_APP_TOKEN= --rm -v "${PWD}:/src" semgrep/semgrep semgrep ci ```

  2. Выполните semgrep login, чтобы создать учётную запись и войти в Semgrep. Этот шаг необязателен, но вход в Semgrep даёт вам доступ к:

    • Semgrep Supply Chain: Сканер зависимостей, обнаруживающий достижимые уязвимости в сторонних библиотеках
    • Профессиональные правила Semgrep Code: 600+ правил с высокой степенью достоверности, написанных командой безопасности Semgrep
    • Профессиональный движок Semgrep Code: Продвинутый движок анализа кода, предназначенный для обнаружения сложных уязвимостей и снижения количества ложноположительных результатов
  3. Перейдите в корневую директорию вашего приложения и выполните semgrep ci. Это сканирует ваш проект на наличие уязвимостей в исходном коде и его зависимостях.

  4. Попробуйте написать собственный запрос интерактивно с помощью флага -e. Например, проверка для Python, где левая и правая части оператора == совпадают (потенциально ошибка): $ semgrep -e '$X == $X' --lang=py path/to/src

Экосистема Semgrep

Экосистема Semgrep включает в себя следующие компоненты:

  • Semgrep Community Edition — движок анализа программ с открытым исходным кодом, лежащий в основе всего. Подходит для случаев использования с высокой допустимостью ложноположительных результатов — для консультантов, аудиторов безопасности или пентестеров.
  • Платформа Semgrep AppSec - Простое управление и масштабирование SAST, SCA и сканирования секретов в рамках организации без риска перегрузить разработчиков. Настраивайте, какие результаты видят разработчики, где они их видят, и интегрируйтесь с поставщиками CI, такими как GitHub, GitLab, CircleCI и другие. Включает бесплатные и платные тарифы.

  • Semgrep Code (SAST) - Достигайте реального прогресса в работе с бэклогом уязвимостей с помощью SAST, который минимизирует шум и позволяет разработчикам быстро устранять проблемы самостоятельно, даже если у них нет знаний по безопасности. Простая настройка безопасных направляющих и индивидуальные, пошаговые руководства по исправлению означают, что разработчики действительно устраняют проблемы, так как не чувствуют замедления.

  • Semgrep Supply Chain (SSC) - Сканер зависимостей с высокой сигнальностью, который обнаруживает достижимые уязвимости в сторонних библиотеках и функциях с открытым исходным кодом.

  • Semgrep Secrets (Сканирование секретов) - Обнаружение секретов, использующее семантический анализ, улучшенный анализ энтропии и валидацию для точного выявления конфиденциальных учетных данных в рабочем процессе разработчиков.

  • Semgrep Assistant (AI) - Assistant — это инженер по Application Security на базе ИИ, который помогает как разработчикам, так и командам AppSec приоритизировать, классифицировать и исправлять результаты Semgrep в масштабе. Люди соглашаются с решениями Assistant по автоматической классификации в 97% случаев и оценивают сгенерированные руководства по исправлению как полезные в 80% случаев. Чтобы узнать, как работает Assistant, прочитайте это описание.

  • MCP-сервер Semgrep - Сервер Протокола Контекста Моделей (MCP), который позволяет ИИ-ассистентам для кодирования запускать сканирования Semgrep напрямую. Интегрируется с Cursor, VS Code, Windsurf, Claude Desktop и другими. Запустите semgrep mcp, чтобы запустить его локально.

  • Хуки - Автоматически запускают сканирования Semgrep при написании кода.

  • Навыки / Подсказки - Встроенные MCP-подсказки, такие как write_custom_semgrep_rule, помогают ИИ-ассистентам писать точные правила Semgrep.
  • Плагин Claude Code - Доступен на официальном маркетплейсе и через репозиторий semgrep/mcp-marketplace: /plugin marketplace add semgrep/mcp-marketplace
  • Плагин Cursor - Доступен на официальном маркетплейсе и через репозиторий semgrep/cursor-plugin.

Дополнительные ресурсы:

  • Semgrep Playground - Интерактивный онлайн-инструмент для написания и публикации правил.
  • Semgrep Registry - Более 2 000 правил, созданных сообществом, охватывающих безопасность, корректность и уязвимости зависимостей.

Присоединяйтесь к сотням тысяч других разработчиков и инженеров по безопасности, уже использующих Semgrep в таких компаниях, как GitLab, Dropbox, Slack, Figma, Shopify, HashiCorp, Snowflake и Trail of Bits.

Semgrep разрабатывается и коммерчески поддерживается компанией Semgrep, Inc., компанией в области безопасности программного обеспечения.

Правила Semgrep

Правила Semgrep выглядят как код, который вы уже пишете; никаких абстрактных синтаксических деревьев, мучений с регулярными выражениями или болезненных DSL. Вот быстрое правило для поиска операторов print() в Python.

Запустите его онлайн в Semgrep Playground, нажав здесь.

<a href="https://semgrep.dev/playground/r/3qUzQD/ievans.print-to-logger"  target="_blank"><img src="https://raw.githubusercontent.com/semgrep/semgrep/develop/images/semgrep-example-rules-editor.jpg" width="582" alt="Пример правила Semgrep для поиска операторов print() в Python" /></a>

Примеры

Посетите Docs > Примеры правил для вариантов использования и идей.

Вариант использования Правило Semgrep
Запрет опасных API Запретить использование exec
Поиск маршрутов и аутентификации Извлечь маршруты Spring
Принудительное использование безопасных настроек по умолчанию Безопасная установка cookies Flask
Потоки зараженных данных в точки приема (sinks) Поток данных ExpressJS в sandbox.run
Принудительное соблюдение лучших практик проекта Использовать assertEqual для проверок на ==, Всегда проверять вызовы subprocess
Закрепление специфических для проекта знаний Проверять транзакции перед их выполнением
Аудит опасных мест безопасности Обнаружение XSS в Apache Airflow, Захардкоженные учетные данные
Аудит файлов конфигурации Поиск использований ARN в S3
---

| Переход с устаревших API | DES устарел, Устаревшие API Flask, Устаревшие API Bokeh | | Применение автоматических исправлений | Использование listenAndServeTLS |

Расширения

Посетите раздел Документация > Расширения, чтобы узнать об использовании Semgrep в вашем редакторе или pre-commit. При интеграции в CI и настройке для сканирования pull requests, Semgrep будет сообщать только о проблемах, внесенных этим pull request; это позволяет начать использовать Semgrep без необходимости исправлять или игнорировать ранее существовавшие проблемы!

Документация

Просмотрите полную документацию Semgrep на сайте. Если вы новичок в Semgrep, ознакомьтесь с разделом Документация > Начало работы или интерактивным учебником.

Метрики

Использование удаленной конфигурации из Реестра (например, --config=p/ci) отправляет псевдонимизированные метрики правил на semgrep.dev.

При использовании конфигураций из локальных файлов (например, --config=xyz.yml) метрики отправляются только при входе пользователя в систему.

Чтобы отключить метрики правил Реестра, используйте --metrics=off.

Политика конфендициальности Semgrep описывает принципы, направляющие решения о сборе данных, и детализацию собираемых и несобираемых данных, когда метрики включены.

Дополнительно

Обновление

Для обновления выполните команду, соответствующую способу установки Semgrep:

# Using Homebrew
$ brew upgrade semgrep

# Using pipx
$ pipx upgrade semgrep

# Using uv tool command
$ uv tool upgrade semgrep

# Using Docker
$ docker pull semgrep/semgrep:latest
Комментарии
Войдите, чтобы оставить комментарий