それでは、実際にTomcat自身が持っているセキュリティリスクを調べる方法を見ていきましょう。実際に自分のTomcatにあるセキュリティリスクはどうやって確認すればいいのでしょうか?
手当たり次第セキュリティ・ホールを確認していく! というのは実際には不可能に近いことなので、自分の環境を知り、その環境で公表されているセキュリティリスクを調べていくことにしましょう。
セキュリティリスクを確認するために、まずは自分のTomcatのバージョンを調べてみましょう。それでは、以下のjspを確認できるディレクトリに作成してみましょう。今回は「 /opt/tomcat6/webapps/ROOT/jsp/test.jsp 」として作成してみます。
<%@ page contentType="text/html" %> <% out.println( application.getServerInfo() ); %>
ファイルを作成したら、Webブラウザでアクセスしてみましょう。
バージョン情報が確認できます。今回は6.0.14でした。
このファイルはそのまま残していると、悪意のあるユーザーに対して自分のバージョンをさらけだしてしまうことになるので、必ず削除しておいてください。
セキュリティリスクの情報はユーザーが「危険性」を共有するためにインターネット上のサイトに集められて管理されています。
アメリカでは、このような取り組みは重要視されており、NIST(アメリカ国立標準技術研究所)が管理しているサイトにNational Vulnerability Database (NVD)というセキュリティ・ホールのデータベースサイトがあります。このサイトではいくつかのセキュリティ・ホールの情報を管理しているサイトからデータを検索できるようになっています。
このサイトでは、いくつかの形式の情報が閲覧できるようになっていますが、その中でもMitre社が提案した「Common Vulnerabilities and Exposures(以下、CVE)」と呼ばれるプログラムのセキュリティ・ホールに一意な識別符を付けて管理する仕組みがメジャーです。今回はこれを用いてセキュリティ・ホールを調べてみましょう。
まずは、CVEのセキュリティ・ホール検索ページを開きます。
ページを開いたら、「Keyword search」に「Tomcat」と入力して検索を実行してみましょう。
検索してみると、たくさんのセキュリティ・ホールのデータが登録されていることが分かります。これは過去からの蓄積データなので、現在利用しているTomcatのバージョンと照らし合わせてどのセキュリティ・ホールが該当するのか、調べてみましょう。
調べてみると、今回調べたTomcatのバージョンは6.0.14ですので、1月の時点で「CVE-2007-5461」と「CVE-2007-5342」の2つのセキュリティ・ホールが見つかりました。
編集部注:CVEや上記のような番号について詳しく知りたい読者は、@IT Insider's Computer Dictionaryの[CVE識別番号]をご参照ください
CVEのセキュリティ・ホールの検索で出てくるリストは3つの項目で構成されています。
2つのセキュリティ・ホールは「WebDAV」と「JULI loggingコンポーネント」に関するもので「CVSS Severity」が「Low」と「Medium」という設定になっているようです(CVSS(Common Vulnerability Scoring System)について詳しく知りたい方はIPAに解説があります。)。
編集部注:WebDAVについて詳しく知りたい読者は、「次世代プロトコルWebDAVの可能性」をご参照ください。
片方は比較的数値が高いのでなんとなく重要そうだな、というのが分かります。このバージョンにはセキュリティ・ホールがあることが分かったので、対応について考えていきましょう。
それでは、Tomcatのホームページを開いてみましょう。
ページを開いてみると、最新バージョンについての情報が掲載されていますが「6.0.14」は2008年1月の原稿執筆時点では最新版のリリースのようです。
お気付きでしょうか? 前回までに設定してきたTomcatもバージョンは「6.0.14」で、つまり2008年1月の原稿執筆時点の最新版です。それでは、アプリケーションを更新してセキュリティ・ホールを修正することはできないのでしょうか?
そんなことはありませんので、落ち着いてまずはメニューから「Problems?」の「Security Reports」のページを開いてみましょう。
このページでは、Tomcatのセキュリティ・ホール問題を管理しています。現在のバージョンは6.x系列なので「Apache Tomcat 6.x Security Vulnerabilitites」のページを開きます。
いま寄せられているセキュリティ・ホールの情報と対応状況がここで確認できます。6.0.14以降で発生する問題を下から見ていきましょう。
まず、WebDAVに関する問題である「CVE-2007-5461」について掲載されています。正式リリースされていないものの、Subversion(以下、SVN)というソース管理システム上で現在準備中の次バージョン(6.0.15)のリリースで対応しているようです。
編集部注:Subversionについて詳しく知りたい読者は、「バージョン管理に便利なSubversiveプラグイン」をご参照ください。
次に、JULI loggingコンポーネントに関する問題である「CVE-2007-5342」について掲載されています。どうやらCVEに挙げられているセキュリティ・ホールはすべて対応しているようです。これはSVN上の最新の開発版で対応しているようですが、今後のパッケージに含める提案を行っている段階のようです。
現状は安定版や次リリース準備版ではなく、開発版で更新の対応をする必要があることが分かりました。
それにしても、不思議なところが1点ありましたね。それはセキュリティの評価に対する考え方です。
WebDAVとJULI loggingコンポーネントは、それぞれ「Low」と「Important」という分類のセキュリティ・ホールとされていますが、先ほど見たCVEのセキュリティ・ホール判断基準とはまったく異なる設定になっています。これは、Apache Tomcat セキュリティチームの評価がCVSSの評価と異なる視点で行われているからです(Apache Tomcat セキュリティチームの評価はセキュリティのレベルはLow>Moderate>Important>Criticalの順で定義されています)。
WebDAVのセキュリティ・ホールは外部クライアントからのアクセスで発生する問題なので評価が高くなっています。一方で、JULI loggingコンポーネントの問題はTomcatにアップロードされるプログラムによって発生する問題なので評価が低くなっています。
同じセキュリティ・ホールでも見方が違うと評価が違うということに注目です。
さて、CVEで見つかったセキュリティに対応する方法が分かったところで、アプリケーションを実際に更新してみましょう。
なお、アプリケーションの更新によってJavaアプリケーションが動かなくなる可能性があります。必ずテストサーバで検証してから行うようにしましょう。
次ページでは、Tomcatのセキュリティリスクを解決の仕方を解説します。
Copyright © ITmedia, Inc. All Rights Reserved.