| name | security-bounty-hunter |
| description | リポジトリ内で悪用可能でバウンティに値するセキュリティ問題を探します。ノイジーなローカル限定の指摘ではなく、実際のレポートに適格なリモートから到達可能な脆弱性に焦点を当てます。 |
| origin | ECC direct-port adaptation |
| version | 1.0.0 |
Security Bounty Hunter
責任ある開示やバウンティ提出のための実用的な脆弱性発見が目的の場合にこれを使用します。広範なベストプラクティスレビューではありません。
使用タイミング
- 悪用可能な脆弱性を求めてリポジトリをスキャンする場合
- Huntr、HackerOne、または同様のバウンティ提出を準備する場合
- "これは本当にペイするのか?" が問いであって "これは理論的に安全でないか?" ではない場合のトリアージ
仕組み
リモートから到達可能でユーザー制御可能な攻撃パスにバイアスをかけ、プラットフォームが informative または out of scope として定期的に拒否するパターンを除外します。
スコープ内のパターン
以下は一貫して重要視される問題です:
| パターン | CWE | 典型的な影響 |
|---|
| ユーザー制御 URL による SSRF | CWE-918 | 内部ネットワークアクセス、クラウドメタデータ盗難 |
| ミドルウェアや API ガードの認証バイパス | CWE-287 | 権限のないアカウントまたはデータアクセス |
| リモートデシリアライゼーションや upload-to-RCE パス | CWE-502 | コード実行 |
| 到達可能なエンドポイントでの SQL インジェクション | CWE-89 | データ流出、認証バイパス、データ破壊 |
| リクエストハンドラでのコマンドインジェクション | CWE-78 | コード実行 |
| ファイル配信パスでのパストラバーサル | CWE-22 | 任意のファイル読み書き |
| 自動トリガーされる XSS | CWE-79 | セッション盗難、管理者侵害 |
これらはスキップ
以下は通常、低シグナルまたはバウンティ対象外です(プログラムが別途明示しない限り):
- リモートパスのないローカル限定の
pickle.loads、torch.load または同等物
- CLI 限定ツールでの
eval() または exec()
- 完全にハードコードされたコマンドでの
shell=True
- セキュリティヘッダーの欠落のみ
- エクスプロイト影響を伴わない汎用的なレート制限の不満
- 被害者が手動でコードをペーストする必要があるセルフ XSS
- 対象プログラムのスコープ外の CI/CD インジェクション
- デモ、サンプル、テスト専用コード
ワークフロー
- スコープを最初に確認: プログラムルール、SECURITY.md、開示チャネル、除外事項
- 実エントリポイントを発見: HTTP ハンドラ、アップロード、バックグラウンドジョブ、Webhook、パーサー、統合エンドポイント
- 役立つ場所で静的解析ツールを実行するが、トリアージ入力として扱う
- 実際のコードパスを端から端まで読む
- ユーザー制御が意味のあるシンクに到達することを証明する
- 可能な限り小さく安全な PoC で悪用可能性と影響を確認する
- レポート作成前に重複をチェックする
トリアージループの例
semgrep --config=auto --severity=ERROR --severity=WARNING --json
その後、手動でフィルタ:
- テスト、デモ、フィクスチャ、ベンダーコードを除外
- ローカル限定または到達不可能なパスを除外
- 明確なネットワークまたはユーザー制御ルートを持つ指摘のみを保持
レポート構造
## Description
[脆弱性の内容と、なぜ重要か]
## Vulnerable Code
[ファイルパス、行範囲、小さなスニペット]
## Proof of Concept
[最小限の動作するリクエストまたはスクリプト]
## Impact
[攻撃者が達成できること]
## Affected Version
[テストしたバージョン、コミット、またはデプロイターゲット]
品質ゲート
提出前に:
- コードパスが実際のユーザーまたはネットワーク境界から到達可能
- 入力が本当にユーザー制御可能
- シンクが意味のあるもので悪用可能
- PoC が動作する
- 問題が既存のアドバイザリ、CVE、オープンチケットでカバーされていない
- ターゲットが実際にバウンティプログラムのスコープ内である