アップデート一覧に戻る
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 は 2 を検索するときに x = 1; y = x + 1 に一致 します。Semgrep ルールは既に書いているコードのように見えます。抽象構文木や正規表現の格闘、面倒な DSL は必要ありません。

セキュリティコンテキストでは、Semgrep Community Edition は単一の関数またはファイル内のコードしか分析できないため、多くの真陽性を見逃すことに注意してください。セキュリティ目的 (SASTSCAシークレットスキャン) で Semgrep を使用する場合は、Semgrep AppSec Platform を強くお勧めします。これにより、以下の重要な機能が追加されます:

  1. 高度なコア分析機能 (ファイル間、関数間、データフローの到達可能性) により、偽陽性を 25% 削減し、検出される真陽性を 250% 増加
  2. Semgrep Assistant (AI) によるファインディングのコンテキスト後処理により、ノイズをさらに 約20% 低減。さらに、Assistant はファインディングに調整されたステップバイステップの修復ガイダンスを追加し、人間が 80% 以上の確率で実用的と評価
  3. カスタマイズ可能なポリシーと開発者ワークフローへのシームレスな統合により、セキュリティチームはファインディングを開発者に表示する場所、タイミング、方法 (IDE、PR コメントなど) を細かく制御可能

Semgrep AppSec Platform は、SAST、SCA、シークレットにわたる 20000 以上のプロプラエタリルールをそのまま使用できます。Pro ルールは Semgrep セキュリティ研究チームによって作成・保守され、非常に正確であるため、AppSec チームはファインディングを開発者に直接伝えても、開発者のペースを妨げることなく自信を持てます。

Semgrep はコードをローカルコンピュータまたはビルド環境で分析します:デフォルトではコードはアップロードされません今すぐ始める →.

Semgrep CLI image

言語サポート

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 · 汎用 (ERB、Jinja など)

Semgrep Supply Chain は 15 のパッケージマネージャーにわたる 12 の言語をサポートしています:

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)

詳細については、サポートされている言語 を参照してください。

はじめに 🚀

  1. Semgrep AppSec Platform から
  2. CLI から

新しいユーザーには、Semgrep AppSec Platform から始めることをお勧めします。理由は、ビジュアルインターフェース、デモプロジェクト、結果のトリアージと探索ワークフローを提供し、CI/CD でのセットアップを迅速に行えるためです。スキャンは依然としてローカルで行われ、コードはアップロードされません。あるいは、CLI から始めて、ターミナル出力を操作して一回限りの検索を実行することもできます。

オプション 1: Semgrep Appsec Platform から始める (推奨)

Semgrep platform image

  1. semgrep.dev に登録

  2. デモのファインディングを調べて Semgrep の動作を学ぶ

  3. Projects > Scan New Project > Run scan in CI に移動してプロジェクトをスキャン

  4. バージョン管理システムを選択し、オンボーディング手順に従ってプロジェクトを追加。この設定後、Semgrep は各プルリクエスト後にプロジェクトをスキャンします。

  5. [オプション] ローカルで Semgrep を実行する場合は、CLI セクションの手順に従ってください。

注意:

問題がある場合は、Semgrep Slack でヘルプを依頼してください

オプション 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=<TOKEN> --rm -v "${PWD}:/src" semgrep/semgrep semgrep ci
    
  2. semgrep login を実行してアカウントを作成し、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、シークレットスキャンを容易に調整およびスケーリングし、開発者を圧倒するリスクがありません。開発者に表示するファインディング、表示場所をカスタマイズし、GitHub、GitLab、CircleCI などの CI プロバイダーと統合できます。無料および有料の両方の層を含みます。

    • Semgrep Code (SAST) - ノイズを最小限に抑え、開発者がセキュリティ知識がなくても自分で問題を迅速に修正できるようにする SAST で、脆弱性バックログに真の進歩をもたらします。安全なガードレールの展開が容易で、調整されたステップバイステップの修正ガイダンスにより、開発者はスピードを落とされていると感じることなく実際に問題を修正します。

    • Semgrep Supply Chain (SSC) - オープンソースのサードパーティライブラリおよび関数内の到達可能な脆弱性を検出する高シグナル依存関係スキャナー。

    • Semgrep Secrets (シークレットスキャン) - セマンティック分析、改善されたエントロピー分析、検証を使用して、開発者ワークフロー内の機密資格情報を正確に表面化するシークレット検出。

    • Semgrep Assistant (AI) - Assistant は AI を搭載した AppSec エンジニアであり、開発者と AppSec チームの両方が Semgrep のファインディングを大規模に優先順位付け、トリアージ、修正するのに役立ちます。人間は Assistant の自動トリアージ決定に 97% の確率で同意し、生成された修正ガイダンスを 80% の確率で有用と評価します。Assistant の動作概要については、この概要を読んでください

  • Semgrep MCP Server - AI コーディングアシスタントが Semgrep スキャンを直接実行できる Model Context Protocol (MCP) サーバー。Cursor、VS Code、Windsurf、Claude Desktop などと統合。ローカルで semgrep mcp を実行して起動。

    • フック - コーディング中に自動的に Semgrep スキャンをトリガーします。
    • スキル / プロンプト - write_custom_semgrep_rule のような組み込み MCP プロンプトにより、AI アシスタントが正確な Semgrep ルールを作成できます。
    • Claude Code プラグイン - 公式マーケットプレイスおよび semgrep/mcp-marketplace リポジトリから入手可能: /plugin marketplace add semgrep/mcp-marketplace
    • Cursor プラグイン - 公式マーケットプレイスおよび semgrep/cursor-plugin リポジトリから入手可能。

追加リソース:

  • Semgrep Playground - ルールの作成と共有のためのオンライン対話型ツール。
  • Semgrep Registry - セキュリティ、正確性、依存関係の脆弱性をカバーする 2000 以上のコミュニティ駆動ルール。

GitLab、Dropbox、Slack、Figma、Shopify、HashiCorp、Snowflake、Trail of Bits などの企業で既に Semgrep を使用している何十万もの開発者およびセキュリティエンジニアに参加しましょう。

Semgrep は Semgrep, Inc.、ソフトウェアセキュリティ企業 によって開発・商用サポートされています。

Semgrep ルール

Semgrep ルールは既に書いているコードのように見えます。抽象構文木や正規表現の格闘、面倒な DSL は必要ありません。以下は Python の print() 文を見つけるための簡単なルールです。

こちらをクリック して Semgrep の Playground でオンライン実行。

Semgrep rule example for finding Python print() statements

ユースケースとアイデアについては、Docs > Rule examples を参照してください。

ユースケースSemgrep ルール
危険な API を禁止するexec の使用を防ぐ
ルートと認証を検索するSpring ルートを抽出する
安全なデフォルトの使用を強制するFlask Cookie を安全に設定する
シンクに流入する汚染データExpressJS データフローを sandbox.run へ
プロジェクトのベストプラクティスを強制する== チェックに assertEqual を使用するsubprocess 呼び出しを常にチェックする
プロジェクト固有の知識をコード化するトランザクションを行う前に検証する
セキュリティホットスポットを監査するApache Airflow の XSS を見つけるハードコードされた認証情報
設定ファイルを監査するS3 ARN の使用を見つける
非推奨 API から移行するDES は非推奨非推奨の Flask API非推奨の Bokeh API
自動修正を適用するlistenAndServeTLS を使用する

拡張機能

エディタまたは pre-commit で Semgrep を使用する方法については、Docs > Extensions を参照してください。CI に統合され、プルリクエストをスキャンするように設定すると、Semgrep はそのプルリクエストによって導入された問題のみを報告します。これにより、既存の問題を修正または無視することなく Semgrep の使用を開始できます。

ドキュメント

完全な Semgrep ドキュメントはウェブサイト で参照してください。Semgrep が初めての場合は、Docs > Getting started または対話型チュートリアル をチェックしてください。

メトリクス

Registry からのリモート設定 (--config=p/ci など) を使用すると、仮名化されたルールメトリクスが semgrep.dev に報告されます。

ローカルファイルからの設定 (--config=xyz.yml など) を使用する場合、ユーザーがログインしている場合にのみメトリクスが送信されます。

Registry ルールメトリクスを無効にするには、--metrics=off を使用します。

Semgrep プライバシーポリシー は、データ収集の決定を導く原則と、メトリクスが有効な場合に収集されるデータおよび収集されないデータの内訳を説明しています。

詳細

アップグレードアップグレードするには、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

カテゴリ