ghost-validate について
ghost-validate は、セキュリティ指摘が真陽性か誤検知かを判断するスキルです。ソースコードのレビューを案内し、実行環境が利用可能な場合はプロキシ経由でテストして、証拠と推奨事項をまとめます。
主な機能
- 01指摘内容とエンドポイントの分析
- 02ソースコードとリクエストフローの確認
- 03任意の実環境での悪用可能性テスト
- 04証拠に基づく判定とレポート
- 05任意の検証記録の指摘ファイルへの追記
活用シーン
- 01報告されたセキュリティ指摘のトリアージ
- 02到達可能なエンドポイントの悪用可能性テスト
- 03検証の証拠と推奨事項の記録
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ ghostsecurity/ skills --skill ghost-validateインストール後、Claude Code で/ghost-validateを入力して読み込まれたか確認します。
同梱ファイルVULNERABILITY_PATTERNS.md
詳細
セキュリティ指摘の検証
セキュリティ指摘が真陽性か偽陽性かを判定します。根拠を添えて判定を提示します。
入力
ユーザーは、ファイルパスまたは貼り付けたテキストで指摘を提示します。どちらも提示されていない場合は、どちらかを求めてください。
次の情報を抽出します:脆弱性クラス、具体的な主張、影響を受けるエンドポイント、コードの場所、既存の検証根拠。
検証ワークフロー
Step 1: 指摘の内容を把握する
次を特定します:
- 脆弱性クラス(BFLA、BOLA、XSS、SQLi、SSRF など)
- 具体的な主張(どの認可チェックが欠落しているか、どの入力がサニタイズされていないかなど)
- 影響を受けるエンドポイントと HTTP メソッド
- コードの場所
Step 2: ソースコードを分析する
- 指定された行番号にある脆弱なファイルと、関連するすべてのファイルを読みます
- ルート登録からミドルウェアを経てハンドラーに至るまで、リクエストの流れを追跡します
- 具体的な主張を検証します。コードには実際に説明されたチェックが欠けていますか?
- スキャナーが見落とした可能性のある間接的な保護(ミドルウェア、ヘルパー、ORM の制約)を探します
- 説明された条件下で、脆弱なコードパスに到達できることを確認します
Step 3: ライブ検証(可能な場合)
アプリケーションのライブインスタンスにアクセスでき、ライブでのやり取りを通じて脆弱性を確認できる場合は、proxy スキルを使って悪用可能性を確認します。
- 対象ドメインにスコープを限定して reaper プロキシを起動します
- 正当なユーザーとして認証する(またはユーザーに認証してもらう)とともに、脆弱なエンドポイントへの有効なリクエストを取得します
- 指摘で説明された攻撃を試みるため、リクエストを再送信するか変更します
- レスポンスを期待される動作と比較します:
- 未認可の操作が成功しますか?(真陽性)
- サーバーは 401/403/404 で拒否しますか?(偽陽性)
reaper get <id>を使って、リクエストとレスポンスのペアを証拠として取得します
Step 4: 判定する
指摘を次のいずれかに分類します。
- True Positive:脆弱性が存在し、悪用可能です。コードに説明された保護がなく、エンドポイントに到達できます。
- True Positive (Confirmed):上記と同じで、さらにライブテストで悪用の成功が実証されています。
- False Positive:脆弱性は存在しません。具体的な理由(間接的な保護が見つかった、コードパスに到達できないなど)を示します。
- Inconclusive:追加情報なしでは判定できません。必要な情報を明記します。
Step 5: 報告する
次の形式で概要を出力します。
- 判定:True Positive、False Positive、または Inconclusive
- 確信度:High、Medium、または Low
- 根拠の概要:コードレビューおよび/またはライブテストで確認した主な事項
- コード分析:判定を裏付ける具体的な行とロジック
- ライブテスト結果(実施した場合):動作を示すリクエストとレスポンスのペア
- 推奨事項:真陽性の場合は修正、偽陽性の場合はクローズ、判定不能の場合は追加情報を収集
例:
## Validation Result
- **Determination**: True Positive
- **Confidence**: High
- **Evidence**: Handler at routes/transfers.go:142 queries transfers by ID without checking ownership. No middleware or ORM-level constraint enforces user scoping.
- **Recommendation**: Add ownership check — include user_id in the WHERE clause.
Step 6: 結果を保存する
指摘がファイルパスで提示された場合は、検証の詳細を元の指摘ファイルに追記するか、ユーザーに確認します。承諾された場合は、判定、確信度、根拠の概要、推奨事項を含む ## Validation セクションをファイルに追記します。
脆弱性クラスのリファレンス
認可の欠陥(BFLA/BOLA/IDOR)、インジェクション(SQLi/XSS)、認証の欠陥を検証する際に確認すべきパターンについては、このスキルディレクトリ内の VULNERABILITY_PATTERNS.md を参照してください。
コメント
Markdown 対応