メインコンテンツまでスキップ

ブラックボックス診断

概要

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

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

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

診断を開始する前に、組織認証あるいはブラックボックス診断対象の所有権証明が必要になります。詳細は「診断前の組織認証あるいは所有権証明」を参照ください。

診断の開始方法

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

診断開始の UI

既存の診断の設定を引き継ぐ

過去の診断と同じ設定で新しい診断を実行したい場合は、設定を最初から入力し直す代わりに、既存の診断の設定(診断名・対象 URL・認証情報など)を引き継いで作成することが可能です。以下の手順で操作してください。

  1. 診断一覧画面の右上にある「診断を作成」ボタンを押す
  2. 表示されるダイアログで「既存の診断から作成」を選択する
  3. 一覧から設定を引き継ぎたい診断を選択する

選択した診断の設定があらかじめ入力された状態で作成画面が開きます。内容を確認・調整してから診断を開始してください。

本機能は、実行に失敗した診断について、同じ設定のもとで診断をやり直す場合にもご利用いただけます。

基本設定

設定画面の主な項目は以下のとおりです。

  • 「診断名」:この診断を識別するための名前を入力する
  • 「レポート言語」:診断レポートの言語を選択する(英語または日本語)
  • 「診断手法」:「ブラックボックス診断」を選択する

診断対象の種類

「診断対象の種類」では、診断対象のアプリケーションの形態を以下の 2 つから選択できます。

  • Webアプリケーション」:Web ブラウザを用いて操作するアプリケーション
  • API」:画面を持たない API

「API」を選択した場合は、Web ブラウザによるクロールの代わりに、添付されたスキーマファイルをもとに診断対象のエンドポイントを洗い出します。設定項目の違いについては API 診断 を参照してください。

診断タイプ

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

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

クレジット上限

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

Web アプリケーション設定

Web アプリケーション関連の項目は以下のとおりです。

  • 「クロールを開始する URL」:クロールの起点となるアプリケーションの URL を入力する
  • 「認証情報」:アプリケーションにログインするための認証情報を設定する
  • 「スコープ内 URL」「スコープ外 URL」:クロールの対象範囲を絞り込んだり除外したりする(詳細は スコープ設定 を参照)
info

Takumi は診断中に新たなアカウントを作成せず、事前に設定された認証情報のみを使用してログインします。対応している認証方式は以下のとおりです。

  • ID / パスワードによる認証
  • 事前に共有されるシークレットコードを活用した TOTP(時間ベースのワンタイムパスワード)認証

SMS やメールへのコード送信など、アウトオブバンド通信が必要な認証方式には現在対応しておりません。

スコープ設定

Takumi は入力された URL を起点にクロールし、既定ではそれらの URL のドメイン全体をスコープとして扱います。アプリケーションの一部だけを診断したい場合は、以下の 2 つの任意設定でクロール対象を絞り込んだり除外したりできます。

スコープ内 URL は、クロール結果に含める範囲を絞り込むための設定です。指定した URL の形式によって、範囲の限定のされ方が異なります。

  • パス付きの URL(例: https://app.example/admin):そのパス以下に限定する
  • パスなしの URL(例: https://app.example):そのホストのみに限定する
  • 未指定:クロールを開始する URL のドメイン全体を対象とする

スコープ外 URL は、クロール結果から除外する URL を指定するための設定です。スコープ内 URL と同様に、指定した URL の形式によって除外される範囲が異なります。

  • パス付きの URL(例: https://app.example/admin/logout):そのパス以下を除外する
  • パスなしの URL(例: https://app.example):そのホスト全体を除外する

なお、スコープ外 URL はスコープ内 URL よりも常に優先されます。クロールを開始する URL やスコープ内 URL で範囲に含まれていても、スコープ外 URL に一致する URL はクロール結果から除外されます。

info

スコープ設定は、クロールで発見した URL を診断対象(クロール結果)に含めるかどうかを判定するために使われます。そのため、スコープ外の URL やクロール結果に含まれていない URL であっても、クロールや診断の過程で Takumi が実際にアクセスすること自体はあり得ます。スコープ設定は、こうしたアクセスを完全に遮断するものではない点にご注意ください。

API 診断

「診断対象の種類」で「API」を選択すると、画面を持たない API を診断できます。Takumi は Web ブラウザによるクロールを行わず、添付されたスキーマファイルをもとに診断対象のエンドポイントを洗い出します。エンドポイントの洗い出し以降の診断の流れは、Web アプリケーションの場合と同様です。

設定項目は、Web アプリケーションの場合と以下の点で異なります。

  • APIのルートURL」:診断対象の API のルート URL を 1 つだけ入力する
  • APIのスキーマファイル」:API の仕様を定義したスキーマファイル(OpenAPI Spec、GraphQL スキーマなど)を 1 件以上添付する
  • 認証情報」:API に認証が存在する場合、ID / パスワード等と合わせて、詳細な認証の手順(トークンの取得方法や設定するヘッダーなど)を「認証手順」欄に記載する
info

API 診断では、追加クロールは利用できません。診断対象のエンドポイントを追加したい場合は、クロール結果の手動編集を利用してください。

クロール結果の確認

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

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

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

診断の設定

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

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

追加クロール

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

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

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

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

info

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

クロール結果の手動編集

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

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

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

診断の設定

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

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

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

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

診断結果の確認

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

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

診断を完了させる

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

診断結果を確認する

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

診断結果の UI

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

診断結果の UI

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

診断結果の UI

PDF レポートのエクスポート

診断レポートを PDF としてダウンロードできます。診断レポートページの 「PDFレポートを発行」 ボタンから、表紙の言語(英語または日本語)を選んで発行します。発行が完了すると、ログイン中のアカウントに紐づいたメールアドレスに対して、ダウンロードリンクが送付されます。

ダウンロードリンクの有効期限は 15 分ですが、再度ダウンロードボタンをクリックすることで新しいリンクを取得できます。発行した PDF は 30 日後に削除されるため、必要に応じて保存してください。

再診断の開始方法

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

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

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

再診断の UI

診断データと認証情報の取り扱い

診断データ(設定した認証情報を含む診断設定と、クロール結果・実行メッセージ・レポートなどの実行結果)は、診断を作成した組織に所属し、かつ以下のいずれかのロールを持つユーザーのみが閲覧できます。

  • オーナー(organization/owner
  • Takumi管理者(organization/takumi_manager
  • Takumi利用者(organization/takumi_user

また、診断の削除は、このうち「オーナー」または「Takumi管理者」のロールを持つユーザーのみが実行できます。

設定した認証情報は、クロールや診断の際に対象アプリケーションへログインするため、また再診断の際に設定を引き継ぐために、診断設定の一部として保持されます。保持された認証情報は、診断設定の画面から参照できるほか、クロールや診断の実行状況を示すメッセージなどにマスキングされずに表示されることがあります。

診断対象へのログインには、診断用に用意したアカウントを利用することを推奨します。

診断の削除

診断を削除する際は、サイドバーの「診断」から診断一覧を開き、対象の診断の行の右側にあるメニューアイコンをクリックして「削除」を選択してください。表示される確認ダイアログで delete と入力し、「削除」ボタンをクリックすると削除が実行されます。

なお、診断を削除すると、設定した認証情報を含む診断設定や、クロール結果・レポートなどの関連データもあわせて削除されます。削除は元に戻せない操作であり、削除した診断やそのデータを後から復元することはできません。

診断観点

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

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

各観点はさらに具体的な検査項目に細分化されています。 例えば「インジェクション」では SQL インジェクションや OS コマンドインジェクション、「認可制御の不備」では他ユーザーのデータへの不正アクセスや権限昇格、「ロジックの不備」ではレースコンディションやマスアサインメントなど、攻撃手法ごとに個別の検査が行われます(ここに挙げたものは一例であり、実際にはさらに多くの検査項目が含まれます)。

また、これらの観点全体は、GMO Flatt Security が手動診断サービスとして提供している Web アプリケーション診断の診断項目をほぼ網羅する形で設計されています。 専門のセキュリティエンジニアが実施する診断と同等の観点を、Takumi が自動で検査します。

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

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

クレジット消費に関して

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

おおよその目安として、ある「機能・観点」の組み合わせ(設定画面での特定のセルに該当)に対して、5〜10 クレジット程度が消費されます。ただし、実際の消費量は対象の機能の規模や、診断中に Takumi が発見した手がかりの数等によっても変動するため、上記の範囲に収まらない場合もあります。

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

なお、診断の実行中は、指定したクレジット上限分があらかじめ残高から確保されるため、表示されるクレジット残高は確保分を差し引いた値となります。詳細は 診断実行中のクレジット確保 を参照してください。

info

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

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