2012年10月10日水曜日

[PR]日本ベリサインの「脆弱性アセスメント」機能を使ってみた

重要事項説明

本稿は、HASHコンサルティング株式会社が、日本ベリサイン株式会社から依頼を受けて「脆弱性アセスメント」を評価し、その結果を執筆した記事広告です。

はじめに

日本ベリサインの提供する「EV SSL証明書」または「グローバル・サーバID」を購入すると、「脆弱性アセスメント」の機能(以下、脆弱性アセスメント)が無償で提供される。この脆弱性アセスメントを実際に使ってみたので報告する。

脆弱性アセスメントとは何か

脆弱性アセスメントはインターネット上のWebサイトから、登録対象サイトを指定して行う。いったん登録すると、自動的に週1回脆弱性診断を実施してレポートが作成される。その流れを下図に示す。


① ベリサインのサイトから診断を起動
② 対象サイトに診断を実施
③ 診断終了のメール通知
④ ウェブサイト管理者は管理者サイトにて診断レポートを受け取る

使ってみる

診断の設定は、管理者サイトから行う。サービスアグリーメントに同意して、「Activate Scanning Service」ボタンをクリックする。すると24時間以内(実際には数時間以内)に脆弱性スキャンが始まる。今回の試用では、オープンソースのアプリケーション(phpMyAdmin、MovableTypeなど)を導入して現実に近い環境で診断したが、診断は開始後1時間程度で終了していた。



 診断が終了するとメール通知が来るので、ベリサインのWebサイトから「Download vulnerability report」というリンクをクリックしてレポートをダウンロードする。


なお、上図の下部に「Request On-Demand Scan」というボタンがあるが、これは、重大な脆弱性を発見した場合に表示され、これをクリックすると、定期的な診断を待たずに診断を開始する。レポートの脆弱性を対策した後に、再診断する際にこのボタンを用いるとよい。

結果

ここでアセスメントの結果レポートを見てみよう。 利用者がまず確認するのは、診断結果サマリだ(下図)。



 ご覧のように、脆弱性は危険度に応じてCritical(高危険度)とInformational(情報)に分類されている。脆弱性診断ツールの中には、危険度が5段階程度に細かく表示されるものも多いが、利用者に必要な情報は「対策が必要か否か」という判断なので、この二段階表示は分かりやすいと感じた。ただし、Informationalの中にも対処した方がよいものが含まれる場合があるので、最初に検出された時に内容を確認した方がよいだろう。
 縦の分類は、Web、アプリケーション、データベースなど脆弱性の発生箇所の分類だが、ここでは具体的な説明は割愛する。

 ここで、Criticalの脆弱性の一覧を見よう。下図のように、9種類の脆弱性が報告されている。表右端の「Vulnerability Details」の欄はリンクになっていて、 各脆弱性の詳細説明にジャンプすることができる。



 紙面の関係で、いくつかの脆弱性をかいつまんで紹介する。
 まず、VA-001の詳細の冒頭は下表のようになっている。「Cross Site Scripting」とあるように、クロスサイトスクリプティング(XSS)脆弱性であることが分かる。


 表の意味は、脆弱性のIDがVA-001、脆弱性の発生した場所がアプリケーションであること、脅威の内容が認証情報の盗難(セッションハイジャック)、脆弱性の発生要因が安全でないプログラミングにあることを示している。
 表をさらに見ると、Technical Detailsとして脆弱性の発生箇所が示される。具体例を以下に示す。
Vulnerable URL: http://www.dwd.jp/login.php?url=/itemlist.php<Script>alert
("HelloSIG")</Script>
HTTP request method: GET
Response Snippet: <Script >alert("HelloSIG")</Script>
上記から、脆弱性のあるスクリプトが/itemlist.phpであり、パラメータがクエリ文字列urlであることがわかる。この情報は、開発者が脆弱性を再現し、対策する上で役に立つ。対策方法はこのレポートにも簡単に説明しているが、IPAの「安全なウェブサイトの作り方」などを参考にするとよいだろう。
 試験環境ではトップページから5階層たどった場所にもXSS脆弱性があったが、正しく指摘されていた。ある程度深いところまでクロールを行っていることが伺えるが、検査の網羅性については保証されていないので、診断がもれる可能性はある。
 同様に、このレポートではSQLインジェクションも報告されている(VA-002)が詳細は割愛する。
 次に、VA-006を紹介する。詳細レポートの冒頭は以下の通りである。



 この脆弱性は、MySQLのデータベースを管理するツールの中でも特に使いやすいことで人気の高いphpMyAdminの脆弱性である。この表を下にたどってVulnerability Details欄を見ると、リモートからコードが実行可能であるという簡単な説明があるが、さらにVA-006のリファレンス情報を参照すると、CVE-2011-2505~CVE-2011-2508が該当することがわかる。このCVE番号を元に、JVN iPedia(IPAが運営している脆弱性データベース)を検索することで、脆弱性の詳しい内容を日本語で読むことができる。

 次に、「Appendix A - Environment Information」からポートスキャンの結果を紹介する。ポートスキャンとは、診断対象サーバーに実際にネットワークアクセスして、活動中のポート番号とサービスの種類、ソフトウェアの種類とバージョン等を確認したものである。



 ポートスキャンの内容はサーバーの役割毎に異なるので、正常・異常の区別はなく、あるがままの内容が表示される。レポートの読者は、本来のサーバーの役割から必要最小限のポート番号を基準として、レポートの表示内容が基準と相違ないかを確認すると良い。とくに、気をつけたいのが「本来公開する必要のない」はずのポートである。Webサーバーの場合、HTTPの80とHTTPSの443は必要だが、これら以外のポートが開いていると、不要なポート・サービスである可能性がある。
 この例では、MySQL (3306ポート)とPostgreSQL (5432ポート)は通常公開する必要のないポートである。また、FTP(21ポート)とtelnet(23ポート)はセキュリティ上の問題が生じやすいので、22ポートで動作するsshとscpで代替するべきである。このように、ポートスキャンの結果を精査することで、セキュリティ上の問題点を把握し、改善につなげることができる。

評価・まとめ


 日本ベリサインの脆弱性アセスメントを試用した。当アセスメント機能は、定期的に(毎週)、対象サイトに影響(負荷やごみを残すようなマイナスの影響)を与えずに診断をすることが特徴である反面、診断の精度についてはツール診断であるための限界があるようである。具体的には、脆弱性ではないものを脆弱性と判定する「誤検知」や、脆弱性が実際にはあるのに検出しない「検知漏れ」の可能性がある。これらは、未知のサイトに対して外部から診断するツールの特性上、原理的にゼロにはできない。
 しかし、毎週という高い頻度で定期的に診断することのメリットは大きい。なぜなら、脆弱性管理の以下の課題に対応するためには、定期的な診断が有効であるからだ。

  • 脆弱性情報は日々更新されているので、サイトを脆弱性のない状態にしていても、ある日突然脆弱性のある状態に変わる
  • 設定・更新作業などで、誤って脆弱な設定(不要なポートを公開してしまう等)になる可能性は常にある

 このため、日本ベリサインの証明書を購入すれば利用できる「脆弱性アセスメント」機能を有効活用すれば、追加コストを掛けずに脆弱性管理の有力なツールが得られると言えるだろう。