概要
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 など使えます
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 できます