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