# ブラックボックス診断

## 概要

Takumi ブラックボックス診断機能は、アプリケーションのURL・認証情報を受け取り、当該アプリケーションを擬似的に攻撃し、診断結果を Web 上でレポートとして出力する機能です。

Shisho Cloud byGMO の Web 画面から利用できます。

## クレジット消費に関して {#credits}

利用にはクレジットが必要です。

診断開始時に **クレジット上限** を設定する必要があり、スキャンはその範囲内で実行されます。スキャン中にクレジット上限に達した場合、実行中のテストが完了した後にスキャンが停止します。

:::info
実際の消費クレジットが設定した上限を超過した場合でも、超過分のクレジットは請求されません。

たとえば、設定したクレジット上限が `10` であった場合、実際に消費されたクレジットが `11` であっても、最終的に計上される消費クレジットは `10` になります。
:::

## 組織または診断対象の所有権証明

診断を開始する前に、組織認証あるいはブラックボックス診断対象の所有権証明が必要になります。詳細は「[診断前の組織認証あるいは所有権証明](/docs/ja/t/concepts/assessment-authentication.md)」を参照ください。

## 診断の開始方法

サイドバーの「診断」をクリックすると表示される画面において、画面右上の「診断を作成」ボタンを押すと診断が開始できます。

![診断開始の UI](/docs/ja/_md-assets/d853a2d4c2-ui-simple.png)

### 基本設定

- 「診断名」には、この診断を識別するための名前を入力します。
- 「レポート言語」には、診断レポートの言語を選択します（英語または日本語）。
- 「診断対象」は「WebアプリのURL」を選択します。

### 診断タイプ

診断開始時に、以下の 2 つのモードから選択できます。

- 「**全体を診断**」モード: 対象アプリケーションのクローリング・初回スキャンが一気通貫で行われ、完了後に「診断再開待ち」状態で停止します。以降の手順は [診断結果の確認と追加スキャン](#診断結果の確認と追加スキャン) を確認してください。
- 「**一部だけ診断**」モード: クローリング終了時点で Takumi が停止します。その後、診断したい機能・観点の優先度およびスキャンに対するクレジット上限を設定いただいてから、診断を再開します。診断範囲を細かくコントロールしたい方におすすめです。

### クレジット上限

クレジット上限は、クロールおよび診断のそれぞれについて設定することが可能です（「一部だけ診断」モードの場合はクロールのみ）。Takumi は指定されたクレジット上限の範囲内でクロールおよび診断を実施します。

### Web アプリケーション設定

- 「アプリケーションの URL」には、診断対象のアプリケーションの URL を入力します。
- 「認証情報」には、アプリケーションにログインするための認証情報を設定します。

## クロール結果の確認

### 優先度とクレジット上限の設定

「一部だけ診断」モードを選択した場合、クロール完了後に診断が一時停止します。対象の診断のページを開くと、検出された機能と診断観点の一覧がマトリクス形式で表示されます。

この画面において、スキャンに使用するクレジットの上限値と診断の優先度を設定することで、診断を開始することができます。

![診断の設定](/docs/ja/_md-assets/0d6684761b-setting.png)

機能と観点の組み合わせごとに「おまかせ・高・中・低・なし」の優先度を設定でき、優先度の高いものから順に診断されます。「おまかせ」を選択した場合は、Takumi がリスク分析に基づいて優先度を自動的に決定します。

優先度とクレジット上限を設定したら、「診断を開始」ボタンをクリックして診断を開始します。

### 追加クロール

「クロール済」状態の診断では、メニューから「追加クロール」を選択することで、追加のクローリングを実行できます。
初回のクローリングで検出されなかったエンドポイントを発見したい場合に有用です。

追加クロールでは、以下の設定が可能です。

- **クレジット上限**: 追加クロールで消費するクレジットの上限値
- **追加クロールの指示**: クロール対象を絞り込むための自由記述の指示（例: 特定のAPIパスに注目してクロールする等）

追加クロールが完了すると、マトリクスに新たに検出されたエンドポイントが追加されます。

:::info
追加クロールを実行しても、必ずしも新しいエンドポイントが検出されるとは限りません。新しいエンドポイントが見つからなかった場合でも、クレジットは消費されます。
:::

### クロール結果の手動編集

「クロール済」状態の診断のページにアクセスし、診断優先度を設定するマトリクスの左下に表示される「クロール結果を編集」ボタンを押すことで、クロール結果を手動で編集する機能を利用することができます。

当該ページでは、以下の操作が可能です。

- 検出された機能にエンドポイントを追加する
- 検出された機能に含まれるエンドポイントを削除する
- 新たに機能、および、その機能に含まれるエンドポイントを追加する

![診断の設定](/docs/ja/_md-assets/c592c18497-ui-manual-edit.png)

## 診断結果の確認と追加スキャン

スキャン中にクレジット上限に達するか、選択したすべての組み合わせの診断が完了すると、診断は「診断再開待ち」状態で停止します。

「診断再開待ち」状態の診断を開くと、マトリクス画面が再度表示されます。各セルの状態は以下のように表示されます。

| 状態           | 説明                                                                   |
| -------------- | ---------------------------------------------------------------------- |
| 診断済み       | 診断が完了した組み合わせに表示されます                                 |
| スキップ       | 診断の必要がないと判定されたためスキップされた組み合わせに表示されます |
| 優先度メニュー | まだ診断が完了していない組み合わせに表示されます                       |

![診断結果の確認](/docs/ja/_md-assets/3258b83c54-pending.png)

この画面から、以下の操作が可能です。

- **中間レポートのプレビュー**: 「レポートをプレビュー」をクリックすると、現時点のレポートを別タブで確認できます。診断を継続するか完了するかの判断材料として活用することができます
- **追加スキャンの実行**: クレジット上限および未診断の組み合わせに対する優先度を設定し、「診断を開始」をクリックして追加のスキャンを実行できます
- **診断の完了**: 追加スキャンが不要な場合、「診断を完了する」ボタンをクリックして診断を完了できます

### 診断を完了させる

「診断を完了する」をクリックすると、診断結果のレポートが表示されるページに遷移します。

### 診断結果を確認する

診断レポートは、およそ以下の画面のように、Web 上で閲覧いただけます。

![診断結果の UI](/docs/ja/_md-assets/f0bfa90a43-ui-result-1.png)

フォーマットは、およそセキュリティベンダに診断を依頼した際のアウトプットに近いものです。

![診断結果の UI](/docs/ja/_md-assets/35492e79bc-ui-result-2.png)

診断結果の各項目では、どの機能を、どのような観点で診断した結果、どのような深刻度・リスクの脆弱性があったか、が説明されています。

![診断結果の UI](/docs/ja/_md-assets/495354be92-ui-result-3.png)

## 再診断の開始方法

完了した診断のページから「再診断」ボタンをクリックすると、以下の 2 つのモードから選択できます。

- **全体の再診断**: アプリケーション全体に対してセキュリティ診断を再実行します。元の診断の設定（URL、認証情報など）を引き継いだ新しい診断が作成され、設定を確認・変更した上で開始できます。
- **部分機能・観点のみ再診断**: 前回の診断で脆弱性が検出された機能・観点に絞って再診断を実施します。修正後の確認に適しています。

いずれのモードでも、診断開始前に設定画面が表示されるため、事前に診断対象やクレジット上限等を調整することが可能です。

![再診断の UI](/docs/ja/_md-assets/01b337d6ae-ui-partial.png)

## 診断観点

Takumi はクロールで検出した各機能に対して、以下のような観点でレビューします。

- インジェクション
- XSS
- CSRF
- SSRF
- ファイル操作不備
- オープンリダイレクト
- 認証の不備
- 認可制御の不備
- ロジックの不備
- クリックジャッキング
- CORS設定不備

各項目の中には、細かな診断観点が様々含まれています。
特色は、**特に（ビジネス）ロジックの脆弱性が診断対象に含まれること** です。
AI エージェントを活用した弊社技術により、アプリケーション仕様に基づいた診断が可能となっています。

細部が気になる場合は、開発者とのお打ち合わせも可能です。是非お問い合わせください。

## 精度評価

GMO Flatt Securityが独自に脆弱性を埋め込んだデモアプリケーションを対象に、ブラックボックス診断機能単体による診断を行った結果、**約20時間のスキャン** を通して **検出率は48%**、**誤検知（偽陽性）率は33.3%** という結果になりました。

なお、デモアプリケーションには、ソースコードを参照しないと発見が本質的に困難である脆弱性も含まれており、そのようなものを除いた場合の **検出率は70%** でした。
