# 検出事項の評価の方法

Lockpickが重大度をどう決めるか、確定した検出事項に何が必要か、それぞれの検出事項がどれだけ確かか、何を先に直すべきか、再チェックで何を証明できるかを説明します。

Lockpickのレポートにある検出事項には、すべて重大度、判定、確信度が付いています。それぞれ別の問いに答えます。重大度は、どれほど深刻かを示します。判定は、すべてを確認できたかを示します。確信度は、証拠がどれだけ強いかを示します。PulseとDeepは同じルールを使います。

## 重大度

重大度は、アプリ、ドキュメント、APIで同じ1つの尺度を使います。深刻な順に、**Critical**、**High**、**Medium**、**Low**、**Info** です。現在、PulseとDeepはHighまでの検出事項を評価します。Criticalは Monitor のアドバイザリに使われます。重大度が公開されていない Monitor のアドバイザリは、**未評価** と表示されます。

検出事項は、スキャンで次のいずれかが示された場合に限り **high** と評価されます。

* **誰でも読めるデータ。** サインイン、Cookie、認証情報のないリクエストに対して、データが返されました。
* **ある顧客が別の顧客に到達する。** あるアカウントやテナントから、別のアカウントやテナントへデータや操作が及びます。
* **漏えいした認証情報やセッション。** シークレットキー、認証情報を含む設定ファイル、サインインしていない人に渡されたセッションです。

ドメインのアドレスを乗っ取れる場合も含まれます。そのアドレスが空いていて、取得できることを確認できた場合です。取得した人は、本物のドメインでページを配信し、ドメイン全体に設定されたCookieを受け取ります。

次のものは、それだけでは **high** と評価されることはありません。

* セキュリティヘッダー、Cookieのフラグ、Content Security Policyの不足
* TLSの設定と証明書の警告
* ソフトウェアのバージョンや技術情報の開示。アドバイザリに一致するライブラリのバージョンを含みます
* ディレクトリの一覧表示、スタックトレース、エラーページ
* オープンリダイレクト
* DMARCやSPFなどのメール認証の設定

これらも報告します。深刻度は Medium 以下です。実際の不足であり、閉じるのにコストがかからないからです。ほかに観測された証拠によって、より大きな筋書きが完成する場合は、単独の検出事項を重大度だけ引き上げるのではなく、レポートはそれを攻撃の連鎖として示します。

## 確定した検出事項に必要なもの

検出事項の種類ごとに、4つの部分からなる証明があります。

| 項目     | 答えること               |
| ------ | ------------------- |
| 起点     | 攻撃がどこから始まり、誰が始められるか |
| 最も近い防御 | 本来なら攻撃を止めていたはずの防御   |
| 到達先    | 攻撃者が実際に到達するもの       |
| 影響     | 到達した結果として起こること      |

公開されたSupabaseのテーブルの場合、起点は、クライアントのバンドルに意図的に含まれている匿名キーです。最も近い防御は、行レベルのセキュリティです。到達先は、サインインなしの読み取りで行が返されたことです。影響は、返された列に入っている内容です。

検出事項が **確定** となるのは、スキャンが4つの部分すべてを観測した場合だけです。ある部分が観測ではなく推定による場合、その検出事項は **要確認** となり、まだ確認できていない部分が示されます。定義された証明がない種類の検出事項は、確定することはありません。検出事項が **対象外** となるのは、その主張が当てはまらないという積極的な証拠を持つ場合だけです。証拠がないことだけでは十分ではありません。PulseとDeepは現在そのような証拠を記録しないため、それらの検出事項は、確定か要確認のどちらかです。

あなたが見る証明は、Lockpickがその種類の検出事項に対して書いたものです。シークレット、レスポンスの本文、スキャンの実行方法が引用されることはありません。

## どれだけ確かか

* **高。** サイトからのレスポンスに、その露出そのものが示されました。
* **中。** 公開記録や、コンテンツのパターンがそれを示しています。
* **低。** ヘッダー、バージョン、またはAPIが自身について述べている内容から推定されています。

同じことを示す2回目の読み取りがあれば、確信度は1段階上がります。2回目の読み取りでそれが示されなければ、確信度は1段階下がり、検出事項は要確認のままになります。

## 緊急度の評価方法

すべての検出事項は、いつ修正すべきかも4段階で示します。重大度は、どれだけ深刻になりうるかを示します。緊急度は、今の作業を止めるべきかどうかを示します。

* **今すぐ修正。** 今日中に手を止めて修正してください。顧客データ、アカウント、キーに届く状態です。漏れたキー、公開されたデータベースやAPI、パスワードのハッシュ、観測した攻撃チェーンが該当します。
* **今週中に修正。** 誰かが悪用できる可能性があります。そのほかの高の検出事項と、直接または被害者を介して悪用できる中の検出事項です。なりすましできるメールなどが該当します。
* **手が空いたときに。** 攻撃をしやすくしますが、それだけで攻撃になるものではありません。セキュリティヘッダーやCookie属性の不足などの強化不足と、低の検出事項です。
* **対応不要。** 知っておくとよい情報です。修正は不要です。

スキル、プラグイン、マーケットプレイス、MCP サーバーは、あなたが修正するコードではありません。インストールするかどうかを決める場面なので、同じ4段階をインストールについての言葉で示します。

* **まだインストールしない。** これがインストールを危険にしている点です。確認済みの重大な検出事項か、フックの中にある検出事項です。修正を待つか、別のものを選んでください。
* **インストール前に確認。** インストールする前に、この部分を読むか作者に確認してください。
* **知っておく価値あり。** 見送る理由ではありません。何をするのか知っておくと役に立ちます。
* **対応不要。** 確認することはありません。

検出事項が上部の判定より緊急に表示されることはありません。「リスクは見つかりませんでした」の場合、どの検出事項も最大で「知っておく価値あり」です。「注意してインストール」の場合は、最大で「インストール前に確認」です。リポジトリを「インストールしないでください」にする検出事項だけが「まだインストールしない」と表示されます。アプリのリポジトリは上の言葉、「今すぐ修正」から「対応不要」までを使います。

その横に、確かさを一言で示します。**確認済み**は、すべてを確認したか、2回目の読み取りでも確認できたことを意味します。**可能性大**は、1回確認できたか、一部がまだ未確認であることを意味します。**可能性あり**は、問題を示していますが確認できなかったことを意味します。

検出事項のグループは、最も緊急度の高いメンバーに合わせます。レポート上部のバッジは最も緊急度の高いカードを示すため、カードに今すぐ修正がある場合だけ今すぐ修正と表示されます。クイックチェック、Skill Check、メール、CLI、MCPツールも同じ言葉を使います。緊急度で評価やリストの順番が変わることはありません。

## 先に直すべきもの

レポートは、重大度のラベルではなく、攻撃者がどれだけ直接的に利用できるかによって、修正すべき順に並べます。

1. 攻撃者が単独で利用できる検出事項。確定したものを優先します
2. 被害者や次の段階を必要とする検出事項。たとえば、なりすましが可能なメールなどです
3. 攻撃者の仕事を楽にする、強化の不足

各グループの中では、確定したものを要確認のものより先に、より強い証拠を弱い証拠より先に、そして最後に重大度の高いものを並べます。

## 再チェックで何を証明できるか

**再チェック**は、新しいスキャンを以前のスキャンと比べます。**このレコードを再読み込み**は、公開DNSレコードを新しく読み直し、以前の検出事項と比べます。以前の検出事項は、次の3つの状態のいずれかになります。

* **修正済み。** 検出事項の裏にあったリソースまたはレコードを読み直したところ、検出事項は見られませんでした。
* **未解決。** 同じ検出事項が再び発生しました。
* **判定不能。** 新しい読み取りでは、検出事項の根拠となるものを読めなかったか、2つのスキャンを比べられませんでした。

チケットが閉じられたことや、タスクにチェックが入ったことを理由に、検出事項が修正済みとされることは決してありません。サイトから公開された鍵を削除しても、その鍵は無効になりません。提供元で鍵をローテーションしてください。