ツールによる診断とは? 〜セキュリティ診断について理解を深めるその4〜
セキュリティ診断の方法は、主に「ツールによる診断」、「手作業による診断」、ツールと手作業を合わせた「ハイブリッド診断」の3つがあります。ブログ担当の私もちゃじは、この3つの手法の違いが文字通りの意味でしか理解できていません。
「ツールによる診断」と聞いても、ツールが診断してくれるのね、便利そうだ、くらいのものです。
セキュリティ診断について理解を深めるシリーズなんだから、この診断手法について理解を深めようじゃないか。ということで、4回目の今回はセキュリティ診断の手法の一つ「ツールによる診断」について勉強していきます。お付き合いいただけるとうれしいです。
セキュリティ診断について理解を深めるシリーズは、こちらからご覧いただけます。
- その1 ブラックボックス診断とは?
- その2 セキュリティ診断の診断項目、その多さの理由に迫る
- その3 ローカルプロキシツールとは?
- その4 ツールによる診断とは?←本記事
- その5 手作業による診断とは?
- その6 報告書とは?
- その7 セキュリティ診断員ってこんな仕事
ツールによる診断のメリットとデメリット
一般的にツールによる診断は、ブラックボックス診断をするための方法です。WebサイトやWebアプリケーションの一般的な脆弱性を自動的に検出できる、セキュリティ診断の強い味方。
ツールによる診断によって、脆弱性を修正するための情報が得られるので、それらを修正することで、攻撃者による不正アクセスや情報漏えいなどの被害を未然に防ぐことができます。
メリット
ツールを使って自動的に診断する場合のメリットは
- 早い
- 網羅的
- コストが低い
- 再現性がある
といったところでしょうか。
実際に診断してくれるのはプログラムなので、手作業による診断と比べたらはるかに高速で、網羅的に大量に、いろんなケースをテストできます。加えて時間と費用も節約! 同じ設定で何度でもテストできるので、再現性がある! 問題が発生した場合には、再現性があることで問題の原因を特定しやすくなります。
他にも
- ヒューマンエラーを減らせる
- 精度が高まる
- 見落としがなくなる
とかもメリットですね。
デメリット
便利で働きものなツールですが、やはりそこにはデメリットも。
ツールに正しく動いてもらうためには、人間が正しく設定する必要があります。もし間違った設定で実行されてしまうと、誤った結果が出てしまう恐れがあります。
設定によっては、なんかちょっと怪しいなとツールが思ってしまい、問題ありとしてフラグが立ってしまう「誤検出」や、存在している脆弱性を検知しない「偽陰性」という、ややこしいことが起こりえます。
もちゃじは、この設定でミスりそうだな。怖いな。襟を正そう。あ、診断員じゃなかった。
基本的には優秀な「ツールによる診断」ですが、限界も見えてきます。ツールでは検出できない脆弱性も存在しますし、診断結果を鵜呑みにすることはできません。最終的には人の目が必要なんですね。そこで、手作業による診断と併用することで精度の高い診断ができる、というわけなんです。
(当社のセキュリティ診断「ABURIDA」はツールと手作業を合わせたハイブリッド診断です! と宣伝しておく)
ツールによる診断6つの手順
ツールによる診断のさわりが分かったところで、実際にどのように行われているのか、気になりませんか? 気になりますよね? ね? 気になる方が多数であると仮定して話を進めます。
当社のセキュリティ診断「ABURIDA」を例に、一つ一つ見ていきましょう。
1. ツールにサイトの構造を覚えさせる「クロール作業」
まず、クロール作業を行います。
クロール(crawl)とは、インターネット上にある、たくさんのWebページを一つずつ見て回り、URL、フォーム、リンク、画像、動画、音声などの情報を「収集する」プロセスのこと。
ツールによる診断では、診断対象のWebサイトを巡回して、ツールがリクエストを送信し、Webサイトからのレスポンスを受け取り、さまざまな情報を収集します。そしてツールにリクエストとレスポンスを記録していく。この「自動的に巡回する」ことを、クローリングと呼ぶんだそうな。
このプロセスによって、ツールはWebサイトの構造や構成を理解して脆弱性を検出するための情報を収集することができます。
2. 期待通りに応答するか「再送信で確認」
次に、クロール作業で取得・保存したリクエストを再度送信して、期待通りの応答が帰ってくるか確認します。クロールした時と同じレスポンスが返ってきたらOK。クロール時とは違ったレスポンスが返ってきたら、シナリオ設定などを行います。(後に出てきます)
再送信は、ログイン操作のクロールから実施する以外にも、機能ごとに行うこともあります。
再送信することで確認できること
- 正しいリクエストが送信されているか
- Webサイトが期待通りに応答しているか
3. 適切に診断するための「プラグインやツール設定」
次に、脆弱性の攻撃パターンのセットをプラグインとして事前に用意し、脆弱性ごとに適切なプラグインに切り替えて診断するための準備を行います。また、パラメータの追加・削除・除外や攻撃のパラメータ指定、ヘッダー、パス区切りなどの設定は、診断の精度を向上させるために重要なんだとか。
ツールの設定によっては診断対象のWebサイトやサーバーに負荷をかけることもあって(サーバーが重くなるとソワソワする診断員がいる)、いろいろ細かく慎重に設定をする必要があります。
もちゃじはこの辺りで頭から煙が出そうになったので、「診断対象に応じてプラグインの設定を切り替えて診断を行う」とざっくり理解。設定の細かいことは、煙が落ち着いてから理解することにしました。
4. 攻撃パターンの定義「シナリオ設定」
シナリオ設定は、「複数の操作によって完了する診断」の操作順序や条件などをあらかじめ定義しておく作業です。攻撃対象のURLやパラメータを設定し、テストケースや攻撃パターンを作成。それらを組み合わせた攻撃シナリオを定義することです。
効率的な診断に欠かせないのが、このシナリオの実行順序の設定なんです。
複数のリクエストの順番を設定することもあります。複数のリクエストの場合、ログインとか、パラメータの引き継ぎとか、どういう順番で実行するかを設定します。
例えば、チケット購入の場合、
- チケット購入画面を表示
- 購入するチケット情報(枚数や席の種類)を入力する
- 購入内容の確認画面を表示
- 購入内容を確認して、問題がなければ購入完了操作を実行する
- 購入完了画面が表示されることを確認する
みたいなのを順番通りにやるのがシナリオです。このようなシナリオを設定することで、攻撃パターンをシナリオに沿って実行することができます。
例えば、(2) で入力された情報に対してSQLインジェクション攻撃を試みる攻撃パターンを設定することもできます。
ログインとログアウト処理の診断は、セットにする場合もあるようです。
余談ですが、難しいシナリオを組めるのが楽しいという診断員の話を聞いて、適材適所とはこのことかと思ったものです。
5. 攻撃値を送信しレスポンスを取得する「スキャン実行」
設定したシナリオに従ってクロールしたリクエストに対して、プラグイン単位で攻撃値を含めて送信します。実際に攻撃値を送信し、レスポンスを取得するんです。その結果を解析して脆弱性が検出された場合には、検出マークを付けて報告してくれます。
少しでも怪しい時はフラグを立ててくれるので、実際には脆弱性ではない「誤検出」の場合もあるので要注意。
6. 結果の検証
当社のABURIDAの場合、ツールによる診断と手作業による診断を合わせた「ハイブリッド診断」なので、ツールが出した結果を診断員が判断します。
ツールの検出結果を自動的に判断することはできないため、診断員が目視や手動操作で確認し、実際に脆弱性なのか、誤検出なのかを判定します。
診断の中で、一番手間がかかるのがこの検証作業。誤検知か脆弱性かは診断員でないと判断できません。診断員の知識と経験が問われる腕の見せ所ですね。
ツールが得意な脆弱性
ツールが得意なのは、大量のパラメータを網羅的にチェックすること。 脆弱性でいうと、三大脆弱性から以下2つを見つけ出すのが得意です。
- クロスサイトスクリプティング(XSS)
- SQLインジェクション
100パラメータを手動でチェックしようとすると、時間が溶ける上にミスも発生する恐れがありますが、ツールなら大丈夫。むしろ得意なので、お任せしましょう。
逆に三大脆弱性の残り一つ、クロスサイトリクエストフォージェリ(CSRF)は、とにかく細かい設定が必要になるので、ツールよりも手動の方が高い精度で検出できるんだとか。
三大脆弱性について詳しくは、こちらの記事をご覧ください。
まとめ
自動化されたツールを使ってWebアプリケーションの脆弱性を検査するツールによる診断。効率的に多くの脆弱性を発見でき、再現性の高い検査結果を得られることが特徴です。
一方で、ツールによる検査には限界があり、ツールでは見つけられない脆弱性があること、ツールによる診断で検出された結果の検証には診断員の判断が必須、ということも分かりました。
ツールによる診断の結果を鵜呑みにするのは危険なので、診断員による検証が必要なんですね。ツールによる診断の利点を最大限に活用しながらも、診断員の判断力を取り入れることで、より信頼性の高いセキュリティ診断が可能になります。
ふう書き終えた
私の意思と関係なく、まぶたがせっせとぴくぴくしている。どうせならお腹がぴくぴくしてくれたら腹筋も鍛えられるかもしれないのに。思うようにはいかないものよ。
ライター/もちゃじ
IT業界に縁なく秘書畑をさすらい、前職はインドで社長秘書。ほぼ日本語とパッションのみで乗り切ったずうずうしさはスキルの一つか。完全なインドア派ながらたまにふらりと旅に出る。行き場のない母性を持て余し、友人の犬を溺愛するもほえられる。体が硬く、インドでヨガティーチャーに笑われたことに深く傷つく一面も。
ITド素人の私がWebセキュリティについて学び、レベルアップしていく(予定です)様子をお届けします。学びを発信することで、少しでもWebセキュリティに関する「難しそう」というイメージが下がり、苦手意識のある方たちに届いたらうれしいです。