Назад к обновлениям
New releaseJul 24, 2026

semgrep v1.171.0

Легковесный статический анализ для многих языков. Находите варианты ошибок с помощью паттернов, похожих на исходный код.

Поделиться

Semgrep logo

Сканирование кода с невероятной скоростью.

Homebrew PyPI Documentation Join Semgrep community Slack Issues welcome! Star Semgrep on GitHub Docker Pulls Docker Pulls (Old) Follow @semgrep on Twitter


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

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

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

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

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

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

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

Language support

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 modules, 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)

Для получения дополнительной информации см. Supported languages.

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

  1. С платформы Semgrep AppSec
  2. Из CLI

Новым пользователям мы рекомендуем начать с Semgrep AppSec Platform, так как она предоставляет визуальный интерфейс, демо-проект, рабочие процессы триажа и исследования результатов, а также ускоряет настройку в 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

    # For macOS
    $ brew install semgrep
    
    # For Ubuntu/WSL/Linux/macOS
    $ python3 -m pip install semgrep
    
    # To try Semgrep without installation run via Docker
    $ docker run -it -v "${PWD}:/src" semgrep/semgrep semgrep login
    $ docker run -e SEMGREP_APP_TOKEN=<TOKEN> --rm -v "${PWD}:/src" semgrep/semgrep semgrep ci
    
  2. Запустите semgrep login, чтобы создать учетную запись и войти в Semgrep. Этот шаг необязателен, но вход в Semgrep дает вам доступ к:

  3. Перейдите в корневую директорию вашего приложения и выполните semgrep ci. Это просканирует ваш проект на наличие уязвимостей в исходном коде и его зависимостях.

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

Экосистема Semgrep

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

  • Semgrep Community Edition — движок анализа программ с открытым исходным кодом, лежащий в основе всего. Подходит для эпизодических случаев использования с высокой толерантностью к ложным срабатываниям — думайте о консультантах, аудиторах безопасности или пентестерах.

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

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

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

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

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

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

    • Хуки (Hooks) — автоматически запускают сканирование Semgrep во время написания кода.
    • Навыки/Подсказки (Skills / Prompts) — встроенные подсказки 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 — более 2000 правил, созданных сообществом, охватывающих безопасность, корректность и уязвимости зависимостей.

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

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

Правила Semgrep

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

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

Пример правила Semgrep для поиска операторов Python print()

Примеры

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

Вариант использованияПравило Semgrep
Запрет опасных APIPrevent use of exec
Поиск маршрутов и аутентификацияExtract Spring routes
Принудительное использование безопасных настроек по умолчаниюSecurely set Flask cookies
Загрязненные данные, попадающие в стокиExpressJS dataflow into sandbox.run
Принудительное соблюдение лучших практик проектаUse assertEqual for == checks, Always check subprocess calls
Кодификация знаний, специфичных для проектаVerify transactions before making them
Аудит горячих точек безопасностиFinding XSS in Apache Airflow, Hardcoded credentials
Аудит конфигурационных файловFind S3 ARN uses
Миграция с устаревших APIDES is deprecated, Deprecated Flask APIs, Deprecated Bokeh APIs
Применение автоматических исправленийUse listenAndServeTLS

Расширения

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

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

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

Метрики

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

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

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

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

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

UpgradingЧтобы обновиться, выполните команду ниже в зависимости от того, как вы установили Semgrep:```sh

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

Категории