はじめに
Claude Code自体のセキュリティ対策(prompt-injection記事)とは逆の話だ。Claude Codeを「道具」として使い、自分たちのコードの脆弱性をコーディング段階で発見・修正する——それがセキュリティシフトレフトだ。
コードレビューのタイミングでセキュリティ脆弱性を見つけるのは、すでに遅い。業界調査が示す試算では、設計段階で発見した欠陥の修正コストに対し、本番後の修正コストは15〜30倍に膨らむとされる。セキュリティ脆弱性は特にその差が大きい——インシデント対応・ユーザー通知・規制対応まで含めると、「コーディング中に気づいていれば」という後悔は計り知れない。
SASTツールが普及しない最大の理由は「使いにくさ」だ。スキャンを別途実行し、レポートを読み、コードを直す——このコンテキストスイッチが開発フローを断ち切る。Snyk・SemgrepなどのMCP統合は、この断絶をなくす。
Snyk MCP × Semgrep MCP——SAST/SCA/コンテナを「ゼロコンテキストスイッチ」で
Snyk MCP——11ツールで網羅
Snykが公式MCPサーバーを提供している。Claude Codeから11のセキュリティスキャンツールを操作できる。
| MCPツール | カテゴリ | 用途 |
|----------|---------|------|
| snyk_code_scan | SAST | 静的コード解析(SQL/Command/Code Injection等) |
| snyk_sca_scan | SCA | オープンソース脆弱性・ライセンス問題 |
| snyk_container_scan | コンテナ | OSおよび依存パッケージの脆弱性 |
| snyk_iac_scan | IaC | Terraform/K8s等のIaC設定ミス |
| snyk_sbom_scan | SBOM | ソフトウェア部品表の脆弱性分析 |
| snyk_aibom | AI-BOM | Pythonプロジェクト向けAI部品表生成 |
設定はCLI経由で行う。
# Snyk CLI インストール
npm install -g snyk@1.1298.0+
# 認証
snyk auth
# claude_desktop_config.json に追記(macOS: ~/Library/Application Support/Claude/)
{
"mcpServers": {
"snyk": {
"command": "snyk",
"args": ["mcp", "-t", "stdio"],
"env": {
"SNYK_CFG_ORG": "your-org-id"
}
}
}
}SQLインジェクション・コードインジェクション・コマンドインジェクション・パストラバーサル・XXE攻撃・デシリアライゼーション脆弱性・ハードコードシークレットとOWASP Top 10の主要カテゴリを網羅する。Snyk Agent Securityプラットフォームは多くのエンタープライズで採用が進んでおり、Claude Code・Cursor・Devinとの統合が公式サポートされている(snyk.io)。
なお、SCAスキャンではOSSライセンス問題も検出される。ビジネス利用でコピーレフトライセンス(GPL等)のライブラリを使っている場合、予期せぬ問題が見つかることがある。
Semgrep Multimodal——AIの推論と決定論的ルールの両立
SemgrepはClaude Code向けに公式MCPサーバーを提供している(github.com/semgrep/mcp、semgrep.dev/docs/mcp)。Anthropic公式プラグインとしても提供されている。
Semgrep公式ブログ(semgrep.dev/blog/2026/attackers-cant-have-all-the-advantage-introducing-semgrep-multimodal/)によると、従来のルールベースSASTとAI推論を組み合わせた「Semgrep Multimodal」アプローチは以下の結果を示している。
- ベースモデルと比較して真陽性8倍
- 偽陽性50%削減
- Autotriageにより初回利用でバックログの約60%削減
- 6Mを超える検知結果から学習した95%のユーザー一致率(定常状態)
決定論的ルールによる確実性とAIによる文脈理解の両立が、誤検知を減らしながら検知精度を上げる設計だ。コーディング中にエージェントが生成したコードをリアルタイムでスキャンする——「書き終わってからスキャン」ではなく「書きながら検知」のワークフローが実現する。
`/security-code-review` → `/security-iac-triage` → `/security-vibe-patch`——3段階パイプライン
hackarandas.comのエンジニアがClaude Codeのカスタムスキルとして構築した3段階セキュリティパイプラインがある(github.com/ch0ks/hackarandas-claude-toolbelt ※コミュニティが公開しているスキル集)。
ステージ1: `/security-code-review`
Semgrep Proの対関数トレース解析と手動スタイルの脆弱性評価を組み合わせた包括的監査。インジェクションリスク(SQL/Command/Code/Path)・認証と認可の欠陥・暗号化問題を、OWASP Top 10 (2021)のCWEマッピング付きレポートとして出力する。
ステージ2: `/security-iac-triage`
CVSSスコアをIaCの実際のコンテキストで補正する。「インターネットから到達可能か」「IAMでアクセス制限されているか」を確認することで誤検知を排除する。Terraform・Kubernetes・CloudFormation・Docker Composeに対応。数値が出ても誤検知に埋もれてしまうことがSAST普及を阻んできた。このステージが「本物の脆弱性だけに絞り込む」フィルターになる。
ステージ3: `/security-vibe-patch`
検出された脆弱性ごとにアトミックなコミットで修正を適用する。方針は「非機能コードに触れない、最小限の変更のみ」。修正後にSemgrepを再実行して検証する。
Apache Azkabanのコードベースで実施した監査では、XXEインジェクションとハードコードされた認証情報を特定し、構造化されたレポートと6行のパッチで両問題を解決した事例がある(hackarandas.com)。
「スキャンして終わり」から「スキャンして直す」への転換が、この3段階で実現する。
CLAUDE.mdをセキュアデベロップメントポリシーにする——「書きながら防ぐ」設計
スキャンは強力だが、「書く前から防ぐ」設計があればさらに良い。CLAUDE.mdにセキュリティルールを記述することで、コーディング中にClaude Codeが自動的にセキュリティ観点での警告を出すようになる。
# CLAUDE.md(セキュアデベロップメントポリシー)
## Security Rules
### OWASP Top 10 対応
- SQLクエリはPrepared Statement必須(文字列結合禁止)
- ユーザー入力は全て検証後使用(allowlistアプローチ)
- 比較はタイミング攻撃に耐性のある`hmac.compare_digest`を使用
- 外部入力を含むXMLはXXEを防ぐためentity processingを無効化
### シークレット管理
- ハードコードされたAPIキー・パスワードは即座にフラグ(環境変数必須)
- Gitleaksルール: AIのAPIキーとDB接続文字列のカスタムルールを適用
### 依存関係
- 新しいパッケージ追加時は`snyk_sca_scan`を実行してから採用判断
- CVSSスコア7.0以上の脆弱性は即座に修正
### IaC(Terraform/K8s)
- セキュリティグループの0.0.0.0/0開放は原則禁止(明示的な理由を要求)
- Secretsは必ずExternal Secrets Operator経由で管理コミュニティの実践報告では、CLAUDE.mdによるセキュリティルール定義で確認作業のオーバーヘッドが約30%削減されたという観察がある(hackarandas.com)。
オープンソースのスキルキットも活用できる。SecOpsAgentKit(github.com/AgentSecOps/SecOpsAgentKit、実在確認済み)はGitleaksによるシークレット検知・コンテナスキャン・脆弱性検知・ポリシー自動適用を含む25以上のセキュリティスキルをパッケージ化している。OWASP Claude Code Skill(github.com/agamm/claude-code-owasp、実在確認済み)はOWASP Top 10:2025・ASVS 5.0・エージェントAIセキュリティ・20以上の言語固有セキュリティ規則を含む。
導入は段階を踏むのが現実的だ。Snyk MCPをプロジェクトに追加(`snyk auth`→`snyk mcp`設定)するところから始め、CLAUDE.mdにシークレット管理ルールを追記する。次のスプリントで`/security-code-review`を試験実施すれば、リスクを管理しながら無理なく進められる。
ただし、SASTツールは依然として誤検知が多い。Semgrep Multimodalで改善されているが、すべての警告を機械的に修正せず、エンジニアが文脈を判断することが重要だ。コーディング中に常時スキャンが走ることでレスポンス速度に影響する場合もある。大規模リポジトリではオンデマンド実行かCI段階での実行とのバランスを検討してほしい。
まとめ
従来「Confluenceに書いて誰も読まない」だったセキュリティ規則を、CLAUDE.mdに移すことで「Claude Codeが毎回従う」ルールになる。セキュリティをDevExの一部として設計する——これが「書きながら防ぐ」シフトレフトの本質だ。
「本番で発見してから直す」から「コーディング中に気づいて防ぐ」へ。コストの差を知っていれば、投資の優先順位が変わるはずだ。

コメント