ラベル semgrep の投稿を表示しています。 すべての投稿を表示
ラベル semgrep の投稿を表示しています。 すべての投稿を表示

2026年8月30日日曜日

semgrep 超入門

semgrep 超入門

概要

SAST しましょう

環境

  • macOS 26.6.2
  • semgrep 1.175.0

インストール

  • brew install semgrep

pip でもインストールできるのでグローバルにインストールしたくない場合は Pipfile や pyproject.toml を使いましょう

スキャン

  • semgrep --config=auto .

初回はルールのダウンロードが走ります
以下のようなエラーが良く出ます

  • CSS のインポート時に integrity がないから XSS されます
  • パスワードや鍵などのセンシティブ情報がコード内に含まれています
  • GithubActions や docker はタグじゃなくてコミットハッシュを指定しましょう、じゃないとサプライチェーンアタックの対象になる可能性があります

などなど出てきます

ルールセット

今回は auto でしたが p/ci や p/python など使えます

https://semgrep.dev/explore

OSS 版だと使えるルールセットが限られていますが Pro 版だとよりたくさんのルールセットが使えます

Gitlab CI

https://docs.semgrep.dev/semgrep-ci/sample-ci-configs

semgrep:
  # A Docker image with Semgrep installed.
  image: semgrep/semgrep
  # Run the "semgrep ci" command on the command line of the docker image.
  script: semgrep ci

  rules:
    # Allow triggering a scan manually from the GitLab UI
    - if: $CI_PIPELINE_SOURCE == "web"
    # Scan changed files in MRs, (diff-aware scanning):
    - if: $CI_MERGE_REQUEST_IID
    # Scan mainline (default) branches and report all findings.
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH

  variables:
    # Connect to Semgrep AppSec Platform through your SEMGREP_APP_TOKEN.
    # Generate a token from Semgrep AppSec Platform > Settings
    # and add it as a variable in your GitLab CI/CD project settings.
    SEMGREP_APP_TOKEN: $SEMGREP_APP_TOKEN

こんな感じらしいです
当然ですがローカルで実行してエラーをすべて解消しないと CI してもエラーになるので注意してください

最後に

semgrep を試してみました
無料版でも十分使えるレベルかなと思います
あとカスタムルールも作成できるので足りなければ自分でルールを作成すれば SAST なり SCA できます