スキャン
Ogma にはパッシブスキャナーとアクティブスキャナーがあります。パッシブスキャンはキャプチャした通信を分析します。アクティブスキャンは変更したリクエストを送信し、レスポンスの挙動、時間、反映内容、ベースラインとの比較から指摘事項を検証します。
パッシブスキャナー
パッシブスキャナーは、新しい通信を送らずにキャプチャ済みの HTTP 項目を評価します。
次のようなカテゴリを検出します。
- SQL、NoSQL、LDAP、テンプレート、デシリアライズ、XML のエラー情報漏えい。
- 欠落した、または弱いセキュリティヘッダー。
- Cookie フラグの問題。
- CORS の設定不備。
- 公開されたシークレット、秘密鍵、サービスアカウントデータ、Webhook、トークン。
- 公開されたソース管理情報、設定、API ドキュメント、機密ファイル。
noneアルゴリズム、長い有効期限、HMAC の使用などの JWT の問題。- 遅いレスポンスと危険な HTTP メソッド。
パッシブスキャンの指摘事項はトリアージに役立ちますが、確認は必要です。ヘッダーやポリシーの指摘は、アプリケーションの状況に依存することがよくあります。
パッシブ分析の実行
- 通信をキャプチャします。
- ユーティリティ > スキャナーを開きます。
- パッシブスキャナーを選びます。
- すべての履歴をスキャンをクリックします。
- 指摘事項で作成された結果を確認します。
カスタムパッシブルールは設定 > スキャナーで設定します。
アクティブスキャナー
アクティブスキャナーは、リクエスト内の候補箇所にペイロードを注入し、対象のレスポンスを検証します。
実装済みのチェック群:
| チェック | 確認方法 |
|---|---|
| SQL インジェクション | SQL エラー、または時間ベースのペイロードによる実測ベースラインを超える再現可能な遅延を確認します。 |
| 反射型 XSS | HTML レスポンスに、想定されるエンコードが行われていないペイロードの反映が必要です。 |
| パストラバーサル / LFI | ベースラインのレスポンスに存在しないファイル内容の指標が必要です。 |
| OS コマンドインジェクション | コマンド出力、または時間計測用ペイロードで実測ベースラインを超える再現可能な遅延が必要です。 |
| SSTI | 結果が確定するテンプレート計算ペイロードを使い、レスポンスに計算結果が含まれることを要求します。 |
| SSRF | 注入した URL ペイロードから、メタデータやサービスバナーの証拠を要求します。 |
| オープンリダイレクト | 注入した外部ドメインを指すリダイレクトレスポンスが必要です。 |
スキャナーは意図的に、一般的な 200 OK レスポンスを脆弱性の証拠として扱いません。
未実装のチェック
アクティブチェックの一覧には、未実装と表示されたチェックが含まれることがあります。開発計画を明示するために表示されますが、指摘事項は作成しません。現在のバックエンドでは、帯域外またはアプリケーション固有の検証なしに XXE と安全でないアップロードを自動で確認することはありません。
すべてアクティブスキャン
すべてアクティブスキャンは、最近キャプチャしたリクエストの次の箇所にペイロードを注入してテストします。
- クエリパラメーター。
- フォームボディのパラメーター。
- JSON の値。
- パスのセグメント。
- 有効にした場合は、選択したヘッダー。
アクティブスキャンの前に診断対象範囲を設定し、通信と結果を対象に絞ってください。
推奨するワークフロー:
- 診断対象範囲を定義して有効にします。
- 対象の代表的な通信をキャプチャします。
- パッシブ分析から始めます。
- すべてアクティブスキャンを使う前に、選択したリクエストでアクティブスキャンを実行します。
- 指摘事項で検証リクエストとレスポンスの証拠を確認します。
- 生のスキャナー出力を報告するのではなく、誤検知を除去します。
証拠の品質
質の高いスキャナーの指摘事項は、次の問いに答えられる必要があります。
- どのパラメーターや入力をテストしたか。
- どのペイロードを使用したか。
- レスポンスの何が変化したか。
- その挙動はベースラインのレスポンスにはなかったか。
- 問題は再現可能か。
- Ogma に関連付けた証拠があるか。
証拠が不確かな場合は確信度を下げるか、確認できるまで結果をメモとして保持してください。