SASTとDAST
🔥 Vibe プロンプト
「Semgrep SASTとOWASP ZAP DASTをCI/CDパイプラインに統合。」
Semgrep SAST
on: pull_request
jobs:
semgrep:
steps:
- uses: semgrep/semgrep-action@v1
with:
config: p/default p/owasp-top-ten
severity: WARNING
カスタムルール
rules:
- id: no-eval
pattern: eval(...)
message: "eval()はRCEの原因に"
languages: [python]
severity: ERROR
- id: sql-injection
patterns:
- pattern: cursor.execute("..." + $QUERY + "...")
message: "SQLインジェクション脆弱性"
severity: ERROR
- id: hardcoded-secret
pattern: 'PASSWORD = "..."'
severity: ERROR
ZAP DAST
- uses: zaproxy/action-baseline@v0
with:
target: https://staging.myapp.com
cmd_options: '-a'
SAST vs DAST
| 項目 | SAST | DAST | |------|------|------| | タイミング | 開発中 | 実行中アプリ | | 対象 | ソースコード | ランタイム動作 | | ソースコード | 必要 | 不要 | | 誤検出 | 多い | 少ない | | 速度 | 高速(分) | 低速(時間) |
GitLeaks(シークレット検出)
- uses: gitleaks/gitleaks-action@v2
# AWSキー、GitHubトークン、秘密鍵、APIキーを検出
ベストプラクティス
- すべてのPRでSAST実行(迅速なフィードバック)
- 本番前のステージングでDAST実行
- SAST ERROR発見でPRをブロック
- プロジェクト固有のカスタムルール作成
- すべてのプッシュでシークレットスキャン
- SAST + DASTの組み合わせ
重要なポイント
- コアコンセプトをしっかり理解する
- ハンズオンコード例で実践する
- 実世界の問題に応用する
- 演習で知識を強化する
さらに学ぶ
- 公式ドキュメント
- GitHubのオープンソースプロジェクト
- コミュニティフォーラムとディスカッション
- 関連コースとチュートリアル