
semgrep v1.171.0
軽量な静的解析、多言語対応。ソースコードのようなパターンでバグの亜種を見つけます。
驚異的な速度でコードスキャン。
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 は単一の関数またはファイル内のコードしか分析できないため、多くの真陽性を見逃すことに注意してください。セキュリティ目的 (SAST、SCA、シークレットスキャン) で Semgrep を使用する場合は、Semgrep AppSec Platform を強くお勧めします。これにより、以下の重要な機能が追加されます:
- 高度なコア分析機能 (ファイル間、関数間、データフローの到達可能性) により、偽陽性を 25% 削減し、検出される真陽性を 250% 増加
- Semgrep Assistant (AI) によるファインディングのコンテキスト後処理により、ノイズをさらに 約20% 低減。さらに、Assistant はファインディングに調整されたステップバイステップの修復ガイダンスを追加し、人間が 80% 以上の確率で実用的と評価
- カスタマイズ可能なポリシーと開発者ワークフローへのシームレスな統合により、セキュリティチームはファインディングを開発者に表示する場所、タイミング、方法 (IDE、PR コメントなど) を細かく制御可能
Semgrep AppSec Platform は、SAST、SCA、シークレットにわたる 20000 以上のプロプラエタリルールをそのまま使用できます。Pro ルールは Semgrep セキュリティ研究チームによって作成・保守され、非常に正確であるため、AppSec チームはファインディングを開発者に直接伝えても、開発者のペースを妨げることなく自信を持てます。
Semgrep はコードをローカルコンピュータまたはビルド環境で分析します:デフォルトではコードはアップロードされません。今すぐ始める →.
言語サポート
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)
詳細については、サポートされている言語 を参照してください。
はじめに 🚀
新しいユーザーには、Semgrep AppSec Platform から始めることをお勧めします。理由は、ビジュアルインターフェース、デモプロジェクト、結果のトリアージと探索ワークフローを提供し、CI/CD でのセットアップを迅速に行えるためです。スキャンは依然としてローカルで行われ、コードはアップロードされません。あるいは、CLI から始めて、ターミナル出力を操作して一回限りの検索を実行することもできます。
オプション 1: Semgrep Appsec Platform から始める (推奨)
-
semgrep.dev に登録
-
デモのファインディングを調べて Semgrep の動作を学ぶ
-
Projects > Scan New Project > Run scan in CIに移動してプロジェクトをスキャン -
バージョン管理システムを選択し、オンボーディング手順に従ってプロジェクトを追加。この設定後、Semgrep は各プルリクエスト後にプロジェクトをスキャンします。
-
[オプション] ローカルで Semgrep を実行する場合は、CLI セクションの手順に従ってください。
注意:
問題がある場合は、Semgrep Slack でヘルプを依頼してください。
オプション 2: CLI から始める
-
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 -
semgrep loginを実行してアカウントを作成し、Semgrep にログインします。この手順はオプションですが、ログインすると以下にアクセスできます:- Semgrep Supply Chain: サードパーティライブラリの到達可能な脆弱性を検出する依存関係スキャナー
- Semgrep Code の Pro ルール: Semgrep のセキュリティ研究チームが作成した 600 以上の高信頼ルール
- Semgrep Code の Pro エンジン: 複雑な脆弱性を検出し、偽陽性を減らすために設計された高度なコード分析エンジン
-
アプリのルートディレクトリに移動し、
semgrep ciを実行します。これにより、ソースコードとその依存関係の脆弱性をチェックするためにプロジェクトがスキャンされます。 -
-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 でオンライン実行。
例
ユースケースとアイデアについては、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 プライバシーポリシー は、データ収集の決定を導く原則と、メトリクスが有効な場合に収集されるデータおよび収集されないデータの内訳を説明しています。
詳細
- よくある質問 (FAQ)
- 貢献
- 開発者向けビルド手順
- Semgrep コミュニティ Slack で質問する
- CLI リファレンスと終了コード
- Semgrep YouTube チャンネル
- ライセンス (LGPL-2.1)
- ライセンス 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
