セキュリティ診断の診断項目、その多さの理由に迫る 〜セキュリティ診断について理解を深めるその2〜
セキュリティ診断の目的は、ざっくりいってしまえば「脆弱性をゼロに近づけて、セキュリティインシデントを防ぐために、脆弱性の有無を調べること」。サーバーやシステムに穴(脆弱性)があったら、「悪い人」によってデータの改ざんや搾取などの攻撃につながってしまいます。ならば、攻撃されないようにすればいい→攻撃されそうな穴をつぶせ→その穴はここだ! ということです。
脆弱性ゼロ化を目指してセキュリティ診断するのは分かった。それにしても「診断の項目めっちゃ多くない? 何でこんなにあるんや?」ってブログ担当もちゃじは思ったのでした。
この記事では、何でこんなに診断項目があるんだろうというもちゃじの疑問を解決していきます。お付き合いください。
セキュリティ診断について理解を深めるシリーズは、こちらからご覧いただけます。
- その1 ブラックボックス診断とは?
- その2 セキュリティ診断の診断項目、その多さの理由に迫る ←本記事
- その3 ローカルプロキシツールとは?
- その4 ツールによる診断とは?
- その5 手作業による診断とは?
- その6 報告書とは?
- その7 セキュリティ診断員ってこんな仕事
セキュリティ診断の種類
診断項目を知るには、セキュリティ診断の種類を知っておかなければなりません。セキュリティ診断には大きく2種類、ホワイトボックス診断とブラックボックス診断があります。
ホワイトボックス診断 | 仕様書や設計図、実際のソースコードなどを見ながら診断していく方法 |
ブラックボックス診断 | 対象システムの内部構造を考慮せず、疑似攻撃や侵入を仕掛けて脆弱性を発見する診断 |
ブラックボックス診断の中には、
- プラットフォーム診断
- Webアプリケーション診断
があります。
もちゃじが「診断項目が多いな」って思ったのは、どうやらこちらの方ですね。
プラットフォーム診断の項目
では、まずはプラットフォーム診断から。プラットフォーム診断は、対象サーバーなどのサービス情報から脆弱性を見つけていくもの。Webアプリを動かすための基盤である、OSやミドルウェア、ネットワークなどのプラットフォーム自体が持っている脆弱性を発見していきます。
代表的な診断項目は、「ポートスキャン」による稼働サービスの確認や、既知のセキュリティホールの確認などです。
おや? 診断項目、少ない?
診断項目:ポートスキャン
ポートとは、パソコンなどでデータを通信するときのドアの役割をしているもの。それぞれの通信種類によって通れるドア(ポート)が決められています。このドア、たくさんあって、なんとポート番号は0番〜65,535番まで存在しているんです。
いやめっちゃたくさんあるんですけど。診断項目どころじゃないんですけど。
通信のやりとりをするときは、それぞれいちいちこのドアを通るんですが、全部が全部、専用のドアを持っているかというと、そうでもなく。専用ドアではないポートもあるんです。
まあ、とにかく。ポートはドアと言いました。開いたままのドアは出入りに手間はかかりませんが、防犯的には心配ですよね。この通信はしないっていう判断をしたら、そのドアはきちんと閉めて通れないようにしましょう。危ないですからね。
で、ポートスキャン。
平たくいえば、数あるドアのうち、どのドアが通れるか(開いているか)総当たりで調べることです。悪い人は、ポートスキャンを攻撃のための下調べに使います。「どこから攻撃仕掛けようかな〜、しめしめ、あそこのドアが開いているぞ、あそこから攻撃を仕掛けるか」というように。
診断員は、網羅的にポートスキャンすることにより、依頼者のサービスを洗い出して特定。不要なサービスなのにドアが開いていないか確認します。
診断項目:既知のセキュリティホールチェック
セキュリティホールは、ソフトウェア上のセキュリティ面の不具合や欠陥のこと。バグですね。システム設計上のミスやプログラム作成時の不具合などが原因となり、発生することが多いようです。
ただしこうした不具合や欠陥は、ソフトウェアにはつきもの。だから、ソフトウェアを提供しているところは、こうしたセキュリティホールをこまめに修正し「このバージョンで直したよ!」というのを公開しています。
そこで診断では何をするかというと、ポートスキャンでサービスを洗い出したらOSやWebサーバーなどのバージョン情報を調べ、既知のセキュリティホールが含まれるバージョンを使っていないかどうかを確認するのです。
Webアプリケーション診断の項目
次に、Webアプリケーション診断に移ります。Webアプリケーション診断とは、その名の通りWebアプリケーション(ソフトウェア)を利用するために公開されている機能から脆弱性を見つけていくもの。
お問い合わせフォームやショッピング機能などの入力領域に対して、悪意のある攻撃があった場合にどのように対応するかを診断していきます。主に既知の脆弱性がないかの診断です。
診断項目:めっちゃたくさんあった
診断項目、ここです! ここがたくさんあるんです!
当社のWebセキュリティ診断サービス「ABURIDA」を見てみると、「主な診断項目は6種類23項目、全部で70項目以上に対応!」とうたっています。
70項目以上……70項目……。
セキュリティ診断の項目って何でこんなにあるの?
改めて……何でこんなにあるんだろう?
当社の「ABURIDA」の場合、以下6つにカテゴライズして診断しています。
認証 | Webサイトで適した認証が実施されているか |
承認 | 認証後のセッション管理・パスワード管理に問題がないか |
クライアント側での攻撃 | クライアント側からの攻撃に対して問題がないか |
コマンドの実行 | コマンド実行によって行われる攻撃に対して問題がないか |
情報公開 | Webサーバーから情報漏えいの可能性がないか |
ロジックを狙った攻撃 | WebサーバーやWebアプリケーションの持つ機能を狙った攻撃が可能か |
もちゃじはもう白目。とにかく6つのカテゴリに分かれていて、細かく分類すると70項目以上になるってことだけ分かりました。
それぞれの項目については、当社のハイブリッドセキュリティ診断サービス「ABURIDA」のサイトをご覧ください。
(https://web-scan.jp/service-price/)
もちゃじの勝手にQ&Aシリーズ〜診断項目編〜
もちゃじ(以下Q)が、熟練診断員さん(以下A)に教えてもらいました。
Q:何でこんなに診断項目がたくさんあるんですかね?
A:いろいろなWebサイトがあるから。ログインする、しない。メール出す、出さない。Webサイトごとに用途が違うでしょ、だからそれに合わせると多くなるんだよね。ちなみに70項目を多いと思ったことはないよ(個人の感想です)。
Q:70項目全部診断するんですか?
A:基本的には全部診断する。ただ、やらなくていい項目も実際にはあるから、そういうものはやらない。例えば、古いバージョンのIEに起因する脆弱性の場合、IEはもうないのでやらない方向で検討する。メールを使っていない場合、メール機能のところはやらない。
Q:一つの機能だけ診断してほしいっていう要望があったら、できますか?
A:できる。今までにセキュリティ診断をしたことがあって、その時から新しく問い合わせ部分をWebサイトに追加したので、そこだけ診断してほしいという要望は実際あるよ。
Q:例えば、SQLインジェクションの脆弱性があるかないか知りたいだけだから、それが分かる項目だけ診断してくださいっていうのは?
A:できる。ただし、せっかくセキュリティ診断をするなら、6カテゴリを網羅的にチェックして、他の脆弱性の有無も調べた方がいいよ。ABURIDAの場合は、SQLインジェクションだけ診断しても、全項目診断しても診断料金は同じだからね。
Q:なるほど、え、でもピンポイントで脆弱性の有無を知りたい場合、診断項目は一つ? なんだか複合的にこことここに穴があるからこの脆弱性がありますとか、脆弱性につながる種になりそうだ、とかになるんではなくて?
A:原則、1項目1脆弱性。ピンポイントで知りたい場合は、該当の項目一つでも検知できる。ただ、網羅的に診断することで、脆弱性が芋づる式に見つかることもある。AとBの項目に穴があるから、この脆弱性もあるだろう、あった、という感じ。診断情報を集めていくと、診断の精度も上がっていく。項目はお互いに絡み合っているから、セキュリティ危険度のHighやMediumといった評価も、そういった情報を基にランク付けしている。
おおお、そういうことか!
項目名がSQLインジェクションだったり、XSS(クロスサイトスクリプティング)だったりするのは、項目名=脆弱性の名前だからか! 脆弱性ゼロ化を目指してるんだから、70項目もあっても診断員さんは「多いと思ったことがない」のか。どんな脆弱性も炙り出してやるぜって気概を感じる。そりゃ、ピンポイントの脆弱性を知りたい場合、項目は一つで良い訳だわ。は〜われながら理解が遅くてびびる。
三大脆弱性を炙り出せ! 診断項目は?
診断項目についての疑問が解けてきたので、三大脆弱性を例に炙り出したい場合の診断項目をお伝えしますね。
もううすうすお気づきかもしれませんが。
SQLインジェクションの診断項目
最も有名な脆弱性の一つであるSQLインジェクションは、検索ボックスや入力フォームなどの入力領域に不正なSQL文を注入(インジェクション)して、Webアプリケーションのデータベースを不正に操作して攻撃されてしまう脆弱性です。
詳しくはこちらの記事をお読みください。
SQLインジェクションの診断カテゴリは「コマンドの実行」です。コマンド実行によって行われる攻撃に対して診断します。で、診断項目がSQLインジェクション。
うん、診断項目=脆弱性名だった。
XSS(クロスサイトスクリプティング)の診断項目
XSSは、Webサイトを悪用して、それを見た訪問者が攻撃されてしまう脆弱性です。複数のサイトをまたいで(クロスサイト)、スクリプトによって攻撃(スクリプティング)されます。
詳しくはこちらの記事をお読みください
XSSの診断カテゴリは「クライアント側での攻撃」です。クライアント側からの攻撃に対して診断します。で、診断項目がXSS。
こちらも診断項目=脆弱性名。
CSRF(クロスサイトリクエストフォージェリ)の診断項目
CSRFは、あるWebサイトから発行された「セッションを維持するための情報」が、別のサイトを介したリクエストの送信時にも送られることで意図しない処理が実行されてしまう 脆弱性です。
詳しくはこちらの記事をお読みください
CSRFの診断カテゴリは「認証」です。Webサイトでの適切な認証が実施されているかを診断します。で、診断項目がCSRF。
三大脆弱性は、本当に診断項目=脆弱性の名前でしたね。
ただ、全てが診断項目=脆弱性名とは限らないようです。「ロジックを狙った攻撃」カテゴリでは、診断項目が「機能の悪用」その中には「メール」も含まれるので、脆弱性の名前とイコールではないものもあるようです。
まとめ
Webセキュリティ診断の診断項目(主にWebアプリケーション診断)は、いろいろなWebサイトの特性に対応できるようにたくさんあることが分かりました(ただし、診断員さんは多いと思っていない)。
原則、1項目=1脆弱性。脆弱性のゼロ化を目指しているんですから、既知の脆弱性に関して確実につぶしておきたいという想いが伝わってきて、セキュリティエンジニアの皆さんのすごさを感じます。
セキュリティ診断について興味を持たれた方は、当社信興テクノミスト「ABURIDA」のページをご覧になってください。
ふう書き終えた
寒いですね。もちゃじの仕事中の寒さ対策は、ひざ掛けか犬です。ひざ掛けはずり落ちがちだし、犬を膝に載せるとしびれるし、イマイチ有効打がないんですよね。タクシーのヒートシーターほしいな。
ライター/もちゃじ
IT業界に縁なく秘書畑をさすらい、前職はインドで社長秘書。ほぼ日本語とパッションのみで乗り切ったずうずうしさはスキルの一つか。完全なインドア派ながらたまにふらりと旅に出る。行き場のない母性を持て余し、友人の犬を溺愛するもほえられる。体が硬く、インドでヨガティーチャーに笑われたことに深く傷つく一面も。
ITド素人の私がWebセキュリティについて学び、レベルアップしていく(予定です)様子をお届けします。学びを発信することで、少しでもWebセキュリティに関する「難しそう」というイメージが下がり、苦手意識のある方たちに届いたらうれしいです。