検出事項 (Open Source)

組織 → アセット → エンゲージメント → テスト → 検出事項

概要

検出事項は、個々の脆弱性が追跡・管理される製品階層の最下層を表すものであり、DefectDojoがセキュリティツールの報告・修復プロセスを標準化し、導くための主要な手段です。脆弱性がSonarQube、Acunetix、あるいはチーム独自のツールのいずれで報告されたものであっても、検出事項によってすべての脆弱性を同じ方法で管理できます。

検出事項の例には、以下のようなものがあります。

  • HttpOnly属性が設定されていないCookie
  • バージョンが古い(PHP)
  • 帯域外コード評価(PHP)
  • バージョンが古い(MySQL)
  • バックアップソースコードの検出
  • ブラインドクロスサイトスクリプティング

脆弱性データを保存し、修復のためのフレームワークを提供することに加えて、DefectDojoは以下の方法で検出事項を強化します。

  • 悪用可能性を示す関連のEPSSスコアを検出事項に自動的に追加する
  • セキュリティツールの深刻度指標を各検出事項の深刻度スコアに自動的に変換し、アセットのSLA設定に応じて検出事項にSLAを付与する。SLA設定の詳細については、こちらをクリックしてください。

全体として、検出事項は製品階層と連携して機能するように設計されており、取り組みを標準化し、各アセットに一貫した方法を適用します。

検出事項へのアクセス

検出事項にはサイドバーからアクセスできます。サブメニューからは、オープンおよびクローズされた検出事項、(オープン/クローズの状態にかかわらない)すべての検出事項、リスク受容済みの検出事項、さらに検出事項テンプレートにアクセスできます。個々の検出事項は、それを含むテスト内からもアクセスできます。

image

権限

すべての検出事項はテストに属しており、これによりDefectDojoは、その脆弱性を最初に特定したスキャンまたは評価がどれであるかを保持できます。

検出事項はテストに属しているため、検出事項へのアクセスは、そのテストを含むアセットに対するユーザーのアクセス権によって決まります。テストは独自のアクセス制御リストを持ちません。

検出事項ビュー

検出事項ビューには、検出事項のステータスを一目で把握できるよう、さまざまなテーブルが含まれています。具体的には以下のとおりです。

  • 概要
    • ID:その検出事項の一意なID番号。
    • 深刻度:自動的に適用される、その検出事項の深刻度評価。
      • 前述のとおり、DefectDojoはセキュリティツールの深刻度指標を各検出事項の深刻度スコアに自動的に変換し、アセットのSLA設定に応じて検出事項にSLAを付与します。
    • SLA:検出事項が解決されるべき目標期限。
    • ステータス:検出事項のステータス(アクティブ、検証済み、誤検知、重複、対象外、不具合レビュー中など)。
    • 検出事項の種類:検出事項が静的(SAST)か動的(DAST)かを示します。
    • 発見日:検出事項が発見された日付。
    • CWE:検出事項のCWE分類。
    • 脆弱性ID:検出事項に関連するセキュリティアドバイザリ内の脆弱性ID(CVEなど)。
    • 検出元:その検出事項を明らかにしたツール。
  • 類似の検出事項:完全な重複ではないものの、脆弱性ID、CWE、file_path、行番号などの値が類似している、同一アセット内の他の検出事項。
  • インポート履歴:いずれかのテストにおいて、この検出事項を作成/クローズ/再アクティブ化したインポート/再インポートの一覧。
  • 脆弱なエンドポイント/システム:検出事項によって脆弱であることが判明したエンドポイント/システム。
  • 説明:検出事項の説明(検出事項の種類に応じて自動的に追加される場合と、手動で作成される場合があります)。
  • 緩和策:緩和のために推奨される手順。
  • 影響:検出事項を未解決のまま放置した場合に想定される影響。
  • 再現手順:検出事項を再現するための手順。
  • 深刻度の根拠:特定の深刻度評価が検出事項に紐づけられた理由についての記述。
  • 参考情報:サードパーティのスキャンツールによる検出事項固有の説明を相互参照するためのURL。例えば、参考情報は検出事項カタログ内の該当エントリへのリンクや、単一のアドバイザリURLである場合があります。
  • メモ:検出事項に関連してユーザーが残したメモ。メモを非公開に設定すると、選択した検出事項を含む生成レポートには含まれなくなります。

検出事項のデータ

検出事項には、以下のメタデータが必須です。 タイトル 日付 深刻度 説明

検出事項ビューのテーブルに対応するメタデータに加えて、以下の任意のメタデータフィールドがあります。

  • グループ:選択した検出事項を含む検出事項グループ。
  • CVSS3/CVSS4ベクターとスコア:選択した検出事項のCVSS3およびCVSS4のベクターとスコア。
  • リクエストとレスポンスのペア:クライアントから送信されたメッセージと、それに対するサーバーの応答のコピー。
  • 追加するエンドポイント:選択した検出事項の影響を受ける可能性があるものの、前述のシステム/エンドポイントの一覧には反映されていない脆弱なエンドポイント。
  • EPSSスコアとパーセンタイル:CVEのEPSSスコアとパーセンタイル。
  • KEV追加日:検出事項がKEVカタログに追加された日付。
  • 修正の有無とバージョン:脆弱性に対する修正が利用可能かどうか、また修正が実装された影響コンポーネントのバージョンを定義します。
  • 不具合レビューを依頼したユーザー:該当する不具合についてレビューを依頼したユーザーを記録します。
  • 行番号:攻撃ベクターのソース内での行番号。
  • ファイルパス:不具合を含むことが特定されたファイル。
  • コンポーネント名とバージョン:影響を受けるコンポーネントの名前とバージョン。
  • ツールからの一意のID:提供元ツールによる脆弱性の技術ID。
  • ツールからの脆弱性ID:提供元ツールによる一意ではない技術ID。
  • SASTのソースオブジェクト、行番号、ファイルパス:攻撃ベクターのソースオブジェクト、行番号、ファイルパス。
  • SASTのシンクオブジェクト:攻撃ベクターのシンクオブジェクト。
  • 発生回数:スキャナーによって複数の脆弱性が検出・集約された際の、提供元ツールにおける発生回数。
  • 公開日:検出事項が公開された日付。
  • サービス:選択した検出事項の影響を受ける、連携済みのサービス(アセット内の自己完結的な機能単位)。この項目に値が設定されている場合、重複排除のマッチングに使用されます(つまり、サービスの項目が同一の検出事項は重複排除されます)。
  • 修復予定日とバージョン:検出事項の修復が予定されている日付、および修正が実装される予定の影響コンポーネントのバージョン。
  • 修正の工数:検出事項の修正に要する工数のレベル(低、中、高など)。
  • タグ:検出事項に追加されたタグ。

利用可能なメタデータの詳細は、検出事項を明らかにしたパーサー/スキャナーによって異なります。タイトルや深刻度といった基本情報のみを提供するものもあれば、CVSSベクター、脆弱なコンポーネント、エンドポイント、リクエスト/レスポンスのペア、その他スキャナー固有のメタデータを含むものもあります。

これらのメタデータにより、セキュリティプログラム全体にわたるフィルタリング、レポート作成、優先順位付けが向上し、長期的な追跡とトレンド分析が可能になります。詳細およびメタデータの説明はこちらを参照してください。

重複排除

DefectDojoには、同一の根本的な脆弱性を表す検出事項を特定・管理するための重複排除機能が備わっています。1つまたは複数のツールからスキャン結果がインポートされると、DefectDojoは設定可能なマッチングロジックを使用して、同一の脆弱性を表す検出事項を特定します。

重複排除により、同一または異なるスキャナーによって同じ脆弱性が繰り返し検出された場合でも、それが複数回表示されることを防ぎ、修復履歴が単一の検出事項に紐づいたまま維持されます。

重複排除の詳細についてはこちらを参照してください。

再インポート

DefectDojoの再インポート機能により、新しいスキャン結果がインポートされる際に検出事項を更新できます。スキャンが再インポートされると、DefectDojoは受信した結果を既存の検出事項と比較し、まったく新しいレコードを作成する代わりに、一致するレコードを更新します。これにより、ステータスの変更、修復履歴、コメント、所有者情報といった重要なコンテキストが保持され、複数のテストサイクルにわたる検出事項のライフサイクルの継続的な記録が提供されます。

再インポート機能の詳細についてはこちらを参照してください。

リスク受容

リスク受容は、検出事項に適用できる特別なステータスであり、直ちに修復することなくその存在を認識するという判断を、正式に文書化し運用に反映させるためのものです。

リスク受容の詳細についてはこちらを参照してください。

ステータス

DefectDojoで作成された各検出事項にはステータスがあり、関連する情報を伝えるとともに、チームが問題解決の進捗を追跡するのに役立ちます。

ステータスの詳細についてはこちらを参照してください。

検出事項の操作

検出事項の作成

ほとんどの検出事項はスキャンのインポートや連携を通じて自動的に生成されますが、DefectDojoでは検出事項を手動で作成することもサポートしています。手動での検出事項は、ペネトレーションテスト、アーキテクチャレビュー、コンプライアンス評価、バグバウンティプログラム、コンサルタントによるエンゲージメントなど、スキャナー出力を伴わない活動によって特定された脆弱性やセキュリティ上の懸念事項を追跡するのに役立ちます。

検出事項を手動で作成するには:

  1. 検出事項を手動で追加したいテストに移動し、+(プラス)記号をクリックしてから、新規検出事項をクリックします。

image

  1. これにより新規検出事項フォームが開くので、検出事項に関する必要な情報を入力します。

  2. さらに検出事項を手動で追加する場合は別の検出事項を追加を、手動での検出事項作成プロセスを終了する場合は完了を選択します。

作成された検出事項は、元のテストに含まれる検出事項の一覧に表示されるようになります。

重要な点として、トップバーから検出事項を手動で追加すると、現在表示中のテストに追加されるのではなく、新しい検出事項を格納するためのアドホックなエンゲージメントとテストが自動的に作成されます(下の画像を参照)。これは、トップバーがアセット全体に関連するものであるためです。特定の既存のテストに検出事項を手動で追加したい場合は、上記の手順1~3のとおり、そのテスト自体の中から行うことを推奨します。

image

検出事項の編集

⋮ケバブメニュー

検出事項の横にある⋮ケバブメニューには、以下の機能があります。

  • 表示:検出事項を開いて表示します。
  • 編集:検出事項を編集します。
  • コピー:検出事項のコピーを作成します。コピーは、対応するエンゲージメント内に含まれる任意のテストに保存できます。
  • ピアレビューを依頼:ピアレビューのプロセスを開始し、検出事項のステータスを「レビュー中」に変更します。ピアレビューの詳細についてはこちらを参照してください。
  • 検出事項にタッチ:検出事項の履歴に、その検出事項とのやり取りを記録します。
  • 検出事項をテンプレート化:選択した検出事項をもとに、検出事項テンプレートを自動的に作成します。
  • 検出事項にテンプレートを適用:既存の検出事項テンプレートを検出事項に適用できるようにします。
  • 検出事項をクローズ:検出事項をクローズするプロセスを開始します。
  • リスク受容を追加:リスク受容のプロセスを開始します。詳細についてはこちらを参照してください。
  • 履歴を表示:選択した検出事項の履歴を表示します。
  • 削除:選択した検出事項を削除します。

検出事項へのファイルの添付

検出事項には、視覚的なコンテキストを提供するためにファイルを添付できます。例えば、脆弱性が実際に動作している様子のスクリーンショットや、概念実証(PoC)の画像などです。

サポートされているファイルの種類は以下のとおりです。

.txt  .pdf  .json  .xml  .csv  .yml  .png  .jpeg
.sarif  .xlsx  .doc  .html  .js  .nessus  .zip  .fpr

検出事項にファイルを添付するには:

  1. ファイルを添付したい検出事項を開きます。
  2. アクションメニュー(検出事項の右上にある☰ボタン)を開き、「ファイルの管理」をクリックします。

image

  1. ファイル追加ページで、ファイルのタイトルを入力し、コンピューターからファイルを選択します。一度に最大3件のファイルを追加できます。さらに追加したい場合は、保存してから再度この画面に戻ってください。

image

  1. 保存をクリックします。

ファイルは、検出事項のファイルパネルに一覧表示されます。画像ファイルはサムネイルとして表示されます。

image

検出事項の一括編集

検出事項は、サイドバーからアクセスできるすべての検出事項のテーブルや、特定のテスト内の検出事項のテーブルなど、検出事項の一覧から一括編集できます。

検出事項の一括編集方法の詳細についてはこちらを参照してください。

検出事項のクローズ

検出事項に対する作業が完了したら、検出事項の⋮ケバブメニューまたは☰アクションメニュー内の検出事項をクローズをクリックすることで、手動でクローズできます。また、以前記録された検出事項が含まれていないスキャンがDefectDojoに再インポートされた場合、その以前記録された検出事項は自動的にクローズされます。

検出事項をクローズさせたくない場合は、再インポート時にこの動作を無効にできます。

  • UIを使用している場合は、「古い検出事項をクローズ」チェックボックスのチェックを外します
  • APIを使用している場合は、close_old_findingsをFalseに設定します ​

検出事項の削除

検出事項の削除は、検出事項の⋮ケバブメニューまたは☰アクションメニューから行えます。この操作は元に戻せません。

監査の観点から、修復済みの検出事項は削除するのではなく、クローズすることを推奨します。

検出事項グループ

検出事項グループを使用すると、トリアージ、レポート作成、修復対応の調整のために、複数の関連する検出事項を単一の論理的な単位として扱うことができます。

例えば、あるスキャンで異なるエンドポイントにまたがる10件のSQLインジェクションの検出事項が発生することがあります。それぞれを個別に管理する代わりに、それらをより広範なSQLインジェクションの問題を表す単一の検出事項グループにまとめることができます。

検出事項グループは、個々の検出事項を置き換えるものではありません。各検出事項は、それぞれの深刻度、ステータス、メタデータ、コメント、修復履歴を保持したまま存在し続けます。検出事項グループは、それに含まれる検出事項の上に、追加の整理レイヤーを提供するに過ぎません。

検出事項グループへのアクセス

検出事項グループにはサイドバーからアクセスできます。サブメニューからは、オープンおよびクローズされた検出事項グループ、ならびに(オープンの状態にかかわらない)すべての検出事項グループにアクセスできます。

image

検出事項グループの作成

検出事項グループは、手動または自動で作成できます。

重要な点として、検出事項グループは単一のテストに含まれる検出事項からのみ作成できます。異なるテスト、エンゲージメント、または製品に属する検出事項を、同じ検出事項グループに追加することはできません。

手動での検出事項グループ

検出事項グループの操作を手動で行うには:

  1. テスト内の検出事項一覧に移動します。
  2. 対応するチェックボックスをクリックして、検出事項グループに追加したい検出事項を選択します。
  3. グループチェックボックスをクリックします。
  4. 実行したい対応するアクションをクリックします。
    • 作成:選択した検出事項を含む検出事項グループを作成します。
    • 追加:選択した検出事項を既存の検出事項グループに追加します。
    • グループから削除:選択した検出事項を、これまで所属していたすべての検出事項グループから削除します。
    • グループ化:選択したオプション(コンポーネント名、ファイルパス、検出事項のタイトルなど)に基づいて、選択した検出事項をグループ化します。
  5. 送信をクリックします。

image

なお、すべての検出事項の一覧から検出事項を選択した場合に実行できるアクションは、選択した検出事項をあらゆる検出事項グループから削除することのみです。これは、前述のとおり、検出事項グループが単一のテストに含まれる検出事項からのみ作成できるためです。

自動での検出事項グループ

スキャンをインポートする際、「グループ化」機能を使用すると、選択したグループ化方法に基づいて検出事項グループを自動的に作成できます。これは、スキャナーがまとめて管理すべき多数の関連する検出事項を生成する場合に役立ちます。

隣接するすべての検出事項に検出事項グループを作成するチェックボックスには、以下の2つの機能があります。

  • チェックあり:インポートされたすべての検出事項について、たとえそのグループのメンバーがその検出事項1件のみであっても、検出事項グループを作成します。
  • チェックなし:実際にグループ化すべき検出事項が複数存在する場合にのみ、検出事項グループを作成します。

image

インポート時に「グループ化」のドロップダウンメニューからオプションが選択されていない場合、グループ化は行われません。

グループ化の基準(コンポーネント名や脆弱性IDなど)が検出事項に設定されていない場合、その検出事項に対してグループが作成されたり、既存の検出事項グループに追加されたりすることはありません。

グループ化されていない10件の検出事項を明らかにするスキャンがインポートされた後、同じスキャンが再インポートされて検出事項がグループ化された場合、最初の10件の検出事項はその検出事項グループには追加されません(つまり、検出事項グループには再インポート時の10件の検出事項のみが含まれ、最初およびそれに続くインポート時の10件は含まれません)。

検出事項テンプレート

検出事項テンプレートを使用すると、ユーザーはよく報告される脆弱性やセキュリティ上の問題について、再利用可能なテンプレートを作成できます。テンプレートには、タイトル、説明、影響、再現手順、緩和策、参考情報、その他の検出事項のメタデータなど、標準化された情報を含めることができます。

検出事項テンプレートは、ユーザーが手動での検出事項の作成を繰り返し行う必要があり、その都度同じ補足情報を再入力することを避けたい場合に特に役立ちます。

検出事項テンプレートへのアクセス

検出事項テンプレートは、サイドバーの検出事項サブメニュー内にあります。

image

検出事項テンプレートの作成

検出事項テンプレートは、検出事項テンプレートビューの右上にある+(プラス)ボタンをクリックすることで作成できます。

続いて表示されるページには、検出事項テンプレートが使用された際に検出事項に適用されるメタデータの概要が表示されます。

また、検出事項の⋮ケバブメニュー内の検出事項をテンプレート化をクリックすることで、既存の検出事項を新しい検出事項テンプレートの基とすることもできます。

検出事項テンプレートの適用

検出事項テンプレートは、選択した検出事項の⋮ケバブメニュー内にある検出事項にテンプレートを適用ボタンをクリックすることで、検出事項に適用できます。

image

続いて表示されるページでは、該当する検出事項に適用するテンプレートを選択し、その後、検出事項のメタデータをそのまま維持するか、テンプレートのメタデータで置き換えるか、あるいは両者を組み合わせるかを選択できます。

レポート作成

DefectDojoのレポートビルダーを使用すると、一連のコンテンツウィジェットからカスタムレポートを作成し、実行して結果をエクスポートできます(例えばPDFとして印刷するなど)。カスタムレポートは、外部の読み手と共有したい検出事項やエンドポイントを要約でき、ブランディングや定型文を含めることもできます。

DefectDojoのレポートビルダーの詳細についてはこちらを参照してください。

検出事項のエクスポート

検出事項の一覧またはエンゲージメントの一覧を表示するページには、右上のドロップダウンメニューにCSVおよびExcelのエクスポートオプションがあります。

任意の検出事項一覧ページで、右上隅のドロップダウンメニューを開くと、表示されている検出事項をCSVまたはExcelファイルとしてエクスポートできます。エンゲージメントの一覧も、エンゲージメント一覧ページの同様のドロップダウンメニューを使用して、CSVまたはExcelとしてエクスポートできます。