
semgrep v1.171.0
Легковесный статический анализ для многих языков. Находите варианты ошибок с помощью паттернов, похожих на исходный код.
Сканирование кода с невероятной скоростью.
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, поскольку она добавляет следующие критические возможности:
- Улучшенные возможности основного анализа (межфайловый, межфункциональный, достижимость потока данных), которые значительно снижают количество ложных срабатываний на 25% и увеличивают количество обнаруженных истинных срабатываний на 250%
- Контекстная постобработка результатов с помощью Semgrep Assistant (ИИ) для дальнейшего снижения шума на ~20%. Кроме того, Assistant обогащает результаты индивидуальными пошаговыми инструкциями по устранению, которые люди считают действенными в >80% случаев.
- Настраиваемые политики и бесшовная интеграция в рабочие процессы разработчиков, предоставляющие командам безопасности детальный контроль над тем, где, когда и как различные результаты представляются разработчикам (IDE, комментарий к PR и т. д.)
Semgrep AppSec Platform работает «из коробки» с более чем 20 000 проприетарных правил для SAST, SCA и секретов. Pro-правила написаны и поддерживаются командой исследователей безопасности Semgrep и отличаются высокой точностью, что означает, что команды AppSec могут уверенно передавать результаты напрямую разработчикам, не замедляя их.
Semgrep анализирует код локально на вашем компьютере или в вашей среде сборки: по умолчанию код никогда не загружается. Начать →.
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.
Начало работы 🚀
Новым пользователям мы рекомендуем начать с Semgrep AppSec Platform, так как она предоставляет визуальный интерфейс, демо-проект, рабочие процессы триажа и исследования результатов, а также ускоряет настройку в CI/CD. Сканирование по-прежнему выполняется локально, и код не загружается. В качестве альтернативы вы также можете начать с CLI и перемещаться по выводу терминала для выполнения одноразовых поисков.
Вариант 1: Начало работы с платформой Semgrep AppSec (рекомендуется)
-
Зарегистрируйтесь на semgrep.dev
-
Изучите демонстрационные результаты, чтобы узнать, как работает Semgrep
-
Отсканируйте свой проект, перейдя в
Projects > Scan New Project > Run scan in CI -
Выберите вашу систему контроля версий и следуйте шагам адаптации для добавления проекта. После этой настройки Semgrep будет сканировать ваш проект после каждого pull request.
-
[Опционально] Если вы хотите запустить Semgrep локально, следуйте шагам в разделе CLI.
Примечания:
Если возникнут вопросы, обратитесь за помощью в Slack сообщества Semgrep.
Вариант 2: Начало работы с CLI
-
Установите 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 -
Запустите
semgrep login, чтобы создать учетную запись и войти в Semgrep. Этот шаг необязателен, но вход в Semgrep дает вам доступ к:- Semgrep Supply Chain: A dependency scanner that detects reachable vulnerabilities in third party libraries
- Semgrep Code's Pro rules: 600+ high confidence rules written by Semgrep's security research team
- Semgrep Code's Pro engine: An advanced code analysis engine, designed to detect complex vulnerabilities, and reduce false positives
-
Перейдите в корневую директорию вашего приложения и выполните
semgrep ci. Это просканирует ваш проект на наличие уязвимостей в исходном коде и его зависимостях. -
Попробуйте написать свой собственный запрос в интерактивном режиме с помощью
-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, нажав здесь.
Примеры
Посетите Docs > Примеры правил для вариантов использования и идей.
| Вариант использования | Правило Semgrep |
|---|---|
| Запрет опасных API | Prevent 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 |
| Миграция с устаревших API | DES 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 описаны принципы, которыми руководствуются при принятии решений о сборе данных, а также разбивка данных, которые собираются и не собираются при включенных метриках.
Дополнительно
- Часто задаваемые вопросы (FAQ)
- Участие в разработке
- Инструкции по сборке для разработчиков
- Задавайте вопросы в Slack сообщества Semgrep
- Справочник по CLI и коды выхода
- YouTube-канал Semgrep
- Лицензия (LGPL-2.1)
- Лицензирование 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
