今回からは,Webアプリケーションのぜい弱性対策を解説していく。

 一般的に,アプリケーションはOSやミドルウエア(Webサーバー,データベース,言語処理系,アプリケーション・サーバーなど)の上で稼働する(図1)。Webアプリケーションは,ブラウザからの要求(HTTPリクエスト)を入力として,各種データベース類を参照したうえで,処理結果をHTMLの形でブラウザに返す(HTTPレスポンス)。その様子が図2である。

図1●Webシステムの構造
図1●
図2●Webアプリケーションは各種データベース類を参照したうえで処理結果をHTML形式でブラウザに返す
図1●

 ぜい弱性対策を検討するうえでは,図1や図2に示すようなWebアプリケーションの構成に添った形で考える方が分かりやすい。このうち,まず最初に考えなければならないのがOSやミドルウエアといった「基盤ソフトウエア」部分である。ここがセキュアな状態でなければ,Webサイト全体のセキュリティは確保できない。

 セキュアな状態と一口に言っても,考えなければならないことはいくつもある。(1)ソフトウエアにぜい弱性がないこと,(2)新たなぜい弱性が見付かった場合に即座に対応できること,(3)設定を安全にしておくこと,といった具合だ。(1)は最新版の製品を導入すれば,多くの場合は問題はない。重要なのは(2)だ。これは製品の選定にかかわる項目で,開発プロジェクトの最上流工程で考慮しておかなければならない。


 受託開発の場合,発注仕様に明記されている場合と,受託側が提案する場合があるが,後者の場合,受託側が見積もりを作成する時点までには候補を決めなければならない。自社開発の場合は,要件定義より前の「システム化計画」などのフェーズで決める場合が一般的と思われる。基盤ソフトウエアの選定担当は,プロジェクト・マネージャやアーキテクトが中心となる。

 基盤ソフトウエアを選定する場合,アプリケーションの機能要件や性能要件を満たすことと同時に,開発チームが習熟しているなど開発生産性・保守性を考慮するのが一般的だろう。ただ,その際にはセキュリティ要件についても併せて考えておくべきである。以下で,基本ソフトウエアの製品選定時に考えるべきセキュリティ面のポイントを見てみよう。

開発前にアプリケーションの使用期間を考える

 基盤ソフトウエアを選定するセキュリティ上のポイントは,その基盤ソフトウエアのセキュリティ・アップデートが提供され続けるかどうかである。このため,開発するアプリケーションの使用期間を想定しておく必要がある。例えば,2013年末まで使用する予定のアプリケーションであれば,アプリケーションが利用する基盤ソフトウエアについてもセキュリティ・アップデートが2013年までは提供されなければ,Webサイトのセキュリティ対策が継続できないことになる。

 この問題を考える上で象徴的なデータがある。Webアプリケーション開発に人気のある言語PHPだ。最新バージョンはPHP5.2.8だが,一つ前のバージョンPHP4.xは昨年末でサポートが打ち切られ,2008年8月7日に最終のセキュリティ・アップデート(PHP4.4.9)がリリースされた。本稿掲載時点では,PHP4は既にセキュリティ・アップデートが終了して約5カ月が経過していることになる。

 インターネットにおけるPHPの利用状況は,Nexen.netというサイトが公表している統計から分かる。Nexen.netが2008年11月に公表した統計によると,2008年10月調査時点でのPHP4の利用率が約52%,PHP5の利用率が約48%となっている(図3)。つまり,PHPで開発されたサイトの半数以上が「セキュリティ・アップデートが終了したバージョン」でまだ稼働していることになる。これでは,PHP4に今後重大なセキュリティホールが発見された際に迅速な対応をとることが難しい。

図3●PHPメジャーバージョンアップの割合
図3●

サポート・ライフサイクル・ポリシーに注意しよう

 PHPに限らず,Webアプリケーションが稼働している期間内は,基盤ソフトウエアのセキュリティ・アップデートが継続できなければならない。最悪なのは,Webサイトを開発した直後に新しいバージョンが提供され,一つ前のバージョンで稼働するようなケースである。このため,ソフトウエアのサポート・ライフサイクル・ポリシーという考え方が重要になる。

 サポート・ライフサイクル・ポリシーというのは,ソフトウエア・サポートのサービスレベルや有効期限のことである。導入候補製品のサポートがいつまで提供されるかが分かれば,ユーザーは製品選定や保守計画を立案しやすい。ベンダーにとっては,製品の市場競争力を高めることにつながる。

 いち早くサポート・ライフサイクル・ポリシーを導入したのはマイクロソフトである。マイクロソフトの現在のポリシーは同社のサイトから参照できる。同社のサポートは,「メインストリームサポート」と「延長サポート」に大別できるが,セキュリティ・アップデートについては両方の期間,無償で提供される(表1)。

表1●マイクロソフト社のサポート・ライフサイクル・ポリシー
サポートの種類期間
メインストリームサポート「製品発売から5年」か「後継製品の発売から2年」のいずれか長い方
延長サポート「メインストリームサポート終了から5年」か「2番目の後継製品の発売から2年」のいずれか長い方

図4●マイクロソフトのサポート
図4●

 メインストリームサポートについては,「後継製品の発売から2年」の記述に着目すると,最新バージョンを使う限り最低2年はメインストリームサポートが受けられることになる。延長サポートは,「メインストリームサポート終了から5年」という記述から,最低5年は提供されることが分かる。これらを図4に整理した。

 ここから分かるように,マイクロソフトのポリシーによれば,最新バージョンを採用している限り最短でも7年はセキュリティ・アップデートの提供を受けることができる。一般にソフトウエアは会計上・税務上5年程度で償却しているが,新しいバージョンの習熟期間や開発期間などを考慮すると,この「7年」は十分に余裕のある期間とは言い切れない。それでも他社のポリシーと比較すると,マイクロソフトのサポート期間は長い方に属するようだ。

 次に具体的な製品として,Windows Server 2003とSQL Server 2005の延長サポート終了日を調べてみよう。これらはいずれも後継バージョンが発売されており,1世代前のバージョンになる。マイクロソフトのサイトを調べると表2のようになっている。

表2●Windows Server 2003とSQL Server 2005のサポート終了日
製品名発売開始日メインストリームサポートの終了日延長サポートの終了日
Windows Server 20032003/5/282010/7/132015/7/14
SQL Server 20052006/1/142011/4/122016/4/12

 これらは一つ前のバージョンではあるが,2015/7/14までは両製品ともセキュリティ・アップデートの提供を受けることができる。このような情報を基に,当該製品・ソフトウエアの将来にわたるサポートの可能性を検討し,適切な使用バージョンを選定すると良い。

ポリシーは各社まちまち

 マイクロソフト以外でも,米IBMや米オラクルがサポート・ライフサイクル・ポリシーを公表している 。両社のポリシーを参照すると,どちらも出荷開始から8年間のサポートを提供している。8年という数字だけ見ると長いようだが,これら製品を使用し始める時期によってはそうとも言い切れない。「既に4年が経過しているので,残り4年しか残っていない」という状況もあり得る。このため,個別の製品の状況を提供企業に確認して,ライフサイクルの残期間とサポートに要する費用などを確認する方が良いだろう。

 ただ,8年にもわたってサポートが保証されている製品は決して多くない。むしろ4~5年と比較的短かったり,サポート・ライフサイクル・ポリシー自体が明示されてない製品の方が多い。十分なサポート期間が保証されない場合は,次回に述べるオープンソース・ソフトウエアと同様の考え方により,保守方針を決めることになる。

Webアプリケーションのセキュリティに関する研究,コンサルティングを手掛ける。京セラ コミュニケーションシステムで文書管理を中心とするパッケージ・ソフトの企画・開発ののち,Webセキュリティ関連の業務に従事。2008年4月に独立。