手作業による診断とは? 〜セキュリティ診断について理解を深めるその5〜
セキュリティ診断の手法の一つである「手作業による診断」は、サイト特性を見ないと検査できない箇所を、人の手により診断していきます。この方法によって、自動で診断を行う「ツール診断」では見つけられない脆弱性を見つけることができるんです。
では、具体的にどのようなことをしているのでしょうか?
「セキュリティ診断について理解を深める」シリーズ5回目の今回は、「手作業」というからには、全部人間の力だけで診断するのかと思っていたブログ担当もちゃじが、「手作業による診断」について学んでいきます。お付き合いいただけるとうれしいです。
セキュリティ診断について理解を深めるシリーズは、こちらからチェックしてください。
- その1 ブラックボックス診断とは?
- その2 セキュリティ診断の診断項目、その多さの理由に迫る
- その3 ローカルプロキシツールとは?
- その4 ツール診断とは?
- その5 手作業による診断とは?←本記事
- その6 報告書とは?
- その7 セキュリティ診断員ってこんな仕事
手作業による診断はなぜ必要?
手作業による診断では、「どういった脆弱性を見つけるのか」から理解したいもちゃじ。
「ツールでは検出できないところを手作業でやる」までは分かった。では、「ツールでは検出できない」とは具体的にどういう脆弱性のことなのかというと、
- サイト特性や仕様に起因する脆弱性
- 対象のWebサイト内部の実装に対する深い考察を要する脆弱性
- Webサイトに実装された制限を迂回できてしまう脆弱性
とのこと。
なるほど(理解度半分)。Webサイトはそれぞれ作られた目的が違うから、診断しなければならないポイントも違う。そしてそれには深い考察が必要……うん、これは人の出番ですね。ということで、専門家の知見に基づいた手作業による診断が必要になってくる、というわけなのか。
手作業による診断の「診断項目」
サイト特性によって診断項目が違ってくるのは大前提としても、主な診断項目ってあるはず。ここでは、手作業による診断の主な診断項目を4つ紹介します。
認証
まずは、セキュリティの基本的な要素である「認証」。認証はユーザーの正当性を確認するためのプロセスです。悪意のあるアクセスや不正利用(なりすまし)を防御するための最初の砦。
手作業による診断では、パスワードの強度や認証プロセスの厳密さを確認します。十分なパスワード強度が確保されていない場合、不正利用のリスクが高まります。
チェックポイント
- 使用するユーザーがどこまでデータを扱えるか
- パスワード周りでの不適切な設定・仕組み
- 認証の機能がセキュリティ的に適切かどうか
考えられる脆弱性
- パスワードポリシー
- 不適切な認証
- 脆弱なパスワードリマインダ
不適切な承認/権限のないデータ
「権限」とは、ユーザーに与えられるアクセスレベルや権利の範囲性のことです。システムやアプリケーションには、ユーザーごとに異なる権限が与えられます。
手作業による診断では、権限のないユーザーがデータや機能にアクセスできないかどうかを確認します。権限の管理が不適切な場合、不正利用や情報漏えいのリスクが存在します。
チェックポイント
- 他人のデータ(ファイル含む)が見えてしまわないか
- 管理者だけに権限が与えられた機能を、権限のない一般ユーザーが利用できてしまわないか
- Webページやデータへのアクセス権限が、適切に割り当てられているか
考えられる脆弱性
- 不適切な承認
- 権限のないデータの利用
機能の悪用
システムやアプリケーションの持つ機能は、不正に利用される恐れもあります。
手作業による診断では、機能が正しく実装されていて、不正利用される余地がないかを確認します。不適切な実装や設定がある場合、攻撃者による機能の悪用が容易になる可能性があります。
チェックポイント
- 機能が正しく実装されているか(その機能を使って悪さができないかどうか)
考えられる脆弱性
- メール機能の不正利用
- リダイレクタ
- 不適切なプロセスの検証など
不適切なプロセスの検証
「プロセス」とは、アプリケーション内でのデータや情報の処理手順を指します。システムやアプリケーションのプロセスは、セキュリティの脆弱性を生み出す恐れがあります。
手作業による診断では、不適切なプロセスの検証を行い、改善の余地があるかどうかを確認します。ログの適切な管理や不正なアクセスへの対応手順の検証などが含まれます。
チェックポイント
- Webサイトの制限を回避できるか
考えられる脆弱性
- 不適切なプロセスの検証
例えば、ECサイトを例にしてみます。
限定グッズが1ユーザー1つだけ購入できるとします。それなのに、なぜか10個購入できてしまった。これはまずいですね。本来なら1つしか購入できないようになっているはずなのに、その「1つしか購入できない」という制限を超えて10個購入できてしまう。これはもちゃじでも分かります。まずいな。
制御を超えて攻撃することができる脆弱性が潜んでいることが分かります。
手作業による診断の流れ〜「ABURIDA」の場合
診断の内容は、サイト特性によって異なります。ただし、診断には「観点」があります。
「観点」は絶対的な基準ではないものの、診断員にとって重要な指針となるらしい。診断は「観点があるところを洗い出すところから始まる」とは、当社のハイブリッドWebセキュリティ診断「ABURIDA」の診断員の言葉。具体的には、ツールでリクエストが送れないようなところを洗い出すんだそうです。
ここでは、当社の「ABURIDA」を例に、手作業による診断の流れをみていきましょう。
- 診断対象のWeb サイトに手作業による診断の観点があるか洗い出す
- 脆弱性に関わりがありそうな機能を洗い出す
- 診断項目を決める
- 機能と観点を比較しながら1つ1つ診断する
- 報告書を作成する
例えば、もちゃじのWebサイトの診断をお願いしたとして見ていきましょう。
1.診断の観点を洗い出す
まず、もちゃじのサイトをくまなく見ていきます。
- ログイン画面があるな → 認証機能に不備がないかチェック
- メール送信機能があるな → 機能を悪用できないかチェック
- リダイレクトしているな → 機能を悪用できないかチェック
- 写真を更新しているな → 機能を悪用できないかチェック
「認証」や「権限」、「プロセス」や「ロジック」といったところが一般的に重要な観点になります。
2.脆弱性に関わりがありそうな機能を洗い出す
脆弱性の発生が予想される機能を特定していきます。今までに蓄積された知見やノウハウ、セキュリティ知識から予想していくんだそう。
- ログイン画面 → 認証とセッション管理機能の検証
- メール送信機能 → 入力の検証
- リダイレクト → リダイレクト先の検証
- 写真更新 → ファイルアップロード、データ更新機能の検証
3.診断項目を決める
具体的な診断ポイントやチェックリストを作成して、診断する時に漏れがないようにしていきます。
4.機能と観点を比較しながら1つひとつ診断する
それぞれの機能に対して、観点と比較しながら一つ一つ診断していきます。それはもう、セキュリティ上に問題がないか丁寧に。
例えば「写真更新」のデータ更新機能は、データ更新の機能を使って悪用できてしまわないか、悪意のあるスクリプトファイルをアップできてしまわないか診断していきます。
5.報告書を作成する
お客さまごとに診断員が以下の点を丁寧に解説した報告書を作成します。
- セキュリティレベルを5段階評価で示したもの
- 検出された脆弱性の概要
- 想定被害
- 再現方法
- 一般的な対策方法
「ABURIDA」の報告書は分かりやすいというお客さまの声をいただいています(唐突に宣伝)。
手作業による診断で見つけやすい脆弱性
脆弱性を特定するには、具体的なシステムやアプリケーションの設計や実装が関わってきます。手作業だからこそ見つけやすい脆弱性が存在するのも確か。
では、代表的な脆弱性には何があるんだろう?
不適切な認証(不十分なパスワード強度)
パスワードには、一定の「複雑さ」や「長さ」があることが望ましいです。パスワード設定の時点で強度を確保できていない場合があります。
例えば、以下のようなケースがあると、強度不十分として指摘対象に。
- 「aaaaaaaa」とか「11111111」でOKの場合
- 「123456」など短い文字数でOKの場合
- アカウントIDと同じ
これはまずい。標的にされやすいです!
機能の悪用(メール送信機能の不正利用)
例えば、あるWebサイトでは任意のメールアドレスを入力して、新規登録することができます。しかし、このサイトではメールの内容が改ざんされてしまう可能性があり、それによってフィッシング詐欺に悪用される恐れがあります。
またまたもちゃじサイトで考えてみましょう。
もちゃじサイトは、任意のメールアドレスと名前でユーザー登録が可能で、ユーザー登録をすると「(名前)さん、ようこそもちゃじサイトへ」みたいなメールが届く仕組みになっています。
そこで悪い人が、被害者のメールアドレスを入力して、名前の欄に「確認はこちらから URL(フィッシングサイト)」を入力して登録。
そうすると、被害者のメアドに「確認はこちらから <URL>」というメールがもちゃじサイトから届いてしまいます。もちゃじサイトからのお知らせと思って、被害者はクリックしてしまい……
という状況に。OMG ……
登録済みのログインIDが判明
登録済みのログインIDが判明してしまうと、なりすまし攻撃ができてしまいます。
例えば、新規登録画面があって、ユーザーは好きなアカウントIDやメールアドレスを入力できますが、既に登録されている場合に「既に登録されています」といったエラーメッセージが表示されます。実際に登録済みであることが判明して、有効なメールアドレスやアカウントIDが漏えいしてしまう恐れがあります。
このような状況では、なりすまし攻撃が行われる危険性が高まります。アカウントが判明してしまえば後はパスワードのみが必要となるため、攻撃者にとって攻撃のハードルが下がります。特にメールアドレスが漏えいした場合は、有効なメールアドレスが明らかになるため、悪い人が悪意のあるダイレクトメッセージを送りつけるなど悪用できてしまいます。
まとめ
サイト特性や機能を見ながら、人による深い考察と専門知識が必要となる手作業による診断。ツールによる自動診断では見つけることが難しい脆弱性(認証や権限、プロセス、ロジックに関する脆弱性)も、手作業でチェックすることによって見つけていきます。
ツールで一般的な脆弱性を洗い出しつつ、アプリやWebサイトの環境や特性によって発生しうる脆弱性やその可能性を見つけ出すことも、とても大切な視点ということが分かりました。
ABURIDAのチームでは、これまでの独自のノウハウを蓄積し、手作業による診断を実施しています。Webセキュリティが気になる方はぜひご相談ください(と宣伝してみる)。
ふう書き終えた
『劇場版 PSYCHO-PASS PROVIDENCE』、とりあえず宜野座の髪型ありがとうございます! その他の感想はふせったーかな。