はじめに:Vibe Codingと「理解負債」の恐怖
AIエージェント(Claude Codeなど)に開発を任せる「Vibe Coding」が急速に普及しています。一方で、自分が十分に理解していないコードを本番環境で動かしてしまう「理解負債」が、セキュリティリスクの原因として指摘されています。
最近の調査では、AIが生成したコードのうち約25〜40%に何らかの脆弱性が含まれているとされています。また、AI導入による生産性向上も期待ほど高くなく、平均で約10%程度にとどまるというデータもあります。その背景には、コードレビューやテストといったコーディング以外の工程が依然としてボトルネックになっている点があります。
「動いているから問題ない」と判断するのは危険です。そこで、OWASP ZAPの脆弱性診断レポートをAIに読み込ませ、コードを自動修正するClaude Code向けエージェントスキル「zap-auto-fixer」を開発し、GitHubで公開しました。
zap-auto-fixer とは
ユーザーが /zap-fix と入力するだけで、ZAPのレポートを解析し、次の流れで脆弱性を自動修正するスキルです。
- 解析: レポートから脆弱性(XSS、CORS設定不備、ヘッダー未設定など)を特定
- 修正範囲の確定: 対象ファイルと影響範囲を整理(この段階でユーザー確認を挟み、意図しない変更を防止)
- 修正: コードの修正および生成
- 検証: ヘッダーやAPIの動作確認を実施
- レポート出力: 修正内容と理由をまとめたセキュリティレポートを生成
技術的な工夫:段階的開示によるトークン最適化
AIエージェントの課題のひとつは、コンテキスト増加によるコストと処理速度の低下です。本スキルでは「段階的開示(Progressive Disclosure)」という構造を採用し、トークン使用量を最適化しています。
- 第1層(YAMLフロントマター): スキル名と起動条件のみを記述し、常時読み込まれる部分を最小化
- 第2層(SKILL.md 本文): コアとなるワークフローと基本定義を記述
- 第3層(references/): XSSやCORS、CSPなどの詳細ガイドは個別ファイルに分離し、必要時のみ読み込み
この構成により、不要なトークン消費を約40%削減しながら、必要な情報だけを読み込む効率的な仕組みを実現しています。
実証結果:脆弱性の大幅削減
意図的に脆弱性を含めた検証用アプリに対してスキルを実行した結果は以下の通りです。
| 検証前の脆弱性 | 修正後 |
|---|---|
| Medium 53件 | 0件(すべて解消) |
主な修正内容の例:
- CORS設定をワイルドカードから明示的なオリジン指定へ変更
- インラインスクリプトを外部ファイルへ分離し、CSPを適用
-
innerHTMLの使用を廃止し、安全なDOM操作へ置換
使い方
インストールはシンプルです。Claude Codeを利用しているプロジェクトで以下を実行します。
cp -r /path/to/cloned/zap-auto-fixer ./.claude/skills/
その後、Claude Code上で「ZAPレポートを修正して」または /zap-fix と入力するだけで、自動的に修正が実行されます。
おわりに
AIによってコード生成が高速化した現在、セキュリティ監査と自動修復を組み合わせた開発プロセスは不可欠になりつつあります。「AIの出力をAIで検証する」というアプローチは、今後の標準的な開発スタイルになる可能性があります。
本スキルが、安全性を担保しながら効率的に開発を進めるための一助になれば幸いです。
リポジトリへのフィードバックやスター(⭐️)は歓迎しています!