(57)【要約】      （修正有）【課題】Ｗｅｂアプリケーションのセキュリティ対策において、高度な専門知識を開発者が持たなくても良いようにする。【解決手段】脆弱性対策として、個別のパラメータ毎に、１以上の検査項目に対する検査の要否を対応付けて記憶する設定ファイル１３２と、所定の攻撃に対する検査等を行う検査プログラムを、検査項目毎にそれぞれ記憶するライブラリ１３４と、Ｗｅｂアプリケーションにリクエストが入力されたとき、上記設定ファイル１３２を参照して、上記リクエストの引数として渡されるパラメータに基づいて、検査を要する検査項目を特定し、当該特定した検査項目の検査プログラムを上記ライブラリ１３４から呼び出して実行する入力値検査手段１２４を備える。【選択図】図３
2007047884.tif 000002
【特許請求の範囲】
【請求項１】
個別のパラメータ毎に、１以上の検査項目に対する検査の要否を対応付けて記憶する設定ファイルと、
所定の攻撃に対する検査等を行う検査プログラムを、検査項目毎にそれぞれ記憶するライブラリと、
Ｗｅｂアプリケーションにリクエストが入力されたとき、前記設定ファイルを参照して、前記リクエストの引数として渡されるパラメータに基づいて、検査を要する検査項目を特定し、当該特定した検査項目の検査プログラムを前記ライブラリから呼び出して実行する入力値検査手段と、
を備えることを特徴とする情報処理システム。
【請求項２】
請求項１に記載の情報処理システムにおいて、
前記検査プログラムは、前記リクエストの引数として渡されるパラメータが、所定の文字または文字列を含んでいるか否かを検出する機能と、
パラメータが所定の文字または文字列を含んでいることを検出した場合には、当該文字または文字列を別の文字または文字列に置換する処理、または、エラー処理を実行する機能と、
を備えることを特徴とする情報処理システム。
【請求項３】
請求項１又は２のいずれかに記載の情報処理システムにおいて、
前記検査項目は、ＵＲＬで使用が許可されない文字を使用しているかどうかの検査、ＯＳコマンドインジェクションの検査、ディレクトリトラバーサルの検査、ＳＱＬインジェクションの検査、またはクロスサイトスクリプティングの検査、のいずれかを含む
ことを特徴とする情報処理システム。
【請求項４】
請求項３に記載の情報処理システムにおいて、
前記入力値検査手段は、ＯＳコマンドインジェクションの検査を、他の検査よりも後に行うよう制御される
ことを特徴とする情報処理システム。
【請求項５】
請求項１乃至４のいずれかに記載の情報処理システムにおいて、
前記設定ファイルはさらに、パラメータ毎に、入力を許可する書式のルールを記憶可能に構成され、
前記入力値検査手段は、前記設定ファイルに入力を許可する書式のルールが記憶されていれば前記ルールを参照して、前記リクエストの引数として渡されるパラメータが前記ルールを満たす場合には、当該パラメータを受け入れる
ことを特徴とする情報処理システム。
【請求項６】
請求項１乃至５のいずれかに記載の情報処理システムにおいて、
前記設定ファイルの設定内容に基づいて、Ｗｅｂアプリケーションの脆弱性を判定する
ことを特徴とする情報処理システム。
【請求項７】
個別のパラメータ毎に、１以上の検査項目に対する検査の要否を対応付けて記憶する設定ファイルと、
所定の攻撃に対する検査等を行う検査プログラムを、検査項目毎にそれぞれ記憶するライブラリと、を備える情報処理システムにおいて、Ｗｅｂアプリケーションに入力されるリクエストの検査を行う情報処理方法であって、
Ｗｅｂアプリケーションにリクエストが入力されたとき、前記設定ファイルを参照して、前記リクエストの引数として渡されるパラメータに基づいて、検査を要する検査項目を特定するステップと、
前記特定した検査項目の検査プログラムを前記ライブラリから呼び出して実行するステップと、
を備えることを特徴とする情報処理方法。
【請求項８】
請求項７に記載の情報処理方法において、
前記ライブラリは、少なくとも、ＯＳコマンドインジェクションの検査を行う検査プログラムを備え、
検査プログラムを前記ライブラリから呼び出して実行するにあたり、ＯＳコマンドインジェクションの検査プログラムを、他の検査プログラムよりも後に実行するように制御される
ことを特徴とする情報処理方法。
【請求項９】
請求項７又は８のいずれかに記載の情報処理方法をコンピュータに実行させるためのプログラム。
【請求項１０】
請求項９に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信回線を通じてコンピュータに不正に侵入する行為に対するセキュリティ処理を施すための情報処理システムに関し、特に、Ｗｅｂアプリケーションの脆弱性に対して対策を施すための技術に関する。
【背景技術】
【０００２】
従来より、他人のユーザＩＤやパスワードなどを使って、本来自分が利用する権限を持っていないコンピュータを不正に使用したり、ＯＳやアプリケーションソフトなどに存在するセキュリティ上の脆弱性（セキュリティホール）を攻撃してコンピュータに不正に侵入したりする行為が、不正アクセス行為として知られていた。このような不正アクセス行為により、保存しているデータやプログラムが改ざんされたり、コンピュータが利用不能な状態に追い込まれたりするといった被害がしばしば生じていた。近年では特に、Ｗｅｂアプリケーションの脆弱性が狙われる事件が頻繁に起きていて、顧客名簿等の個人情報の流出が社会的にも問題となっている。
【０００３】
Ｗｅｂアプリケーションの脆弱性に対する攻撃としては、いくつかの手法が知られている。主な攻撃手法として、例えば、クロスサイトスクリプティング、ディレクトリトラバーサル、ＯＳコマンドインジェクション、ＳＱＬインジェクション等が知られている。従来のファイアウォールは、ＩＰアドレスやポートレベルでのフィルタリングに限定されるため、上述のＨＴＴＰレベルの攻撃に対しては、基本的に防御できない。そこで、Ｗｅｂアプリケーションの脆弱性に対する攻撃を防御するためには、従来のファイアウォール等とは別にセキュリティ対策を講じる必要があり、主に以下の２つの対策が採られていた。
【０００４】
１つは、Ｗｅｂアプリケーション毎の個別対策、すなわち、Ｗｅｂアプリケーションそのものにセキュリティチェック機能の作り込みを行うことである。Ｗｅｂアプリケーションはユーザが独自に作ることが多いため、Ｗｅｂアプリケーションの開発段階で、上記攻撃を防御または阻止するようにＷｅｂアプリケーションを作りこめばよい。
【０００５】
もう１つは、Ｗｅｂアプリケーションファイアウォールの導入による一括対策である。Ｗｅｂアプリケーションファイアウォールは、アプリケーションレベルで動作するため、ＨＴＴＰ等の内容を見て不正なアクセスと判定した場合には、そのリクエストまたはレスポンスをＷｅｂサーバに渡す前に拒否することが可能となる。このようなＷｅｂアプリケーションファイアウォールとして、例えば、ｍｏｄ＿ｓｅｃｕｒｉｔｙが知られている（非特許文献１）。ｍｏｄ＿ｓｅｃｕｒｉｔｙは、リクエストの中に設定登録したキーワードが含まれているかどうかを判断するものであり、ＧＥＴやＰＯＳＴなどのリクエストに対してフィルタリングを行う機能などを有している。
【非特許文献１】ｍｏｄｓｅｃｕｒｉｔｙ、インターネット、＜ＵＲＬ：http://www.modsecurity.org/＞
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで、Ｗｅｂアプリケーション毎に個別対策をするためには、Ｗｅｂアプリケーションの開発者自身がセキュリティに対する高度の専門知識を持つことが要求されるが、そのような専門知識を開発者が持ち、またフォローアップすることは困難であった。また、専門知識を有していたとしても、ちょっとしたミスや見落としによって、Ｗｅｂアプリケーションに脆弱性が作り込まれてしまうことがあった。さらに、開発段階で脆弱性に気付いていても、納期や予算の関係等で、そのままの状態で運用せざるを得ないこともある。
【０００７】
一方、ｍｏｄ＿ｓｅｃｕｒｉｔｙなどのＷｅｂアプリケーションファイアウォールを導入する場合、複数のＷｅｂアプリケーションの全てのリクエストに適用される最大公約数的な一律な対策を取ることはできるが、個々のＷｅｂアプリケーションの個別のパラメータ毎にきめ細かく検査項目を設定することはできなかった。そのため、きめ細かく個別にセキュリティチェックしようとすると、Ｗｅｂアプリケーションファイアウォールのみに頼るのでなく、結局、Ｗｅｂアプリケーション毎に作り込みを行わざるを得なかった。
【０００８】
本発明は、かかる実情に鑑み、Ｗｅｂアプリケーションの脆弱性対策として必要な処理をライブラリとして提供することを目的としている。特に、個々のＷｅｂアプリケーションの個別のパラメータ毎にきめ細かく検査項目を設定可能なツールを提供しようとするものである。
【課題を解決するための手段】
【０００９】
上記課題を解決するため、本発明の情報処理システムは、個別のパラメータ毎に、１以上の検査項目に対する検査の要否を対応付けて記憶する設定ファイルと、所定の攻撃に対する検査等を行う検査プログラムを、検査項目毎にそれぞれ記憶するライブラリと、Ｗｅｂアプリケーションにリクエストが入力されたとき、上記設定ファイルを参照して、上記リクエストの引数として渡されるパラメータに基づいて、検査を要する検査項目を特定し、当該特定した検査項目の検査プログラムを上記ライブラリから呼び出して実行する入力値検査手段と、を備える。かかる発明によれば、Ｗｅｂアプリケーションの脆弱性対策をパラメータ毎に容易かつ効率的に行うことができる。
【００１０】
また、上記情報処理システムにおいて、上記検査プログラムは、上記リクエストの引数として渡されるパラメータが、所定の文字または文字列を含んでいるか否かを検出する機能と、パラメータが所定の文字または文字列を含んでいることを検出した場合には、当該文字または文字列を別の文字または文字列に置換（サニタイズ）する処理、または、エラー処理を実行する機能と、を備える。かかる発明によれば、Ｗｅｂアプリケーションの脆弱性対策として、サニタイズ又はエラー処理を行うことが可能となる。
【００１１】
さらに、上記情報処理システムにおいて、上記検査項目は、ＵＲＬで使用が許可されない文字を使用しているかどうかの検査、ＯＳコマンドインジェクションの検査、ディレクトリトラバーサルの検査、ＳＱＬインジェクションの検査、またはクロスサイトスクリプティングの検査、のいずれかを含むことを特徴とする。かかる発明によれば、公知の攻撃に対して、Ｗｅｂアプリケーションの脆弱性対策を容易かつ効率的に行うことができる。
【００１２】
好適には、上記情報処理システムにおいて、上記入力値検査手段は、ＯＳコマンドインジェクションの検査を、他の検査よりも後に行うように制御されることを特徴とする。かかる発明によれば、Ｗｅｂアプリケーションの脆弱性対策処理を効率的に実行することが可能となる。
【００１３】
また、上記情報処理システムにおいて、上記設定ファイルはさらに、パラメータ毎に、入力を許可する書式のルールを記憶可能に構成され、上記入力値検査手段は、上記設定ファイルに入力を許可する書式のルールが記憶されていれば上記ルールを参照して、上記受信手段により受信した入力の引数として渡されるパラメータが上記書式のルールを満たす場合には、エラーと判定しないで、当該パラメータを受け入れることを特徴とする。かかる発明は、例外的に入力を許可したい場合に有効である。
【００１４】
さらに、上記情報処理システムにおいて、上記設定ファイルの設定内容に基づいて、Ｗｅｂアプリケーションの脆弱性を判定することを特徴とする。かかる発明によれば、設定ファイルを使用するのみで、Ｗｅｂアプリケーションのセキュリティ対策の程度を把握することが可能となる。
【００１５】
また、個別のパラメータ毎に、１以上の検査項目に対する検査の要否を対応付けて記憶する設定ファイルと、所定の攻撃に対する検査等を行う検査プログラムを、検査項目毎にそれぞれ記憶するライブラリと、を備える情報処理システムにおいて、Ｗｅｂアプリケーションに入力されるリクエストの検査を行う情報処理方法であって、Ｗｅｂアプリケーションにリクエストが入力されたとき、上記設定ファイルを参照して、上記リクエストの引数として渡されるパラメータに基づいて、検査を要する検査項目を特定するステップと、上記特定した検査項目の検査プログラムを上記ライブラリから呼び出して実行するステップと、を備える。
【００１６】
さらに好適には、上記情報処理方法において、上記ライブラリは、少なくとも、ＯＳコマンドインジェクションの検査を行う検査プログラムを備え、検査プログラムを上記ライブラリから呼び出して実行するにあたり、ＯＳコマンドインジェクションの検査プログラムを、他の検査プログラムよりも後に実行するように制御されることを特徴とする情報処理方法。
【００１７】
本発明のプログラムは、本発明の情報処理方法の各ステップをコンピュータに実行させることを特徴とする。本発明のプログラムは、ＣＤ−ＲＯＭ等の光学ディスク、磁気ディスク、半導体メモリなどの各種の記録媒体を通じて、又は通信ネットワークなどを介してダウンロードすることにより、コンピュータにインストール又はロードすることができる。
【００１８】
なお、本明細書等において、手段とは、単に物理的手段を意味するものではなく、その手段が有する機能をソフトウェアによって実現する場合も含む。また、１つの手段が有する機能が２つ以上の物理的手段により実現されても、２つ以上の手段の機能が１つの物理的手段により実現されてもよい。
【００１９】
なお、本明細書等において、Ｗｅｂアプリケーションとは、Ｗｅｂブラウザからのリクエストに応じてプログラムを実行し、結果をクライアントに送信するアプリケーションのことをいう。例えば、ＣＧＩ（Common Gateway Interface）を使用して、Ｗｅｂブラウザからの要求に応じて、動的にページを生成する機能や、データベースと連携したトランザクション処理を行う機能などを有する。また、リクエストとは、Ｗｅｂアプリケーションに対して所定の処理等を要求することをいう。
【発明の効果】
【００２０】
本発明によれば、Ｗｅｂアプリケーションの脆弱性対策として必要な処理をライブラリとして提供し、特に、個々のＷｅｂアプリケーションの個別のパラメータ毎にきめ細かく検査項目を設定可能なツールを提供することが可能となる。また、本ツールを使用することによって、Ｗｅｂアプリケーション開発の工数およびコストを削減することができるという優れた効果を奏し得る。
【発明を実施するための最良の形態】
【００２１】
以下、本情報処理システムの実施の形態について図面を参照しつつ説明する。
【００２２】
図１は、本実施形態に係る情報処理システムの概略構成を示す図である。図１に示すように、本情報処理システム１０は、クライアント端末２０と所定のネットワーク（インターネット等のネットワーク）３０を介して相互に接続されることにより構成される。
【００２３】
情報処理システム１０は、１以上のコンピュータがＬＡＮで接続されて構成され、例えば、Ｗｅｂ情報を送信するＷｅｂサーバ１２、Ｗｅｂアプリケーションを実行するＷｅｂアプリケーションサーバ１４、データベースを操作するデータベースサーバ１６、およびファイアウォール１８を備える。ここで、Ｗｅｂサーバ１２は、Ｗｅｂブラウザなどのクライアントソフトウェアの要求に応じて、インターネットなどのネットワークを通じて、ＨＴＭＬ文書や画像、Ｗｅｂアプリケーションによる処理結果等を送信する機能を有するコンピュータ又はソフトウェアである。Ｗｅｂアプリケーションサーバ１４とは、Ｗｅｂアプリケーションを実行して各種の業務処理を行う機能を有するコンピュータ又はソフトウェアである。また、データベースサーバ１６とは、リクエストに応じてデータベースに蓄積された情報を検索・出力する機能を有するコンピュータ又はソフトウェアである。ファイアウォール１８とは、ＩＰアドレスやポートレベルでのフィルタリングを行うコンピュータ又はソフトウェアである。
【００２４】
Ｗｅｂサーバ１２、Ｗｅｂアプリケーションサーバ１４、およびデータベースサーバ１５は、単一のコンピュータより構成されるものであっても、ＬＡＮで接続された複数のコンピュータより構成されるものであってもよい。また、単一のコンピュータが複数のサーバ機能を備えてもよい。
【００２５】
クライアント端末２０は、情報処理システム１０との間で通信を行って、各種の情報を送受信するための端末装置であり、好適には、Ｗｅｂページをブラウジングする機能を備えている。例えば、情報処理システム１０のＷｅｂサーバ１２に情報を要求（リクエスト）したり、Ｗｅｂサーバ１２またはＷｅｂアプリケーションサーバ１４の提供する情報を受信して表示したりする。クライアント端末２０は、いわゆるパーソナルコンピュータ等、汎用のコンピュータや携帯端末装置を適用することができるが、情報処理システム１０との間で通信を行って情報を送受信できるものであればよい。
【００２６】
ネットワーク３０は、情報処理システム１０とクライアント端末２０との間で情報を送受信するための通信回線である。例えば、ＬＡＮ、インターネット、専用線、パケット通信網、電話回線、企業内ネットワーク、その他の通信回線、それらの組み合わせ等のいずれであってもよく、有線、無線の両方を含むものである。
【００２７】
図２は情報処理システム１０の備えるコンピュータの概略構成を示すブロック図である。情報処理システム１０の備えるコンピュータは、図２に示すようなＣＰＵ１０１、ＲＯＭやＲＡＭ等のメモリ１０２、各種の情報を格納する外部記憶装置１０３、入力インタフェース１０４、出力インタフェース１０５、通信インタフェース１０６及びこれらを結ぶバス１０７を備える汎用のコンピュータを適用することができる。
【００２８】
図３は、本実施形態の情報処理システム１０の機能構成を示したブロック図である。図３に示すように、情報処理システム１０は、本実施形態における主な構成として、ネットワーク３０と接続され、クライアント端末２０との間でデータ通信を行うための通信部１１０と、Ｗｅｂアプリケーション１２０と、各種情報を記憶するための記憶部１３０とを備える。
【００２９】
Ｗｅｂアプリケーション１２０は、設定ファイル１３２の格納先、ライブラリ１３４へのパス、エラー情報の出力先等を設定するための初期化処理手段１２２と、Ｗｅｂアプリケーションへのリクエストの引数として渡されるパラメータに基づいて、必要な検査項目を特定し、当該特定した検査項目に係る検査プログラムを呼び出してパラメータの検査を行う入力値検査手段１２４と、検査の結果、パラメータに危険な文字または文字列が含まれていると判断された場合に、エラー情報を出力するエラー情報出力手段１２６と、設定ファイル１３２の設定内容に基づいて、セキュリティレベルをレポートするためのセキュリティレベル判定手段１２８とをさらに備える。入力値検査手段１２４は、後述の設定ファイル１３２とライブラリ１３４とを用いてパラメータの検査を行う。なお、これらの各機能手段は、ＣＰＵが、メモリ、外部記憶装置などに記憶された所定のプログラム（本発明の方法を規定したプログラム等）を実行することにより実現される。
【００３０】
記憶部１３０は、各パラメータに対して、検査項目毎に検査を要するか否かを対応付けて記憶する設定ファイル１３２と、所定の攻撃手法に対する検査用のプログラムを記憶するライブラリ１３４とをさらに備える。ライブラリ１３４は、Ｗｅｂアプリケーションの脆弱性の対策を行うためのプログラム（関数）群をまとめたものである。所定の攻撃等に対する検査を示す検査項目毎に、当該検査を行うためのプログラムを備える。そして、検査したい入力パラメータを本ライブラリで提供されるプログラムに渡すと、検査指示に従い危険文字または許可文字のチェック、および所定の攻撃に対しては入力パラメータの無害化（サニタイズ）等を行う。
【００３１】
本実施形態におけるライブラリは、ＵＲＬ使用許可文字のチェック、並びに、ＯＳコマンドインジェクション、ディレクトリトラバーサル、ＳＱＬコマンドインジェクション、及びクロスサイトスクリプティングの各攻撃の検査、という検査項目を実行するためのプログラム群を提供する。各検査プログラムの動作の概略は次のとおりである。すなわち、各検査プログラム毎に、それぞれ危険文字または文字列（以下、文字または文字列をあわせて「文字列」という）が予め設定されている。サニタイズ処理を行う場合には、サニタイズ後の文字列も予め設定される。そして、渡されたパラメータが当該危険文字列と一致するかどうかをパターンマッチングにより検索し、危険文字列と一致する場合、サニタイズ後の文字列が設定されていれば危険文字列の置換処理（サニタイズ処理）を行い、それ以外の場合は、エラー情報を返す。
【００３２】
ＵＲＬ使用許可文字のチェックを行うための検査プログラムは、「｜」、「＜」、「＞」など、ＵＲＬでの使用が許可されない文字を使用していないかどうかをチェックする。使用許可文字以外の文字を検出したときには、エラー情報を返す。なお、本検査項目は、ＵＲＬのパラメータ部が環境変数として設定される「ＱＵＥＲＹ＿ＳＴＲＩＮＧ」と「ＰＡＴＨ＿ＩＮＦＯ」の場合のみ処理対象としてもよい。
【００３３】
ＯＳコマンドインジェクションの検査プログラムは、検査対象パラメータに、ＯＳ用のコマンドとして使用される文字が投入されていた場合にエラー情報を返す。例えば、パラメータに「＆」、「；」、「｜」、「＜」、「＞」などの文字が含まれている場合はエラーと判定する。なお、ＯＳコマンドインジェクションとは、リクエストにＯＳコマンドを混ぜ込み、サーバ上で任意のＯＳコマンドを実行させる攻撃であり、「ｏｐｅｎ（）」、「ｓｙｓｔｅｍ（）」、「ｅｘｅｃ（）」等の危険関数・演算子にパラメータを引数として与えてしまう場合に、セキュリティ上の問題となる。
【００３４】
ディレクトリトラバーサルの検査プログラムは、ＣＧＩ変数をファイルパス名の一部として使用している場合、該当する変数（パラメータ）にこのチェックを行う。「．．／」、「．／」など、外部入力に相対パスが投入されるとエラー情報を返す。
【００３５】
ＳＱＬコマンドインジェクションの検査プログラムは、ＣＧＩ変数をＳＱＬの一部として使用する場合にチェックを行うものであり、禁止文字列を検出すると、自動的にサニタイズを行い、処理を継続する。例えば、「’（シングルクォート）」、「￥（バックスラッシュ）」、「％」などの文字列を検出したとき、それぞれ「’’」、「￥￥」、「￥￥％」に置換するというサニタイズ処理を行う。
【００３６】
クロスサイトスクリプティングの検査プログラムは、クロスサイトスクリプティング攻撃で使用される文字列の有無をチェックするものであり、禁止文字列を検出すると、サニタイズできるものは自動的にサニタイズを行い、処理を継続する。サニタイズできない場合は、エラー情報を返す。例えば、「＜」、「＞」、「”」、「’」、「＆」などのようにＨＴＭＬエンコードでサニタイズできる文字列を検出した場合は、それぞれ「＆ｌｔ；」、「＆ｇｔ；」、「＆＃３９；」、「＆ｑｕｏｔ；」、「＆ａｍｐ；」に置換する。また、例えば、「ｊａｖａｓｃｒｉｐｔ：」、「ａｂｏｕｔ：」などの擬似プロトコルを使う危険文字列を検出した場合、及び、「ｏｎｌｏａｄ」、「ｏｎｃｌｉｃｋ」などの危険なイベントハンドラ文字列を検出した場合は、サニタイズできないためエラー情報を返す。
【００３７】
また、本実施形態におけるライブラリは、入力を許可する文字列のルールを正規表現で設定ファイル１３２に予め設定しておき、渡されたパラメータが当該ルールを満たすかどうかを検出し、入力パラメータが許可文字列のルールを満たす場合は、当該入力パラメータの使用を許可する機能を有するプログラムを備える。これにより、Ｗｅｂアプリケーションの管理者等は、例外的に使用を許可したい文字列等を設定登録することができるため、きめ細かなセキュリティ設定をすることが可能となる。この機能は特に、ライブラリ１３４で予め提供される検査プログラムをそのまま使用するだけでは障害が出てしまうような場合に有効である。
【００３８】
なお、本実施形態のライブラリでは、ＳＱＬコマンドインジェクション及びクロスサイトスクリプティングの各検査プログラムは、自動的にサニタイズして処理を継続するものであるが、サニタイズを行わないで、禁止文字列を検出するとエラー情報を返すものとしてもよい。なお、検出する文字列を全角文字で例示しているが、実際に検出するのは半角文字である。
【００３９】
次に、情報処理システム１０の記憶部１３０が備える設定ファイル１３２のデータ構成について、図４を用いて説明する。
【００４０】
図４は、本実施形態における設定ファイル１３２の構成を示した概略図である。設定ファイル１３２は、各パラメータ毎に、検査項目を設定登録するものである。図４において、「入力許可正規表現」、「ＵＲＬ」、「ＯＳ」、「ＤＴ」、「ＳＱＬ」、「ＸＳＳ」は、それぞれ検査項目名を示している。「入力許可正規表現」とは、入力を許可する文字種別に関する検査項目である。「ＵＲＬ」は、ＵＲＬ使用許可文字のチェックを示す。「ＯＳ」は、ＯＳコマンドインジェクションの検査を示す。「ＤＴ」は、ディレクトリトラバーサルの検査を示す。「ＳＱＬ」は、ＳＱＬインジェクションの検査を示す。「ＸＳＳ」は、クロスサイトスクリプティングの検査を示す。
【００４１】
Ｗｅｂアプリケーションの管理者等は、各パラメータ毎に、検査を要する検査項目を予め個別に設定する。「ＵＲＬ」、「ＯＳ」、「ＤＴ」、「ＳＱＬ」、「ＸＳＳ」の各検査項目については、検査を要する場合は「１」をセットする。「入力許可正規表現」は、入力を許可する文字種別のルールを正規表現で記述する。また、検査を要しない検査項目には「０」をセットする。
【００４２】
図４（ａ）の例では、パラメータ名「ＥＮＱ＿ＦＩＬＥ」に対しては、ＡからＺまでの英字３文字プラス０から９までの数字５文字で記述されていれば入力を許可し、さらに、「ＵＲＬ」、「ＯＳ」、「ＤＴ」、「ＳＱＬ」、「ＸＳＳ」の各検査を行うことを示している。また、パラメータ名「ＰＲＥＳＥＮＴ」に対しては、「ＳＱＬ」の検査のみを行うことを示している。
【００４３】
また、全てのパラメータをまとめて、一律に検査を要する検査項目を設定することもできる。例えば、設定ファイルにおいて、パラメータ名「ＡＬＬＰＡＲＡＭ」を用いた設定は、全てのパラメータに適用されるものとしてもよい。図４の（ｂ）に示す例は、全てのパラメータに対して一律に、「ＵＲＬ」、「ＯＳ」、「ＤＴ」、「ＳＱＬ」、「ＸＳＳ」の各検査を行うことを示している。なお、ＡＬＬＰＡＲＡＭを使用して全てのパラメータに適用される検査項目を設定した上で、更に個別のパラメータについて特有の検査を行いたい場合は、ＡＬＬＰＡＲＡＭを定義した設定ファイルと、個別に検査したいパラメータだけを定義した設定ファイルを別に作成して、ライブラリを二回呼ぶようにしてもよい。これは例えば、ＡＬＬＰＡＲＡＭを用いて、最大公約数的なルールを設定し、あるパラメータのみについて、さらに追加ルールを設定したいような場合に有効である。
【００４４】
なお、図４の例では、テーブル形式で設定ファイルを管理する例を示したが、各パラメータ毎に検査を要する検査項目を個別に設定可能な形式であれば、これに限定されるものではない。
【００４５】
次に、上記のように構成される情報処理システムの動作の概要について説明する。
【００４６】
図５は、本実施形態における情報処理システムによる処理の流れを示すフローチャートである。まず、情報処理システム１０の通信部１１０がクライアント端末２０からＷｅｂアプリケーションに対するリクエストを受け付ける（Ｓ５００）。次に、入力値検査手段１２４は、受信したリクエストからパラメータを抽出する。そして、初期化処理手段１２２の設定に基づいて設定ファイル１３２を参照して、当該パラメータについて、検査を要する検査項目を特定する（Ｓ５１０）。その後、入力検査手段１２４は検査を要する検査項目について検査を実行する（Ｓ５２０〜Ｓ５７０）。
【００４７】
まず、入力許可正規表現のチェックを行う場合、すなわち、設定ファイル１３２の入力許可正規表現に入力を許可する書式のルールが正規表現で設定されている場合は、入力パラメータが当該書式のルールに合致するかどうかをチェックする。合致する場合は、そのまま処理を継続する。一方、合致しない場合はエラー情報を返して、処理を中断・終了する。入力許可正規表現に０がセットされている場合は、入力許可正規表現のチェックを行うことなく処理を継続する（Ｓ５２０）。
【００４８】
次に、入力検査手段１２４は、検査を要する検査項目についてライブラリ１３４の検査プログラムを呼び出して、検査を実行する。ＵＲＬ使用許可文字のチェック（Ｓ５３０）、ディレクトリトラバーサルの検査（Ｓ５４０）、ＳＱＬコマンドインジェクションの検査（Ｓ５５０）、クロスサイトスクリプティングの検査（Ｓ５６０）、ＯＳコマンドインジェクションの検査（Ｓ５７０）を順に行う。ＳＱＬコマンドインジェクションの検査及びクロスサイトスクリプティングの検査では、危険文字列を検出したとき、自動的にサニタイズを行い、処理を継続する。また、各検査を実行してエラー情報が返ってきた場合は処理を中断・終了するが、そうでない場合は、処理を継続する。また、検査を要しない検査項目については、その検査を行うことなく処理を継続する。なお、エラー情報が返ってきた場合に、エラー情報をログに記録してもよい。これにより、エラーの分析が可能となり、分析結果をセキュリティ対策に反映させることができる。また、エラー情報が返ってきた場合に、予め設定した者に対して、電子メールを送付するようにしてもよい。これにより、Ｗｅｂアプリケーションが攻撃を受けた場合に、素早く対策を取ることが可能となる。
【００４９】
ところで、本実施形態では、ＯＳコマンドインジェクションの検査は、サニタイズが必要な検査の後、すなわち、コマンドインジェクションの検査及びクロスサイトスクリプティングの検査の後に行う。そして、ＯＳコマンドインジェクションの検査では、「＆（アンパサント）」や「；（セミコロン）」等を検出するが、サニタイズ後に現れる文字列とパターンマッチングして、検出した文字列がサニタイズ後の文字列であると判定すれば、ＯＳコマンドインジェクション攻撃の危険はない、すなわち、エラーではないと判断し、そのまま処理を継続する。ここで、サニタイズ後に現れる文字列とは、例えば、前述の「＆ｌｔ；」、「＆ｇｔ；」、「＆＃３９；」、「＆ｑｕｏｔ；」、「＆ａｍｐ；」などである。
【００５０】
仮に、ＯＳコマンドインジェクションの検査をサニタイズが必要な検査の前に行ってしまうと、例えば、パラメータに「＆」が含まれる場合、ＯＳコマンドインジェクションの検査の段階で「＆」を検出すると、当該「＆」が以後の検査でサニタイズ可能かどうかに関わらず危険文字列と判断して、エラー情報を返し、処理を中断・終了してしまう。これに対して、ＯＳコマンドインジェクションの検査を、サニタイズが必要な検査の後にもってくると、当初のリクエスト中に「＆」や「；」が存在しても、ＯＳコマンドインジェクションの検査を行う段階で既にサニタイズされている。したがって、ＯＳコマンドインジェクションの検査を行う段階で「＆」や「；」を検出しても、これらがサニタイズ後の文字列（「＆ａｎｐ；」等）であれば、エラーと判断しないで処理を継続すればよい。これにより、エラーによる処理の中断を極力なくしつつ、ＯＳコマンドインジェクション攻撃に対する防御を適切に取ることが可能となる。
【００５１】
なお、検査を行う順番は、処理内容に矛盾を生じない範囲で任意に順番を変更して又は並列に実行することができる。本実施形態では、ＯＳコマンドインジェクションの検査を、サニタイズが必要な検査の後に行うという以外、検査を行う順番は任意に決定可能である。しかしながら、ＯＳコマンドインジェクションの検査以外の検査について、一般的には、発生頻度の高い処理を先に行う方がトータルの処理スピードを早くすることができる。なお、本実施形態の検査順序は、発生頻度を踏まえた検査順序の一例である。
【００５２】
以下、本情報処理システムの機能や動作を実施例に基づいて詳細に説明する。
【実施例１】
【００５３】
図６はＷｅｂアプリケーションに本発明のライブラリを呼び出す処理を組み込んだ場合の概略構成図である。本ライブラリを使用して脆弱性対策を施す場合、Ｗｅｂアプリケーション中に、初期化処理の設定と検査用関数を呼び出すための記述（スクリプト）を挿入する。初期化処理とは、ライブラリへのパス、設定ファイルの格納先、エラー情報格納用配列変数の宣言、検査対象のパラメータの指定等の初期設定を行うものであり、図３の初期化処理手段１２２に対応するものである。また、検査用関数の呼び出しとは、本発明のライブラリを呼び出して検査用関数を実行するためのものであり、図３の入力値検査手段１２４に対応するものである。これにより、Ｗｅｂアプリケーションにリクエストが入力される度ごとに、ライブラリから必要な検査用関数を呼び出して、入力パラメータの検査を行うことが可能となる。
【実施例２】
【００５４】
図７は複数のＷｅｂアプリケーションに本発明のライブラリを呼び出す処理を組み込んだ場合の概略構成図である。本実施例に示すように、Ｗｅｂアプリケーション毎に、異なる設定ファイルを指定することができる。これは、予め複数の設定ファイルを用意しておき、各Ｗｅｂアプリケーションの初期化処理において、それぞれ異なる設定ファイルを指定することにより実現される。これにより、同種のパラメータであっても、Ｗｅｂアプリケーション毎に異なる検査を実行することが可能となる。なお、図７において、初期化処理ａ、ｂ、ｃは、図３の初期化処理手段１２２に対応するものであり、各Ｗｅｂアプリケーションの検査用関数呼び出しとは、図３の入力値検査手段１２４に対応するものである。
【実施例３】
【００５５】
図８はＷｅｂサーバに本発明のライブラリをプラグインした場合の概略構成図である。本実施例では、Ｗｅｂサーバに本発明のライブラリをプラグインして、上記実施例と同様に初期化処理および検査用関数呼び出しの設定をする。なお、これらは図３の初期化処理手段１２２および入力値検査手段１２４に対応するものである。これにより、Ｗｅｂサーバにリクエストが入力された場合、Ｗｅｂアプリケーションにリクエストを渡す前に、パラメータの検査を行うことが可能となる。このとき、実施例２と同様に、複数の設定ファイルを備えることで、リクエストが渡されるＷｅｂアプリケーション毎に、異なる検査を実行することが可能となる。なお、本実施例ではＷｅｂサーバにプラグインするものとしたが、Ｗｅｂアプリケーションサーバや、ファイアウォールにプラグインしてもよい。
【実施例４】
【００５６】
本発明における設定ファイルの設定は、各パラメータ及び各検査項目に対するセキュリティチェック状況を示すので、設定ファイルを使用して、ＷｅｂアプリケーションまたはＷｅｂサイトのセキュリティレベル（安全性）を判定することができる。本実施例では、Ｗｅｂサイトのセキュリティレベルを、各検査項目のスコアと検査項目の網羅性によって評価する例を示す。
【００５７】
まず、検査項目ごとにスコアを設定する。例えば、ＵＲＬ使用許可文字のチェックを２点、ディレクトリトラバーサルの検査及びクロスサイトスクリプティングの検査を４点、ＳＱＬコマンドインジェクションの検査およびＯＳコマンドインジェクションの検査を５点、などと設定する。さらに、入力許可正規表現ルールを使用している場合、文字列ごとに与えられた減額スコア分だけ、スコアをマイナスする。例えば、入力許可正規表現で、半角スペースを許可している場合は４点のマイナス、「’」（シングルクォーテーション）を許可している場合は１点のマイナス、などと設定する。次に、設定ファイルでＡＬＬＰＡＲＡＭ（全パラメータについて一律に適用される設定）を使用している場合は、網羅性スコアを２、ＡＬＬＰＡＲＡＭを使用していない場合は、網羅性スコアを１とする。そして、数１式によりセキュリティレベルを算出する。
セキュリティレベル
＝網羅性スコア×（検査項目ごとのスコアの和−減額スコア）の平均値 (数１)
【００５８】
例えば、設定ファイルでＡＬＬＰＡＲＡＭを使用し、全検査項目に１をセットした場合、数２式に示すように、セキュリティレベルは満点の４０点となる。
２×｛５＋５＋４＋４＋２｝＝４０ (数２)
【００５９】
パラメータＡにＳＱＬとＯＳを除く検査項目に１をセットし、入力許可正規表現で半角スペースを許可して、パラメータＢの全検査項目に１をセットした場合、数３式に示すように、セキュリティレベルは１３点となる。
１×｛（０＋０＋４＋４＋２−４）＋（５＋５＋４＋４＋２）｝÷２＝１３ (数３)
【００６０】
このように、設定ファイルを使用してセキュリティレベルを算出することができるため、Ｗｅｂサイトの管理者等は、算出されたセキュリティレベルのスコアによって、自己の管理するＷｅｂサイトの安全性を容易に把握することが可能となる。なお、スコアの設定はセキュリティポリシー等に応じて設定可能である。
【００６１】
なお、本発明の情報処理システムは、上記した実施の形態または実施例に限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得るものである。
【図面の簡単な説明】
【００６２】
【図１】本実施形態に係る情報処理システムの概略構成を示す図である。
【図２】情報処理システムの備えるコンピュータの概略構成を示すブロック図である。
【図３】情報処理システムの機能構成を示したブロック図である。
【図４】設定ファイルの構成を示した概略図である。
【図５】情報処理システムの処理の流れを示すフローチャートである。
【図６】Ｗｅｂアプリケーションに本ライブラリを組み込んだ概略図である。
【図７】複数のＷｅｂアプリケーションに本ライブラリを組み込んだ概略図である。
【図８】Ｗｅｂサーバに本ライブラリをプラグインした場合の概略図である。
【符号の説明】
【００６３】
１０  情報処理システム
２０  クライアント端末
３０  ネットワーク
【図１】
2007047884.tif 000003
【図２】
2007047884.tif 000004
【図３】
2007047884.tif 000005
【図４】
2007047884.tif 000006
【図５】
2007047884.tif 000007
【図６】
2007047884.tif 000008
【図７】
2007047884.tif 000009
【図８】
2007047884.tif 000010