セキュリティサーバシステム
【課題】処理能力を向上したセキュリティサーバシステムを提供すること。
【解決手段】ネットワークを介して送られる要求に応じてコンテンツを提供する第1のサーバシステムと、第1のサーバシステムよりもネットワークを経由した攻撃に対する強度が強く、ネットワークを介して送られる要求に応じてコンテンツを提供する第2のサーバシステムと、ネットワークを介して提供するコンテンツを受け付ける受付部と、ネットワークを経由した攻撃の影響を受け得るコンテンツ内容を示す脆弱情報を含む判定テーブルと、脆弱情報に基づき、受付部が受け付けたコンテンツについてネットワークを経由した攻撃に対する脆弱性の有無を判定する判定部と、判定部の判定結果に応じて、受付部が受け付けたコンテンツを提供候補として第1のサーバシステムまたは第2のサーバシステムのいずれかに格納するファイル制御部と、を具備する。
【解決手段】ネットワークを介して送られる要求に応じてコンテンツを提供する第1のサーバシステムと、第1のサーバシステムよりもネットワークを経由した攻撃に対する強度が強く、ネットワークを介して送られる要求に応じてコンテンツを提供する第2のサーバシステムと、ネットワークを介して提供するコンテンツを受け付ける受付部と、ネットワークを経由した攻撃の影響を受け得るコンテンツ内容を示す脆弱情報を含む判定テーブルと、脆弱情報に基づき、受付部が受け付けたコンテンツについてネットワークを経由した攻撃に対する脆弱性の有無を判定する判定部と、判定部の判定結果に応じて、受付部が受け付けたコンテンツを提供候補として第1のサーバシステムまたは第2のサーバシステムのいずれかに格納するファイル制御部と、を具備する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ネットワーク上でサービスを提供するサーバを攻撃から保護するセキュリティサーバシステムに関する。
【背景技術】
【0002】
インターネット上でサービスを提供するサーバに対して、インターネット経由の様々な攻撃が発生している。例えば、攻撃者がサーバに対し本来とは異なる方法を用いてアクセスすることでサーバ上の情報を詐取する攻撃や、正当なユーザが攻撃者に騙された結果、当該ユーザのアクセスを攻撃者の準備したサーバを通じて脆弱性を有するサーバに誘導する攻撃などが知られている。
【0003】
アプリケーションの脆弱性をついた攻撃としては、例えば、WEBサーバに対するクロスサイトスクリプティング、クロスサイトリクエストフォージェリや、WEBサーバとSQLサーバに対するSQLインジェクションなどがある。SQLインジェクションは、アプリケーションのセキュリティ上の不備を意図的に利用し、アプリケーションが想定しないSQL文を実行させることにより、データベースシステムを不正に操作するものである。この攻撃に成功すると、攻撃者によるデータの詐取・改竄・削除が可能になってしまう。
【0004】
ネットワークを経由した攻撃を防御する技術としては、アクセスが違法または有害であるか否かを判定し、有害なオペレーション要求の実行を防止する方法が提案されている(特許文献1)。またアプリケーションに対するDoS/DDoS攻撃から防御するため、トラヒック量などの情報を基に攻撃を検知し、攻撃トラヒックのレートを制御しフィルタリングすることが提案されている(特許文献2)。
【0005】
さらに、ネットワークからの全てのアクセスについて防御装置を経由させることで、ネットワークを経由した攻撃からサーバのアプリケーションを防御するセキュリティサーバシステム(アプリケーションセキュリティシステム)も知られている。事前の対応としては、ソースコード等に起因するアプリケーションの脆弱性診断をあらかじめ行って脆弱性を発見しておき、当該アプリケーションの脆弱な要素を手作業で除去することが一般に行われている。
【0006】
全てのアクセスについて防御装置を経由させる従来のシステムでは、トラヒックの増加に伴って当該防御装置の処理能力を超えることがあった。特に、複数のサーバを一括して防御処理する場合、サーバ自体の脆弱性やサーバにより提供されるコンテンツ等のサービスの脆弱性の有無に関わらず全てのアクセスが防御装置を通過するため、サーバへのアクセスの増加に伴って防御装置の処理能力を超えやすい。
【0007】
一方、脆弱性診断により発見した脆弱性を人手で改修する場合、アプリケーションのソースコード等の改修に膨大な時間と労力が必要となる。特に、脆弱性の改修にはセキュアプログラミングに係る知識と経験を有する人員が必要となるため、サーバ運営者の負担が大きくなる問題があった。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特表2004−533676公報
【特許文献2】特開2006−60599公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
このように、従来のセキュリティサーバシステムでは、サーバへのアクセスの増加により処理能力を超えやすいという問題がある。また、人手により脆弱性を改修するにも限界がある。
【0010】
本発明は、かかる課題を解決するためになされたもので、処理能力を向上したセキュリティサーバシステムを提供することを目的としている。
【課題を解決するための手段】
【0011】
上記課題を解決するため、本発明の一つの実施形態に係るセキュリティサーバシステムは、ネットワークを介して送られる要求に応じてコンテンツを提供する第1のサーバシステムと、第1のサーバシステムよりもネットワークを経由した攻撃に対する強度が強く、ネットワークを介して送られる要求に応じてコンテンツを提供する第2のサーバシステムと、ネットワークを介して提供するコンテンツを受け付ける受付部と、ネットワークを経由した攻撃の影響を受け得るコンテンツ内容を示す脆弱情報を含む判定テーブルと、脆弱情報に基づき、受付部が受け付けたコンテンツについてネットワークを経由した攻撃に対する脆弱性の有無を判定する判定部と、判定部の判定結果に応じて、受付部が受け付けたコンテンツを提供候補として第1のサーバシステムまたは第2のサーバシステムのいずれかに格納するファイル制御部と、を具備することを特徴としている。
【発明の効果】
【0012】
本発明によれば、処理能力を向上したセキュリティサーバシステムを提供することができる。
【図面の簡単な説明】
【0013】
【図1】第1の実施形態に係るセキュリティサーバシステムの構成を示すブロック図である。
【図2】第1の実施形態に係るセキュリティサーバシステムの構成を詳細に示すブロック図である。
【図3A】第1の実施形態に係る防御部(リバースプロキシ)の機能構成を示す概念図である。
【図3B】一般的なルータの機能構成を示す概念図である。
【図4】第1の実施形態に係るセキュリティサーバシステムの動作を示すフローチャートである。
【図5】第2の実施形態に係るセキュリティサーバシステムの構成を示すブロック図である。
【図6】第2の実施形態に係るセキュリティサーバシステムの構成を詳細に示すブロック図である。
【図7】第2の実施形態に係るセキュリティサーバシステムの動作を示すフローチャートである。
【図8】第3の実施形態に係るセキュリティサーバシステムの構成を示すブロック図である。
【図9】第4の実施形態に係るセキュリティサーバシステムの構成を示すブロック図である。
【発明を実施するための形態】
【0014】
(第1の実施形態)
以下、本発明の実施の形態を、図面を参照して詳細に説明する。実施形態に係るセキュリティサーバシステムは、インターネットなどのネットワークに接続されたサーバを、当該ネットワークを経由した攻撃から防御する機能を有している。より具体的には、外部ネットワークに直接接続されたサーバと、外部ネットワークと防御手段を介して接続されたサーバとを備え、外部からの攻撃に対する脆弱性の有無に応じて提供するコンテンツを各サーバに振り分けてアップロード可能としている。
【0015】
図1に示すように、第1の実施形態に係るセキュリティサーバシステム1は、第1サーバ10および第2サーバ20を備えている。第1サーバ10および第2サーバ20には、それぞれ第1記憶部12および第2記憶部22が接続されている。第1サーバ10は、ネットワーク40と直接接続されており、第2サーバ20は、ネットワーク40と防御部24を介して接続されている。さらに、この実施形態に係るセキュリティサーバシステム1は、ファイル受付部30、脆弱性判定部32、判定テーブル34を備えている。
【0016】
第1サーバ10は、例えばWebサーバのように、ネットワークを介して電子ファイル群からなるコンテンツを提供する。第1記憶部12は、例えばハードディスクドライブなどであり、第1サーバ10が提供するコンテンツなどを記憶する。すなわち、第1サーバ10および第1記憶部12は、協働してサーバシステムとして機能する。第2サーバ20および第2記憶部22は、それぞれ第1サーバ10および第1記憶部12と対応し、共通する機能を有している。すなわち、この実施形態のセキュリティサーバシステムでは、共通する機能をもつサーバシステムを二以上有している。第1サーバ10および第2サーバ20は、例えばUNIX(登録商標)などのネットワークOS上で動作するサーバアプリケーションにより実現することができる。
【0017】
防御部24は、ネットワーク40から第2サーバ20への全てのアクセスを検査し、不正なアクセスやサーバなどの脆弱性に対する攻撃から第2サーバ20を防御する機能を有する。防御部24は、受け取ったトラヒックを一旦物理層からアプリケーション層まで解釈してデータを取り出し、取り出されたデータが第2サーバ20などを攻撃する可能性があるかチェックする。防御部24は、チェックの結果攻撃可能性がなければ、当該データを再びアプリケーション層から物理層まで変換して第2サーバ20へ送り、攻撃可能性があれば、当該データを無害化するか破棄することで第2サーバ20を保護する。
【0018】
すなわち、このシステムは、直接ネットワーク40と接続された第1サーバ10、および、ネットワーク40との間に防御部24を備えてトラヒックによる処理負担の増加よりも安全性を優先した第2サーバ20を有している。
【0019】
ファイル受付部30は、第1サーバ10または第2サーバ20がネットワーク40を介してクライアント42a・42bへ提供するコンテンツを受け入れる。ここで、第1サーバ10や第2サーバ20が提供するコンテンツは、テキストファイルや画像ファイルなどの電子ファイルにより構成されるから、ファイル受付部30は、例えばハードディスクドライブ上に構成されたディレクトリ(あるいはフォルダ)などにより実現される。
なお、以下の説明において、コンテンツは、脆弱性のない「ページ」と、脆弱性を含みうる「プログラム」とから構成されるものとする。コンテンツは、ページのみから構成されてもよく、この場合コンテンツには脆弱性はないことになる。一方、コンテンツが「ページ」と「プログラム」とから構成される場合、「プログラム」が脆弱性を含むか否かにより、コンテンツが脆弱性を有するか否かが左右される。
【0020】
脆弱性判定部32は、ファイル受付部30に格納されたコンテンツ(電子ファイル群)を解析し、ネットワークを介した攻撃に対する脆弱性の有無を判定する機能を有する。併せて、脆弱性判定部32は、判定結果に応じて、ファイル受付部30に格納された電子ファイルを第1記憶部12または第2記憶部22に移動する機能をも有している。脆弱性判定部32は、例えばメモリ上に展開されたコンピュータプログラムとCPUなどの演算装置などにより実現される。
【0021】
判定テーブル34は、脆弱性判定部32が解析や判定に用いる脆弱性情報を記録している。すなわち、脆弱性判定部32は、判定テーブル34に記録された脆弱性情報に基づいて、電子ファイルの解析や脆弱性の有無を判定する。判定テーブル34は、ハードディスクドライブ上に構成されたディレクトリ(あるいはフォルダ)や、メモリなどにより実現される。
【0022】
(第1の実施形態の具体的構成)
続いて、図2を参照して、第1の実施形態に係るセキュリティサーバシステムの構成をより詳細に説明する。図2に示すように、第1サーバ10は、WEBサーバ102、CGI部104、およびデータベースサーバ(DBサーバ)106を有している。同様に、第2サーバ20は、WEBサーバ202、CGI部204、およびDBサーバ206を有している。防御部24は、ファイアウォール242およびリバースプロキシ244を有している。脆弱性判定部32は、テキスト抽出部301、判定部302、リンク整合部303およびファイル格納部304を有している。
【0023】
WEBサーバ102およびWEBサーバ202は、HTTP(HyperText Transfer Protocol)を用いてHTML(HyperText Markup Language)や画像データなどからなるコンテンツをクライアント42a・42bに提供する機能要素である。CGI部104およびCGI部204は、それぞれWEBサーバ102およびWEBサーバ202と協働してプログラムを実行し、その実行結果をクライアント42a・42bに提供する機能要素である。DBサーバ106およびDBサーバ206は、第1記憶部12および第2記憶部22それぞれに記憶されたデータ(データベース)125および225を用いて、検索やソート処理されたデータをクライアント42a・42bに提供する機能要素である。
【0024】
ファイアウォール242は、ネットワーク40からの不正アクセスを防ぐ機能要素である。リバースプロキシ244は、受け取ったトラヒックを物理層からアプリケーション層まで一旦解析してデータを取り出し、取り出したデータが攻撃性を有するか否か解析する機能要素である。リバースプロキシ244は、解析した結果データが攻撃性を有する有害なものである場合、無害化処理や廃棄処理を行い、同じく無害のものである場合、取り出したデータを再びアプリケーション層から物理層まで変換して出力する。
【0025】
テキスト抽出部301は、ファイル受付部30が受け取った電子ファイルから所定の文字列等を検索して抽出する機能要素である。判定部302は、テキスト抽出部301による検索結果に基づいて当該受け取った電子ファイルの脆弱性を判定し、脆弱性のあるデータと脆弱性のないデータを区分する。リンク整合部303は、判定部302が区分したデータのうち、脆弱性のあるデータについて、データ内の含まれる他のデータへのジャンプを示すリンクを更新する機能要素である。ファイル格納部304は、判定部302による区分結果に基づいて、電子ファイルを第1サーバ10と接続された第1記憶部12または第2サーバ20と接続された第2記憶部22のいずれかに格納制御する機能要素である。
脆弱性の判定方法の例としては、例えば、ソースコードを解析し、プログラムに入力された文字列が、プログラム中の複数の手続きによって処理加工された後、最終的にプログラムの出力となるまでの処理フローをトレースし、そのトレースの過程で、攻撃によく用いられる危険な文字または文字列をサニタイズして入力から取り除く処理が含まれているか否かにより判断する手法が挙げられる。また、SQLインジェクション等の攻撃を防ぐためSQLで使われる「’」や「%」の他HTMLで使われる「<」や「>」を検知し、一定のルールに従いデータの内容を変えないように変換するエスケープ処理が、判定対象のプログラムにおいて実施されていない場合には、脆弱性があると判断することができる。一定のルールとしては、例えば、「&」は「&amp」に、「<」は「&lt」に、「>」は「&gt」に、「’」は「&#039」に、「”」は「&quot」に変換するものが挙げられる。
【0026】
(第1サーバ/第2サーバの動作と外部からの攻撃)
ここで、第1サーバ10および第2サーバ20の基本動作を説明する。以下の説明では、脆弱性のないページaのみからなるコンテンツA、脆弱性のないページbと脆弱性のないプログラムb1と脆弱性のあるプログラムb2とからなるコンテンツB、および、脆弱性のないページcと脆弱性のあるプログラムcとからなるコンテンツCをネットワーク上で提供するものとする。
【0027】
まず、ネットワークを介してサービスを提供するアプリケーションの例としてWEB()サービスの例を説明する。
【0028】
図1および図2に示すように、第1サーバ10におけるWEBサーバ102は、ネットワーク40を介して、当該ネットワーク40に接続したクライアント42a・42bに対してサービスを提供する。WEBサーバ102に接続された第1記憶部12は、クライアント42a等に提供するページとしてページa121などを保持している。また、WEBサーバ102は、CGI部104と協働して第1記憶部12に格納されたプログラムb1などを走らせる。ここで、ページa121やプログラムb1・122bなどの電子ファイルは、単一の電子ファイルではなく、複数の電子ファイルからなる電子ファイル群として構成されてもよい。
【0029】
クライアント42aが閲覧したいページのURLを明示して第1サーバ10に閲覧要求を行うと、WEBサーバ102は、その閲覧要求に含まれたURLが、WEBサーバ102の直接の配下のページであれば、そのページをクライアント42aに提供する。一方、URLの指し示すページがWEBサーバ102の直接の配下ではなく、例えばプログラムb1・122bのようにCGI部104を経由してのみアクセス可能なページの場合、WEBサーバ102は、プログラムb1・122bをCGI部104により実行して作成したページファイルをクライアント42aに提供する。
【0030】
プログラムb1・122b等は、CGI部104を構成する言語で実行できるプログラムのソースコードである。したがって、CGI部104を用いることにより、ページa121のような固定的なページだけではなく、クライアント42aからの要求に応じて動的に生成したページを提供することも可能である。すなわち、CGI部104の機能を用いることで、各種のアプリケーションプログラムを作成することが可能になる。同様に、クライアント42aは、CGI部104とプログラムを介することで、DBサーバ106にアクセスすることも可能になる。
【0031】
一般に、ネットワーク40を経由してデータベース106等の情報資源にアクセスする場合、ユーザ認証を行い意図しないユーザが情報資源へアクセスすること防止している。しかし、プログラムなどに脆弱性のあるコマンド等が含まれている場合、ネットワーク40を経由して外部から認証が破られ、データにアクセスされてしまうおそれがある。
【0032】
続いてSQLインジェクション攻撃の例を説明する。WEBサーバ102を経由してDBサーバ106に対して次のようなSQLを発行することを考える。例えば、プログラムに、以下のテキストが含まれているとすると、
SELECT * FROM users WHERE name = '入力値';
アプリケーション開発者は、上記の「入力値」として、例えばクライアント42aが作成した「suzuki」のようなユーザ名が入力されるものと期待する。しかし、悪意ある攻撃者は、例えば、
' OR 't' = 't
という文字列をパラメータ入力値として与える。そうすると、上記テキストは
SELECT * FROM users WHERE name = '' OR 't' = 't';
と展開されてしまう。't' = 't'は常に条件が真であるため、このSQL文では「name」カラムの値にかかわらず、全レコードが選択されることになる。このとき選択されるレコードにはクライアント42aが「suzuki」のユーザ名で登録した全てのデータが含まれる。
【0033】
このようにして、データベースの抽出結果を確認のために画面に表示したりダウンロードしたりするアプリケーションの場合、全てのデータを盗まれてしまうことがあり得る。アプリケーションプログラムの開発者は、「入力値」にユーザ名などのデータの入力を期待するが、悪意ある攻撃者は、「入力値」に全体としてSQLコマンドの一部を構成するような文字列「' OR 't' = 't」を入力し、結果として全レコードを選択することに成功してしまう。
【0034】
そのため、CGIを用いたアプリケーションのプログラミングにおいては、入力値のチェックが欠かせない。例えばユーザ名の入力を期待する場合には、ユーザ名として入力を許容する文字のみを許容し、ユーザ名として使われない「%」や「<」、「>」などの特殊な文字は許容しないようにする。また攻撃によく用いられる危険な文字または文字列が既知であれば、それをサニタイズして入力から取り除くことも効果がある。
【0035】
さらにSQLインジェクション攻撃を防ぐため、SQLで使われる「’」や「%」の他、HTMLで使われる「<」や「>」を検知し、データの内容を変えないように変換するエスケープ処理が行われる。例えば、「<」や「>」は「<」や「>」のように変換される。
【0036】
プログラム中に含まれる可能性のある脆弱性の探索を人手で行うことは、特に大規模なプログラムでは、コストと脆弱性の見落とす可能性から得策ではない。そこで、人手に代わって脆弱性診断ツールを用いてアプリケーションプログラムに含まれる脆弱性を診断することが行われている。脆弱性診断ツールにより発見された脆弱な部分について人手で修正する作業を、脆弱性診断ツールにより脆弱性が発見されなくなるまで繰り返すことで、プログラムを完成させる。
【0037】
しかし、既にサービスが開始されているページでは、サービスを一旦中止して修正プログラムを導入することが困難である。また、大規模なプログラムでは修正に長い時間がかかり、その間脆弱性をもつコンテンツがネットワーク上に曝されることとなる。そこで、この実施形態では、防御部24を導入して脆弱性のあるコンテンツを安全に提供できるようにしている。
【0038】
(防御部24の機能)
サーバに対する攻撃の例と防御部24の機能について詳細に説明する。防御部24は、コンテンツの脆弱性をついた外部からの攻撃を防ぐ。すなわち、防御部24は、CGIプログラム(プログラムcなど)の脆弱性がネットワーク上に露呈しないように、クライアント42aから送られるリクエスト中のパラメータに危険なものが含まれていないかどうか検査する。この検査は、アプリケーション層で行われる。検査の結果、脆弱性を攻撃する可能性がある文字列を発見した場合、防御部24は、当該文字列を無害化するように書換えて後段のサーバに転送するか、転送自体を中止する。
【0039】
ここで、「アプリケーション層」、「物理層」とは、国際標準化機構(ISO)により制定された、異機種間のデータ通信を実現するためのネットワーク構造の設計方針(OSI)に基づいて階層構造に分割した各機能を意味している。すなわち、OSIでは、通信機能を下層から順に物理層(L1)、データリンク層(L2)、ネットワーク層(L3)、トランスポート層(L4)、セッション層(L5)、プレゼンテーション層(L6)、アプリケーション層(L7)の7階層に分けている。インターネットではこのうち下位から2層目のデータリンク層にはイーサネット(登録商標)が、3層目のネットワーク層にはインターネットプロトコル(IP)が、それぞれ用いられることが多い。
【0040】
図3Aは、防御部24の中核をなすリバースプロキシ244の機能構成の例を示している。図3Aに示すように、防御部24におけるリバースプロキシ244は、第1変換部244a、攻撃判定部244b、および第2変換部244cを備えている。
【0041】
第1変換部244aは、物理層(L1)にて受信したパケットをアプリケーション層(L7)まで解釈し元のデータに変換する。攻撃判定部244bは、クライアントから送られてきたデータからパラメータの入力値を取り出し、その文字列に脆弱性を攻撃する可能性の有無を判断し、文字列を無害化するように書換えるか廃棄する。第2判定部244cは、攻撃判定部244bから出力されたデータ(元のデータまたは無害化されたデータ)を再びアプリケーション層(L7)から物理層(L1)まで変換してパケットを出力する。かかる構成を有するリバースプロキシ244は、送られたパケットから元のデータを取り出して攻撃性の有無を判定するので、外部からの攻撃を効果的に防御することができる。
【0042】
一方で、図3Aに示すリバースプロキシ244を備えた防御部24は、全てのパケットを一旦アプリケーション層まで解釈するため、トラヒックのボトルネックとなりやすい。図3Bに示すようなデータリンク層のL2スイッチおよびネットワーク層のL3スイッチをもつルータ245と比較しても、解析処理と変換処理に時間を要するのは明らかである。
【0043】
そこで、実施形態に係るセキュリティサーバシステムでは、防御部24に処理させるトラヒックを、脆弱性を持ったコンテンツへのアクセスのみに絞り込むことで、処理能力を向上させている。
【0044】
(脆弱性判定部の動作)
続いて、図1ないし図4を参照して、この実施形態のセキュリティサーバシステムの動作を説明する。
【0045】
この実施形態に係るセキュリティサーバシステムでは、ユーザは、ネットワーク40を通じてクライアント42a・42bに提供しようとするコンテンツA〜Cの電子ファイル群をファイル受付部30に格納する(ステップS51。以下「S51」のように称する。)。具体的には、ユーザは、所望の電子ファイル群をハードディスク上の所定のフォルダに保存する。
【0046】
ファイル受付部30が電子ファイルを受け取ると、テキスト抽出部301は、判定テーブル34から脆弱性情報を読み出す(S52)。脆弱性情報は、例えば、脆弱性が指摘されている脆弱コマンド341や攻撃性をもつサイトのURLなどの危険アドレス342などを含んでおり、あらかじめ判定テーブル34に格納されている。
【0047】
脆弱性情報を読み出すと、テキスト抽出部301は、当該脆弱性情報を用いて、ファイル受付部30が受け取った電子ファイルから脆弱コマンド341や危険アドレス342と全体または一部が一致したデータを検索・抽出するテキスト抽出処理を実行する(S53)。抽出処理結果は、判定部302に送られる。
【0048】
判定部302は、テキスト抽出部301による抽出処理結果に基づいて、ファイル受付部30が受け取った電子ファイルの脆弱性を判定する(S54)。判定の基準は、サイトの規模やコンテンツの種類に応じて様々に定義することができる。例えば、判定部302は、ファイル受付部30が受け取った電子ファイルに一つでも脆弱コマンド341や危険アドレス342が含まれていた場合に脆弱性ありと判定してもよいし、一定基準以上含まれていた場合に脆弱性ありと判定してもよい。ここでいう「脆弱性」は、外部からの攻撃に対する脆弱性を意味するから、判定部302は、テキスト情報しか含まないHTMLファイルや純粋な画像データなどについては脆弱性なしと判定してもよい。
【0049】
判定の結果、脆弱性が全くない場合(S55のNo)、例えば、判定対象の電子ファイルが安全なHTMLファイルのみからなるコンテンツAのような場合、ファイル格納部304は、ファイル受付部30が受け取った電子ファイルを全て第1記憶部12に格納(移動またはコピー)する。すなわち、安全なコンテンツについては、アクセス速度等を優先して、防御部24を設けていない第1サーバ10が提供するようにする。図2には、判定部302により脆弱性なしと判定されたコンテンツAのページa・121が、ファイル受付部30から第1記憶部12に格納された様子が示されている。
【0050】
判定の結果、脆弱性が発見された場合(S55のYes)、テキスト抽出部301は、判定部302が脆弱性を発見したデータと発見しなかったデータとを区分する。すなわち、テキスト抽出部301は、ファイル受付部30が受け取った電子ファイルのうち脆弱性が発見されたプログラムと発見されなかったプログラムとに区分する。このとき、ファイル受付部30が受け取った電子ファイルの全てに脆弱性が発見された場合(S57のYes)、ファイル格納部304は、当該ファイルを全て第2記憶部22に格納する(S58)。すなわち、構成する全てのプログラムに脆弱性があるコンテンツは、安全性を優先して、プログラムに対する全てのアクセスが防御部24を経由する第2サーバ20により提供されるようにする。図2には、判定部302により脆弱性ありと判定されテキスト抽出部301が全データに脆弱性を発見したコンテンツCのうちプログラムc・123bが、ファイル受付部30から第2記憶部22に格納された様子が示されている。なお、コンテンツCのうちページc・123aは、脆弱性を有さないから、第1記憶部12に格納されている。
【0051】
ファイル受付部30が受け取った電子ファイルが脆弱性が発見されたデータと発見されなかったデータとにより構成される場合(S57のNo)、リンク整合部303は、脆弱性が発見されたデータと発見されなかったデータとの間の関連づけを更新する(S59)。そして、ファイル格納部304は、脆弱性が発見されたデータを第2記憶部22に格納するとともに発見されなかったデータを第1記憶部12に格納する(S60)。リンク整合部303による関連づけの更新は、ファイル受付部30が受け取った電子ファイルが、第1記憶部12および第2記憶部22に分散して格納されることによって発生するリンク切れを解消する。すなわち、脆弱性が発見されなかったデータから脆弱性が発見されたデータへ移動するリンクは、第2サーバ20のアドレス(URL)宛に変更される。同様に、脆弱性が発見されたデータから脆弱性が発見されなかったデータへ移動するリンクは、第1サーバ10のアドレス宛に変更される。これにより、一つのコンテンツが複数に分割して保管・提供されることに起因するリンク切れ等の不具合を防ぐことができる。図2には、脆弱性のないページb・122aおよび脆弱性が発見されなかったプログラムb1・122bが、脆弱性が発見されたプログラムb2・122cと区分され、第1記憶部12および第2記憶部22それぞれに格納された様子が示されている。
【0052】
図4のステップ51からステップ60までを繰り返すことで、クライアント42a・42bに提供されるコンテンツが、外部からの攻撃に対する脆弱性の有無を基準に第1記憶部12および第2記憶部22に振り分けられて格納され、第1サーバ10および第2サーバ20により別個に提供される。
【0053】
例えば、クライアント42aがブラウザアプリケーションを用いてページa121を参照したとすると、参照要求はWEBサーバ102に送られ、WEBサーバ102は、ページa121を第1記憶部12から読み出し、ネットワーク40を介してクライアント40aに送る。一方、クライアント42aが脆弱性のあるプログラムc・123bを実行するページc・123aを参照したり、一部に脆弱性のあるプログラムb2・122cを実行するページbを参照したりすると、参照要求は、ネットワーク40を経由してファイアウォール242へ送られ、次いでリバースプロキシ242を経由してWEBサーバ202に到達する。このとき、クライアント42aからの参照要求が攻撃性を有していても、リバースプロキシ242により無害化または廃棄されるので、WEBサーバ202やCGI部204の脆弱性を攻撃されることはない。
【0054】
WEBサーバ202は、CGI部204が第2記憶部22から読み出したプログラムb2やプログラムcを実行して得たページデータを、ネットワーク40を介してクライアント42aに送る。
【0055】
この実施形態のセキュリティサーバシステムによれば、脆弱性を含むアプリケーションへのアクセスは防御手段を経由して第2サーバに接続され、脆弱性を含まない大多数のアクセスは防御手段を経由することなく直接第1サーバに接続されるから、防御手段のトラヒック負荷を低減することができる。
【0056】
なお、図4に示す例では、テキスト抽出部301は、ファイル受付部30が受け取った電子ファイルのうち脆弱性が発見されたファイル(プログラム)と発見されなかったファイル(プログラム)とに区分し、ファイル格納部304は、区分された当該ファイルを第1記憶部12および第2記憶部22それぞれに格納しているが、これには限定されない。すなわち、ファイル格納部304は、コンテンツを構成するファイル(プログラム)のうち一部でも脆弱性を発見した場合、全てのファイル(ページおよびプログラム)を第2記憶部22に格納してもよい。この場合、テキスト抽出部による抽出漏れ・区分漏れがあった場合でも、脆弱性のあるファイル(プログラム)を確実に第2サーバ20から提供することができる。また、ファイルの区分をせず一括して第1記憶部12または第2記憶部22に格納するので、ファイル受付から第1または第2サーバへの格納を高速に処理することができる。
【0057】
(第2の実施形態)
続いて、本発明の第2の実施の形態を、図面を参照して詳細に説明する。この実施形態に係るセキュリティサーバシステムは、図1および図2に示す第1の実施形態に係るセキュリティサーバシステムの構成の一部を変更したものである。そこで、以下の説明においては、第1の実施形態と共通する要素については同一の符号を付して示し、重複する説明を省略する。
【0058】
図5に示すように、第2の実施形態に係るセキュリティサーバシステム2は、第1サーバ10および第2サーバ20を備えている。第1サーバ10および第2サーバ20には、それぞれ第1記憶部12および第2記憶部22が接続されている。第1サーバ10は、通信経路選択部126を介してネットワーク40と接続されており、第2サーバ20は、防御部24および通信経路選択部126を介してネットワーク40と接続されている。さらに、この実施形態に係るセキュリティサーバシステム2は、ファイル受付部30、脆弱性判定部132、判定テーブル34を備えている。すなわち、第2の実施形態に係るセキュリティサーバシステム2は、第1の実施形態に係るセキュリティサーバシステム1に通信経路選択部126を追加した構成を有している。
【0059】
通信経路選択部126は、ネットワーク40から送られるアクセス要求を、第1サーバ10または第2サーバ20のいずれかに振り分ける機能要素である。通信経路選択部126は、例えばネットワーク機器の一種であるルータにより実現することができる。あるいは、通信経路選択部126の機能をネットワーク40上に設けられるDNS(Domain Name System)を利用することによっても実現可能である。
【0060】
(第2の実施形態の具体的構成)
次に、図6を参照して、第2の実施形態に係るセキュリティサーバシステムの構成をより詳細に説明する。図6に示すように、脆弱性判定部132は、テキスト抽出部301、判定部302、アドレス処理部403およびファイル格納部304を有している。第2の実施形態の脆弱性判定部132は、第1の実施形態の脆弱性判定部32と比較すると、アドレス処理部403を備える点において相違している。
【0061】
テキスト抽出部301は、受け取った電子ファイルから所定の文字列等を検索して抽出する機能要素である。判定部302は、テキスト抽出部301による検索結果に基づいて当該受け取った電子ファイルの脆弱性を判定し、脆弱性のあるデータと脆弱性のないデータを区分する。アドレス処理部403は、判定部302による判定テーブル34を用いた区分結果に基づいて、ネットワーク40からのアクセスを第1サーバ10または第2サーバ20に振り分けるよう通信経路選択部126に指示する機能要素である。ファイル格納部304は、判定部302による区分結果に基づいて、電子ファイルを第1サーバ10と接続された第1記憶部12または第2サーバ20と接続された第2記憶部22のいずれかに格納する機能要素である。
【0062】
(第2の実施形態の動作)
図5ないし図7を参照して、この実施形態のセキュリティサーバシステムの動作を説明する。以下の説明では、脆弱性のないページaのみからなるコンテンツA、脆弱性のないページbと脆弱性のないプログラムb1と脆弱性のあるプログラムb2とからなるコンテンツB、および、脆弱性のないページcと脆弱性のあるプログラムcとからなるコンテンツCをネットワーク上で提供するものとする。
【0063】
この実施形態に係るセキュリティサーバシステムにおいては、サーバによるサービス提供者は、クライアント42a・42bに提供しようとするコンテンツの電子ファイルを、ファイル受付部30に格納する(ステップS51。以下「S51」のように称する。)。具体的には、ユーザは、所望の電子ファイルをハードディスク上の所定のフォルダに保存する。以下、判定部302によるファイル受付部30が受け取った電子ファイルの脆弱性の判定まで、第1の実施形態と動作は同じである(図7中S52〜S54)
【0064】
判定の結果、脆弱性が全くない場合(S55のNo)、例えば、判定対象の電子ファイルが安全なHTMLファイルのみからなるコンテンツAのような場合、ファイル格納部304は、ファイル受付部30が受け取った電子ファイルを全て第1記憶部12に格納する。すなわち、安全なコンテンツについては、アクセス速度等を優先して、防御部24を設けていない第1サーバ10により提供されるようにする。図6には、判定部302により脆弱性なしと判定されたコンテンツAのページa・121が、ファイル受付部30から第1記憶部12に格納された様子が示されている。
【0065】
判定の結果、脆弱性が発見された場合(S55のYes)、ファイル格納部304は、当該電子ファイルを全て第2記憶部22に格納する(S157)。すなわち、構成するプログラムに脆弱性があるコンテンツは、安全性等を優先して、プログラムに対する全てのアクセスが防御部24を経由する第2サーバ20により提供されるようにする。図6には、判定部302により脆弱性ありと判定されたコンテンツCのうちプログラムc・123bが、ファイル受付部30から第2記憶部22に格納された様子が示されている。
【0066】
ファイル格納部304が電子ファイルの格納を行うと、アドレス処理部403は、第1記憶部12および第2記憶部22それぞれに格納されたコンテンツと、コンテンツを提供する第1サーバ10および第2サーバ20それぞれのアドレス(当該コンテンツを提供するクライアント42a・42bがネットワーク40を介してアクセスするためのアドレス)とを関係付けたアドレス情報を生成し、通信経路選択部126に送る(S158)。通信経路選択部126は、アドレス処理部403から送られたアドレス情報に基づいて、第1記憶部12および第2記憶部22それぞれに格納されたコンテンツと第1サーバ10および第2サーバ20それぞれを示すアドレスとを対応付けて自身のメモリ領域に記憶する。
【0067】
図6のステップ51からステップ158までを繰り返すことで、クライアント42a・42bに提供されるコンテンツが、外部からの脆弱性の有無を基準に第1記憶部12および第2記憶部22に振り分けられて格納されるとともに、振り分けられたコンテンツと第1サーバ10および第2サーバ20それぞれのアドレスとが対応付けられる。
【0068】
例えば、クライアント42aがブラウザアプリケーションを用いてページa・121を参照したとすると、参照要求は、ネットワーク40を介して通信経路選択部126に送られる。通信経路選択部126は、ページa・121を提供するアドレスをメモリ領域に記憶したアドレスから選択し、当該参照要求をWEBサーバ102に送る。WEBサーバ102は、ページa・121を第1記憶部12から読み出し、ネットワーク40を介してクライアント42aに送る。
【0069】
クライアント42aが脆弱性のあるプログラムc・123bを実行するページc・123aを参照すると、参照要求は、ネットワーク40を介して通信経路選択部126に送られる。通信経路選択部126は、プログラムc・123bの実行結果を提供するアドレスをメモリ領域に記憶したアドレスから選択し、当該参照要求をファイアウォール242へ送る。ファイアウォール242に送られた参照要求は、次いでリバースプロキシ242を経由してWEBサーバ202に到達する。このとき、クライアント42aからの参照要求が攻撃性を有していても、リバースプロキシ242により無害化または廃棄されているので、WEBサーバ202やCGI部204の脆弱性が攻撃されることはない。
【0070】
WEBサーバ202は、CGI部204が第2記憶部22から読み出したプログラムcを実行して得たページデータを、ネットワーク40を介してクライアント42aに送る。
【0071】
なお、この例では、通信経路選択部126がルータとして機能するものとして説明したが、これには限定されない。通信経路選択部126の機能をDNSにより実現する場合、クライアント42aからのクエリーをDNSが受けると、クエリーに含まれるURLに応じたページを示すIPアドレスをメモリ領域に記憶したIPアドレスから選択し、クライアント42aに当該アドレスを返し、クライアント42aは、返されたアドレスを用いて参照要求を再度発行すればよい。この場合、DNSは、この実施形態の通信経路選択部126のように直接第1サーバ10や防御部24に接続されている必要はなく、第1サーバ10や防御部24は、第1の実施形態に示したようにネットワーク40と直接接続されることができる。
【0072】
この実施形態のセキュリティサーバシステムによれば、脆弱性を含むアプリケーションへのアクセスは防御手段を介して第2サーバに接続され、脆弱性を含まない大多数のアクセスは防御手段を経由することなく直接第1サーバに接続されるから、防御手段のトラヒック負荷を低減することができる。また、この実施形態のセキュリティサーバシステムによれば、通信経路選択部を備えたので、コンテンツの脆弱性の有無に応じて確実に参照先を指定することができる。
【0073】
なお、第2の実施形態では、コンテンツを構成するファイルの一部のみに脆弱性が存在する場合(ページb、プログラムb1およびb2からなるコンテンツB)の判定をしていないが、これには限定されない。第1の実施形態と同様に、リンク整合部を設けて脆弱性のあるファイルのみを区分して第2記憶部に格納するように構成してもよい。
【0074】
(通信経路選択部の他の動作例1)
コンテンツを構成する電子ファイル群を作成する際、コンテンツを提供するサーバのアドレス(URL)を、例えば「www1.sample.jp」、「www2.sample.co.jp」、「www3.sample.co.jp」のようにあらかじめ複数準備しておく。判定部302が、コンテンツBのプログラムb2やコンテンツCのプログラムcに脆弱性を発見した場合、ファイル格納部304は、コンテンツBあるいはコンテンツCの全てのファイルを第2記憶部22に格納する。併せて、アドレス処理部403は、DNSとしての通信経路選択部126に対し、「www1.sample.jp」が第2サーバ20のIPアドレスとなるように登録する。
【0075】
同様に、判定部302が、コンテンツAのページaあるいはコンテンツBのプログラムb1に脆弱性を発見しなかった場合、ファイル格納部304は、コンテンツAあるいはコンテンツBのうちプログラムb2に関する全てのファイルを第1記憶部12に格納する。併せて、アドレス処理部403は、DNSとしての通信経路選択部126に対し、「www1.sample.jp」が第1サーバ10のIPアドレスとなるように登録する。
【0076】
すなわち、クライアント42a・42bは、インターネット上のDNSの機能により、自動的に第1サーバ10または第2サーバ20のいずれかにアクセスすることが可能となるから、コンテンツをなすページやプログラムに含まれるジャンプ先のURLを書き換えることなく、脆弱性な内容を含むコンテンツのみを第2サーバ20から提供することが可能になる。これは、防御部24の負荷を軽減することにもつながる。
【0077】
(通信経路選択部の他の動作例2)
第1サーバ10および第2サーバ20を仮想的なドメイン(バーチャルドメイン)により1台のサーバで構築する。この場合、内部的に第1サーバ10と第2サーバ20のURLを変更できるから、通信経路選択部126をルータにより構築した場合、脆弱性の有無に応じて第1サーバ10および第2サーバ20のいずれかにアクセスを振り分けることができる。上記動作例1と同様に、コンテンツをなすページやプログラムに含まれるジャンプ先のURLを書き換えることなく、脆弱性な内容を含むコンテンツのみを第2サーバ20から提供することが可能になる。これは、防御部24の負荷を軽減することにもつながる。
【0078】
(第3の実施形態)
次に、図8を参照して、第3の実施形態に係るセキュリティサーバシステムについて詳細に説明する。図8に示すように、この実施形態に係るセキュリティサーバシステムは、図1に示す第1の実施形態に係るセキュリティサーバシステムに、第3サーバ426および脆弱性スキャン部428をさらに備えたものである。そこで、共通する要素については同一の符号を付して示し、重複する説明は省略する。
【0079】
第3サーバ426は、第1サーバ10および第2サーバ20と共通する機能を有するサーバであり、擬似的に第1サーバ10および第2サーバ20の動作を再現させる。第3サーバ426は、判定部302から与えられる擬似参照要求に応じて、ファイル受付部30が受け付けたコンテンツを脆弱性スキャン部428に提供する動作をする。
【0080】
脆弱性スキャン部428は、第3サーバ426と接続され、クライアントに代わって擬似参照要求を第3サーバ426に発行するとともに、当該参照要求に応じて第3サーバ426が提供するファイル受付部30が受け取ったコンテンツのパケットをスキャンする機能要素である。スキャン制御部428は、判定テーブル434にあらかじめ記憶されたネットワーク経由の攻撃態様を示す攻撃情報に基づいて、攻撃性のある参照要求を第3サーバ426に対して発行する。また、スキャン制御部428は、判定テーブル434に記憶した攻撃情報に基づいて、第3サーバ426が提供したコンテンツ(ファイル受付部30が受け取ったコンテンツ)のパケットをスキャンし、当該パケットに保護すべきデータが含まれていないか(攻撃された結果サーバのセキュリティがやぶられていないか)を判定する機能要素である。
【0081】
脆弱性スキャン部428は、例えば、NiktoやParos、skipfish等のツールにより実現することができる。脆弱性スキャン部428は、判定テーブル434に予め記憶された想定される各種攻撃方法による攻撃パケットを、第3サーバ426に対して実際に発行し、攻撃パケットに応じて提供されたパケットをスキャンする。脆弱性スキャン部428は、スキャン結果に基づいて、第3サーバ426の攻略が可能であるか否かを判定する。すなわち、攻撃が可能である場合、ファイル受付部30が受け取ったコンテンツには外部からの攻撃に対する脆弱性が存在することになる。
【0082】
攻撃パケットとしては、例えば、SQLサーバとしてのDBサーバと接続されたWEBサーバに対して、前述したように文字列「' OR 't' = 't」を含めたものが考えられる。脆弱性スキャン部428は、スキャン結果に意図しないユーザの情報が漏洩していないかを確認し、漏洩していれば脆弱性があると判定して判定部302に通知する。この場合、脆弱性診断に用いるDBサーバのデータベースを復元するために用いたバックアップログに含まれる文字が、スキャン結果に漏洩しているか否かを判定することにより、情報漏洩の有無を判定することができる。新たな攻撃方法が発見された場合、攻撃情報として判定テーブル434に新たに記憶させることで、攻撃方法を最新に更新することが可能である。
【0083】
図8に示す実施形態のセキュリティサーバシステムの動作は、図4に示す第1の実施形態の動作とステップ54の判定処理を除き共通である。すなわち、第3サーバ426および脆弱性スキャン部428による脆弱性スキャンが、図4に示すステップ54の判定処理として実行される。
【0084】
この実施形態のセキュリティサーバシステムによれば、判定部302に加えて、実際にサーバに攻撃パケットを発行するとともに提供されたパケットに漏洩データがあるか否か判定する脆弱性スキャン部428を備えたので、ファイル受付部30が受け取った電子ファイルに脆弱性があるかどうか正確に判定することができる。
【0085】
なお、図8に示す例では、第1サーバおよび第2サーバとは別に第3サーバを設けているが、これには限定されない。例えば、第1サーバ10をネットワーク40から切り離し、第1サーバ10に第3サーバ426の機能を代替させてもかまわない。
【0086】
(第4の実施形態)
次に、図9を参照して、第4の実施形態に係るセキュリティサーバシステムについて詳細に説明する。図9に示すように、この実施形態に係るセキュリティサーバシステムは、図5に示す第2の実施形態に係るセキュリティサーバシステムに、第3サーバ426および脆弱性スキャン部428をさらに備えたものである。すなわち、第3の実施形態における第3サーバおよび脆弱性スキャン部を第2の実施形態に適用したものであり、第3サーバおよび脆弱性スキャン部の動作は第3の実施形態と共通する。
【0087】
この実施形態のセキュリティサーバシステムにおいても、第3の実施形態と同様に、実際にサーバに攻撃パケットを発行するとともに提供されたパケットに漏洩データがあるか否か判定する脆弱性スキャン部428を備えたので、ファイル受付部30が受け取った電子ファイルに脆弱性があるかどうか正確に判定することができる。
【0088】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【0089】
1…セキュリティサーバシステム、10…第1サーバ、12…第1記憶部、20…第2サーバ、22…第2記憶部、24…防御部、30…ファイル受付部、32…脆弱性判定部、34…判定テーブル、40…ネットワーク、42a,42b…クライアント。
【技術分野】
【0001】
本発明は、ネットワーク上でサービスを提供するサーバを攻撃から保護するセキュリティサーバシステムに関する。
【背景技術】
【0002】
インターネット上でサービスを提供するサーバに対して、インターネット経由の様々な攻撃が発生している。例えば、攻撃者がサーバに対し本来とは異なる方法を用いてアクセスすることでサーバ上の情報を詐取する攻撃や、正当なユーザが攻撃者に騙された結果、当該ユーザのアクセスを攻撃者の準備したサーバを通じて脆弱性を有するサーバに誘導する攻撃などが知られている。
【0003】
アプリケーションの脆弱性をついた攻撃としては、例えば、WEBサーバに対するクロスサイトスクリプティング、クロスサイトリクエストフォージェリや、WEBサーバとSQLサーバに対するSQLインジェクションなどがある。SQLインジェクションは、アプリケーションのセキュリティ上の不備を意図的に利用し、アプリケーションが想定しないSQL文を実行させることにより、データベースシステムを不正に操作するものである。この攻撃に成功すると、攻撃者によるデータの詐取・改竄・削除が可能になってしまう。
【0004】
ネットワークを経由した攻撃を防御する技術としては、アクセスが違法または有害であるか否かを判定し、有害なオペレーション要求の実行を防止する方法が提案されている(特許文献1)。またアプリケーションに対するDoS/DDoS攻撃から防御するため、トラヒック量などの情報を基に攻撃を検知し、攻撃トラヒックのレートを制御しフィルタリングすることが提案されている(特許文献2)。
【0005】
さらに、ネットワークからの全てのアクセスについて防御装置を経由させることで、ネットワークを経由した攻撃からサーバのアプリケーションを防御するセキュリティサーバシステム(アプリケーションセキュリティシステム)も知られている。事前の対応としては、ソースコード等に起因するアプリケーションの脆弱性診断をあらかじめ行って脆弱性を発見しておき、当該アプリケーションの脆弱な要素を手作業で除去することが一般に行われている。
【0006】
全てのアクセスについて防御装置を経由させる従来のシステムでは、トラヒックの増加に伴って当該防御装置の処理能力を超えることがあった。特に、複数のサーバを一括して防御処理する場合、サーバ自体の脆弱性やサーバにより提供されるコンテンツ等のサービスの脆弱性の有無に関わらず全てのアクセスが防御装置を通過するため、サーバへのアクセスの増加に伴って防御装置の処理能力を超えやすい。
【0007】
一方、脆弱性診断により発見した脆弱性を人手で改修する場合、アプリケーションのソースコード等の改修に膨大な時間と労力が必要となる。特に、脆弱性の改修にはセキュアプログラミングに係る知識と経験を有する人員が必要となるため、サーバ運営者の負担が大きくなる問題があった。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特表2004−533676公報
【特許文献2】特開2006−60599公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
このように、従来のセキュリティサーバシステムでは、サーバへのアクセスの増加により処理能力を超えやすいという問題がある。また、人手により脆弱性を改修するにも限界がある。
【0010】
本発明は、かかる課題を解決するためになされたもので、処理能力を向上したセキュリティサーバシステムを提供することを目的としている。
【課題を解決するための手段】
【0011】
上記課題を解決するため、本発明の一つの実施形態に係るセキュリティサーバシステムは、ネットワークを介して送られる要求に応じてコンテンツを提供する第1のサーバシステムと、第1のサーバシステムよりもネットワークを経由した攻撃に対する強度が強く、ネットワークを介して送られる要求に応じてコンテンツを提供する第2のサーバシステムと、ネットワークを介して提供するコンテンツを受け付ける受付部と、ネットワークを経由した攻撃の影響を受け得るコンテンツ内容を示す脆弱情報を含む判定テーブルと、脆弱情報に基づき、受付部が受け付けたコンテンツについてネットワークを経由した攻撃に対する脆弱性の有無を判定する判定部と、判定部の判定結果に応じて、受付部が受け付けたコンテンツを提供候補として第1のサーバシステムまたは第2のサーバシステムのいずれかに格納するファイル制御部と、を具備することを特徴としている。
【発明の効果】
【0012】
本発明によれば、処理能力を向上したセキュリティサーバシステムを提供することができる。
【図面の簡単な説明】
【0013】
【図1】第1の実施形態に係るセキュリティサーバシステムの構成を示すブロック図である。
【図2】第1の実施形態に係るセキュリティサーバシステムの構成を詳細に示すブロック図である。
【図3A】第1の実施形態に係る防御部(リバースプロキシ)の機能構成を示す概念図である。
【図3B】一般的なルータの機能構成を示す概念図である。
【図4】第1の実施形態に係るセキュリティサーバシステムの動作を示すフローチャートである。
【図5】第2の実施形態に係るセキュリティサーバシステムの構成を示すブロック図である。
【図6】第2の実施形態に係るセキュリティサーバシステムの構成を詳細に示すブロック図である。
【図7】第2の実施形態に係るセキュリティサーバシステムの動作を示すフローチャートである。
【図8】第3の実施形態に係るセキュリティサーバシステムの構成を示すブロック図である。
【図9】第4の実施形態に係るセキュリティサーバシステムの構成を示すブロック図である。
【発明を実施するための形態】
【0014】
(第1の実施形態)
以下、本発明の実施の形態を、図面を参照して詳細に説明する。実施形態に係るセキュリティサーバシステムは、インターネットなどのネットワークに接続されたサーバを、当該ネットワークを経由した攻撃から防御する機能を有している。より具体的には、外部ネットワークに直接接続されたサーバと、外部ネットワークと防御手段を介して接続されたサーバとを備え、外部からの攻撃に対する脆弱性の有無に応じて提供するコンテンツを各サーバに振り分けてアップロード可能としている。
【0015】
図1に示すように、第1の実施形態に係るセキュリティサーバシステム1は、第1サーバ10および第2サーバ20を備えている。第1サーバ10および第2サーバ20には、それぞれ第1記憶部12および第2記憶部22が接続されている。第1サーバ10は、ネットワーク40と直接接続されており、第2サーバ20は、ネットワーク40と防御部24を介して接続されている。さらに、この実施形態に係るセキュリティサーバシステム1は、ファイル受付部30、脆弱性判定部32、判定テーブル34を備えている。
【0016】
第1サーバ10は、例えばWebサーバのように、ネットワークを介して電子ファイル群からなるコンテンツを提供する。第1記憶部12は、例えばハードディスクドライブなどであり、第1サーバ10が提供するコンテンツなどを記憶する。すなわち、第1サーバ10および第1記憶部12は、協働してサーバシステムとして機能する。第2サーバ20および第2記憶部22は、それぞれ第1サーバ10および第1記憶部12と対応し、共通する機能を有している。すなわち、この実施形態のセキュリティサーバシステムでは、共通する機能をもつサーバシステムを二以上有している。第1サーバ10および第2サーバ20は、例えばUNIX(登録商標)などのネットワークOS上で動作するサーバアプリケーションにより実現することができる。
【0017】
防御部24は、ネットワーク40から第2サーバ20への全てのアクセスを検査し、不正なアクセスやサーバなどの脆弱性に対する攻撃から第2サーバ20を防御する機能を有する。防御部24は、受け取ったトラヒックを一旦物理層からアプリケーション層まで解釈してデータを取り出し、取り出されたデータが第2サーバ20などを攻撃する可能性があるかチェックする。防御部24は、チェックの結果攻撃可能性がなければ、当該データを再びアプリケーション層から物理層まで変換して第2サーバ20へ送り、攻撃可能性があれば、当該データを無害化するか破棄することで第2サーバ20を保護する。
【0018】
すなわち、このシステムは、直接ネットワーク40と接続された第1サーバ10、および、ネットワーク40との間に防御部24を備えてトラヒックによる処理負担の増加よりも安全性を優先した第2サーバ20を有している。
【0019】
ファイル受付部30は、第1サーバ10または第2サーバ20がネットワーク40を介してクライアント42a・42bへ提供するコンテンツを受け入れる。ここで、第1サーバ10や第2サーバ20が提供するコンテンツは、テキストファイルや画像ファイルなどの電子ファイルにより構成されるから、ファイル受付部30は、例えばハードディスクドライブ上に構成されたディレクトリ(あるいはフォルダ)などにより実現される。
なお、以下の説明において、コンテンツは、脆弱性のない「ページ」と、脆弱性を含みうる「プログラム」とから構成されるものとする。コンテンツは、ページのみから構成されてもよく、この場合コンテンツには脆弱性はないことになる。一方、コンテンツが「ページ」と「プログラム」とから構成される場合、「プログラム」が脆弱性を含むか否かにより、コンテンツが脆弱性を有するか否かが左右される。
【0020】
脆弱性判定部32は、ファイル受付部30に格納されたコンテンツ(電子ファイル群)を解析し、ネットワークを介した攻撃に対する脆弱性の有無を判定する機能を有する。併せて、脆弱性判定部32は、判定結果に応じて、ファイル受付部30に格納された電子ファイルを第1記憶部12または第2記憶部22に移動する機能をも有している。脆弱性判定部32は、例えばメモリ上に展開されたコンピュータプログラムとCPUなどの演算装置などにより実現される。
【0021】
判定テーブル34は、脆弱性判定部32が解析や判定に用いる脆弱性情報を記録している。すなわち、脆弱性判定部32は、判定テーブル34に記録された脆弱性情報に基づいて、電子ファイルの解析や脆弱性の有無を判定する。判定テーブル34は、ハードディスクドライブ上に構成されたディレクトリ(あるいはフォルダ)や、メモリなどにより実現される。
【0022】
(第1の実施形態の具体的構成)
続いて、図2を参照して、第1の実施形態に係るセキュリティサーバシステムの構成をより詳細に説明する。図2に示すように、第1サーバ10は、WEBサーバ102、CGI部104、およびデータベースサーバ(DBサーバ)106を有している。同様に、第2サーバ20は、WEBサーバ202、CGI部204、およびDBサーバ206を有している。防御部24は、ファイアウォール242およびリバースプロキシ244を有している。脆弱性判定部32は、テキスト抽出部301、判定部302、リンク整合部303およびファイル格納部304を有している。
【0023】
WEBサーバ102およびWEBサーバ202は、HTTP(HyperText Transfer Protocol)を用いてHTML(HyperText Markup Language)や画像データなどからなるコンテンツをクライアント42a・42bに提供する機能要素である。CGI部104およびCGI部204は、それぞれWEBサーバ102およびWEBサーバ202と協働してプログラムを実行し、その実行結果をクライアント42a・42bに提供する機能要素である。DBサーバ106およびDBサーバ206は、第1記憶部12および第2記憶部22それぞれに記憶されたデータ(データベース)125および225を用いて、検索やソート処理されたデータをクライアント42a・42bに提供する機能要素である。
【0024】
ファイアウォール242は、ネットワーク40からの不正アクセスを防ぐ機能要素である。リバースプロキシ244は、受け取ったトラヒックを物理層からアプリケーション層まで一旦解析してデータを取り出し、取り出したデータが攻撃性を有するか否か解析する機能要素である。リバースプロキシ244は、解析した結果データが攻撃性を有する有害なものである場合、無害化処理や廃棄処理を行い、同じく無害のものである場合、取り出したデータを再びアプリケーション層から物理層まで変換して出力する。
【0025】
テキスト抽出部301は、ファイル受付部30が受け取った電子ファイルから所定の文字列等を検索して抽出する機能要素である。判定部302は、テキスト抽出部301による検索結果に基づいて当該受け取った電子ファイルの脆弱性を判定し、脆弱性のあるデータと脆弱性のないデータを区分する。リンク整合部303は、判定部302が区分したデータのうち、脆弱性のあるデータについて、データ内の含まれる他のデータへのジャンプを示すリンクを更新する機能要素である。ファイル格納部304は、判定部302による区分結果に基づいて、電子ファイルを第1サーバ10と接続された第1記憶部12または第2サーバ20と接続された第2記憶部22のいずれかに格納制御する機能要素である。
脆弱性の判定方法の例としては、例えば、ソースコードを解析し、プログラムに入力された文字列が、プログラム中の複数の手続きによって処理加工された後、最終的にプログラムの出力となるまでの処理フローをトレースし、そのトレースの過程で、攻撃によく用いられる危険な文字または文字列をサニタイズして入力から取り除く処理が含まれているか否かにより判断する手法が挙げられる。また、SQLインジェクション等の攻撃を防ぐためSQLで使われる「’」や「%」の他HTMLで使われる「<」や「>」を検知し、一定のルールに従いデータの内容を変えないように変換するエスケープ処理が、判定対象のプログラムにおいて実施されていない場合には、脆弱性があると判断することができる。一定のルールとしては、例えば、「&」は「&amp」に、「<」は「&lt」に、「>」は「&gt」に、「’」は「&#039」に、「”」は「&quot」に変換するものが挙げられる。
【0026】
(第1サーバ/第2サーバの動作と外部からの攻撃)
ここで、第1サーバ10および第2サーバ20の基本動作を説明する。以下の説明では、脆弱性のないページaのみからなるコンテンツA、脆弱性のないページbと脆弱性のないプログラムb1と脆弱性のあるプログラムb2とからなるコンテンツB、および、脆弱性のないページcと脆弱性のあるプログラムcとからなるコンテンツCをネットワーク上で提供するものとする。
【0027】
まず、ネットワークを介してサービスを提供するアプリケーションの例としてWEB()サービスの例を説明する。
【0028】
図1および図2に示すように、第1サーバ10におけるWEBサーバ102は、ネットワーク40を介して、当該ネットワーク40に接続したクライアント42a・42bに対してサービスを提供する。WEBサーバ102に接続された第1記憶部12は、クライアント42a等に提供するページとしてページa121などを保持している。また、WEBサーバ102は、CGI部104と協働して第1記憶部12に格納されたプログラムb1などを走らせる。ここで、ページa121やプログラムb1・122bなどの電子ファイルは、単一の電子ファイルではなく、複数の電子ファイルからなる電子ファイル群として構成されてもよい。
【0029】
クライアント42aが閲覧したいページのURLを明示して第1サーバ10に閲覧要求を行うと、WEBサーバ102は、その閲覧要求に含まれたURLが、WEBサーバ102の直接の配下のページであれば、そのページをクライアント42aに提供する。一方、URLの指し示すページがWEBサーバ102の直接の配下ではなく、例えばプログラムb1・122bのようにCGI部104を経由してのみアクセス可能なページの場合、WEBサーバ102は、プログラムb1・122bをCGI部104により実行して作成したページファイルをクライアント42aに提供する。
【0030】
プログラムb1・122b等は、CGI部104を構成する言語で実行できるプログラムのソースコードである。したがって、CGI部104を用いることにより、ページa121のような固定的なページだけではなく、クライアント42aからの要求に応じて動的に生成したページを提供することも可能である。すなわち、CGI部104の機能を用いることで、各種のアプリケーションプログラムを作成することが可能になる。同様に、クライアント42aは、CGI部104とプログラムを介することで、DBサーバ106にアクセスすることも可能になる。
【0031】
一般に、ネットワーク40を経由してデータベース106等の情報資源にアクセスする場合、ユーザ認証を行い意図しないユーザが情報資源へアクセスすること防止している。しかし、プログラムなどに脆弱性のあるコマンド等が含まれている場合、ネットワーク40を経由して外部から認証が破られ、データにアクセスされてしまうおそれがある。
【0032】
続いてSQLインジェクション攻撃の例を説明する。WEBサーバ102を経由してDBサーバ106に対して次のようなSQLを発行することを考える。例えば、プログラムに、以下のテキストが含まれているとすると、
SELECT * FROM users WHERE name = '入力値';
アプリケーション開発者は、上記の「入力値」として、例えばクライアント42aが作成した「suzuki」のようなユーザ名が入力されるものと期待する。しかし、悪意ある攻撃者は、例えば、
' OR 't' = 't
という文字列をパラメータ入力値として与える。そうすると、上記テキストは
SELECT * FROM users WHERE name = '' OR 't' = 't';
と展開されてしまう。't' = 't'は常に条件が真であるため、このSQL文では「name」カラムの値にかかわらず、全レコードが選択されることになる。このとき選択されるレコードにはクライアント42aが「suzuki」のユーザ名で登録した全てのデータが含まれる。
【0033】
このようにして、データベースの抽出結果を確認のために画面に表示したりダウンロードしたりするアプリケーションの場合、全てのデータを盗まれてしまうことがあり得る。アプリケーションプログラムの開発者は、「入力値」にユーザ名などのデータの入力を期待するが、悪意ある攻撃者は、「入力値」に全体としてSQLコマンドの一部を構成するような文字列「' OR 't' = 't」を入力し、結果として全レコードを選択することに成功してしまう。
【0034】
そのため、CGIを用いたアプリケーションのプログラミングにおいては、入力値のチェックが欠かせない。例えばユーザ名の入力を期待する場合には、ユーザ名として入力を許容する文字のみを許容し、ユーザ名として使われない「%」や「<」、「>」などの特殊な文字は許容しないようにする。また攻撃によく用いられる危険な文字または文字列が既知であれば、それをサニタイズして入力から取り除くことも効果がある。
【0035】
さらにSQLインジェクション攻撃を防ぐため、SQLで使われる「’」や「%」の他、HTMLで使われる「<」や「>」を検知し、データの内容を変えないように変換するエスケープ処理が行われる。例えば、「<」や「>」は「<」や「>」のように変換される。
【0036】
プログラム中に含まれる可能性のある脆弱性の探索を人手で行うことは、特に大規模なプログラムでは、コストと脆弱性の見落とす可能性から得策ではない。そこで、人手に代わって脆弱性診断ツールを用いてアプリケーションプログラムに含まれる脆弱性を診断することが行われている。脆弱性診断ツールにより発見された脆弱な部分について人手で修正する作業を、脆弱性診断ツールにより脆弱性が発見されなくなるまで繰り返すことで、プログラムを完成させる。
【0037】
しかし、既にサービスが開始されているページでは、サービスを一旦中止して修正プログラムを導入することが困難である。また、大規模なプログラムでは修正に長い時間がかかり、その間脆弱性をもつコンテンツがネットワーク上に曝されることとなる。そこで、この実施形態では、防御部24を導入して脆弱性のあるコンテンツを安全に提供できるようにしている。
【0038】
(防御部24の機能)
サーバに対する攻撃の例と防御部24の機能について詳細に説明する。防御部24は、コンテンツの脆弱性をついた外部からの攻撃を防ぐ。すなわち、防御部24は、CGIプログラム(プログラムcなど)の脆弱性がネットワーク上に露呈しないように、クライアント42aから送られるリクエスト中のパラメータに危険なものが含まれていないかどうか検査する。この検査は、アプリケーション層で行われる。検査の結果、脆弱性を攻撃する可能性がある文字列を発見した場合、防御部24は、当該文字列を無害化するように書換えて後段のサーバに転送するか、転送自体を中止する。
【0039】
ここで、「アプリケーション層」、「物理層」とは、国際標準化機構(ISO)により制定された、異機種間のデータ通信を実現するためのネットワーク構造の設計方針(OSI)に基づいて階層構造に分割した各機能を意味している。すなわち、OSIでは、通信機能を下層から順に物理層(L1)、データリンク層(L2)、ネットワーク層(L3)、トランスポート層(L4)、セッション層(L5)、プレゼンテーション層(L6)、アプリケーション層(L7)の7階層に分けている。インターネットではこのうち下位から2層目のデータリンク層にはイーサネット(登録商標)が、3層目のネットワーク層にはインターネットプロトコル(IP)が、それぞれ用いられることが多い。
【0040】
図3Aは、防御部24の中核をなすリバースプロキシ244の機能構成の例を示している。図3Aに示すように、防御部24におけるリバースプロキシ244は、第1変換部244a、攻撃判定部244b、および第2変換部244cを備えている。
【0041】
第1変換部244aは、物理層(L1)にて受信したパケットをアプリケーション層(L7)まで解釈し元のデータに変換する。攻撃判定部244bは、クライアントから送られてきたデータからパラメータの入力値を取り出し、その文字列に脆弱性を攻撃する可能性の有無を判断し、文字列を無害化するように書換えるか廃棄する。第2判定部244cは、攻撃判定部244bから出力されたデータ(元のデータまたは無害化されたデータ)を再びアプリケーション層(L7)から物理層(L1)まで変換してパケットを出力する。かかる構成を有するリバースプロキシ244は、送られたパケットから元のデータを取り出して攻撃性の有無を判定するので、外部からの攻撃を効果的に防御することができる。
【0042】
一方で、図3Aに示すリバースプロキシ244を備えた防御部24は、全てのパケットを一旦アプリケーション層まで解釈するため、トラヒックのボトルネックとなりやすい。図3Bに示すようなデータリンク層のL2スイッチおよびネットワーク層のL3スイッチをもつルータ245と比較しても、解析処理と変換処理に時間を要するのは明らかである。
【0043】
そこで、実施形態に係るセキュリティサーバシステムでは、防御部24に処理させるトラヒックを、脆弱性を持ったコンテンツへのアクセスのみに絞り込むことで、処理能力を向上させている。
【0044】
(脆弱性判定部の動作)
続いて、図1ないし図4を参照して、この実施形態のセキュリティサーバシステムの動作を説明する。
【0045】
この実施形態に係るセキュリティサーバシステムでは、ユーザは、ネットワーク40を通じてクライアント42a・42bに提供しようとするコンテンツA〜Cの電子ファイル群をファイル受付部30に格納する(ステップS51。以下「S51」のように称する。)。具体的には、ユーザは、所望の電子ファイル群をハードディスク上の所定のフォルダに保存する。
【0046】
ファイル受付部30が電子ファイルを受け取ると、テキスト抽出部301は、判定テーブル34から脆弱性情報を読み出す(S52)。脆弱性情報は、例えば、脆弱性が指摘されている脆弱コマンド341や攻撃性をもつサイトのURLなどの危険アドレス342などを含んでおり、あらかじめ判定テーブル34に格納されている。
【0047】
脆弱性情報を読み出すと、テキスト抽出部301は、当該脆弱性情報を用いて、ファイル受付部30が受け取った電子ファイルから脆弱コマンド341や危険アドレス342と全体または一部が一致したデータを検索・抽出するテキスト抽出処理を実行する(S53)。抽出処理結果は、判定部302に送られる。
【0048】
判定部302は、テキスト抽出部301による抽出処理結果に基づいて、ファイル受付部30が受け取った電子ファイルの脆弱性を判定する(S54)。判定の基準は、サイトの規模やコンテンツの種類に応じて様々に定義することができる。例えば、判定部302は、ファイル受付部30が受け取った電子ファイルに一つでも脆弱コマンド341や危険アドレス342が含まれていた場合に脆弱性ありと判定してもよいし、一定基準以上含まれていた場合に脆弱性ありと判定してもよい。ここでいう「脆弱性」は、外部からの攻撃に対する脆弱性を意味するから、判定部302は、テキスト情報しか含まないHTMLファイルや純粋な画像データなどについては脆弱性なしと判定してもよい。
【0049】
判定の結果、脆弱性が全くない場合(S55のNo)、例えば、判定対象の電子ファイルが安全なHTMLファイルのみからなるコンテンツAのような場合、ファイル格納部304は、ファイル受付部30が受け取った電子ファイルを全て第1記憶部12に格納(移動またはコピー)する。すなわち、安全なコンテンツについては、アクセス速度等を優先して、防御部24を設けていない第1サーバ10が提供するようにする。図2には、判定部302により脆弱性なしと判定されたコンテンツAのページa・121が、ファイル受付部30から第1記憶部12に格納された様子が示されている。
【0050】
判定の結果、脆弱性が発見された場合(S55のYes)、テキスト抽出部301は、判定部302が脆弱性を発見したデータと発見しなかったデータとを区分する。すなわち、テキスト抽出部301は、ファイル受付部30が受け取った電子ファイルのうち脆弱性が発見されたプログラムと発見されなかったプログラムとに区分する。このとき、ファイル受付部30が受け取った電子ファイルの全てに脆弱性が発見された場合(S57のYes)、ファイル格納部304は、当該ファイルを全て第2記憶部22に格納する(S58)。すなわち、構成する全てのプログラムに脆弱性があるコンテンツは、安全性を優先して、プログラムに対する全てのアクセスが防御部24を経由する第2サーバ20により提供されるようにする。図2には、判定部302により脆弱性ありと判定されテキスト抽出部301が全データに脆弱性を発見したコンテンツCのうちプログラムc・123bが、ファイル受付部30から第2記憶部22に格納された様子が示されている。なお、コンテンツCのうちページc・123aは、脆弱性を有さないから、第1記憶部12に格納されている。
【0051】
ファイル受付部30が受け取った電子ファイルが脆弱性が発見されたデータと発見されなかったデータとにより構成される場合(S57のNo)、リンク整合部303は、脆弱性が発見されたデータと発見されなかったデータとの間の関連づけを更新する(S59)。そして、ファイル格納部304は、脆弱性が発見されたデータを第2記憶部22に格納するとともに発見されなかったデータを第1記憶部12に格納する(S60)。リンク整合部303による関連づけの更新は、ファイル受付部30が受け取った電子ファイルが、第1記憶部12および第2記憶部22に分散して格納されることによって発生するリンク切れを解消する。すなわち、脆弱性が発見されなかったデータから脆弱性が発見されたデータへ移動するリンクは、第2サーバ20のアドレス(URL)宛に変更される。同様に、脆弱性が発見されたデータから脆弱性が発見されなかったデータへ移動するリンクは、第1サーバ10のアドレス宛に変更される。これにより、一つのコンテンツが複数に分割して保管・提供されることに起因するリンク切れ等の不具合を防ぐことができる。図2には、脆弱性のないページb・122aおよび脆弱性が発見されなかったプログラムb1・122bが、脆弱性が発見されたプログラムb2・122cと区分され、第1記憶部12および第2記憶部22それぞれに格納された様子が示されている。
【0052】
図4のステップ51からステップ60までを繰り返すことで、クライアント42a・42bに提供されるコンテンツが、外部からの攻撃に対する脆弱性の有無を基準に第1記憶部12および第2記憶部22に振り分けられて格納され、第1サーバ10および第2サーバ20により別個に提供される。
【0053】
例えば、クライアント42aがブラウザアプリケーションを用いてページa121を参照したとすると、参照要求はWEBサーバ102に送られ、WEBサーバ102は、ページa121を第1記憶部12から読み出し、ネットワーク40を介してクライアント40aに送る。一方、クライアント42aが脆弱性のあるプログラムc・123bを実行するページc・123aを参照したり、一部に脆弱性のあるプログラムb2・122cを実行するページbを参照したりすると、参照要求は、ネットワーク40を経由してファイアウォール242へ送られ、次いでリバースプロキシ242を経由してWEBサーバ202に到達する。このとき、クライアント42aからの参照要求が攻撃性を有していても、リバースプロキシ242により無害化または廃棄されるので、WEBサーバ202やCGI部204の脆弱性を攻撃されることはない。
【0054】
WEBサーバ202は、CGI部204が第2記憶部22から読み出したプログラムb2やプログラムcを実行して得たページデータを、ネットワーク40を介してクライアント42aに送る。
【0055】
この実施形態のセキュリティサーバシステムによれば、脆弱性を含むアプリケーションへのアクセスは防御手段を経由して第2サーバに接続され、脆弱性を含まない大多数のアクセスは防御手段を経由することなく直接第1サーバに接続されるから、防御手段のトラヒック負荷を低減することができる。
【0056】
なお、図4に示す例では、テキスト抽出部301は、ファイル受付部30が受け取った電子ファイルのうち脆弱性が発見されたファイル(プログラム)と発見されなかったファイル(プログラム)とに区分し、ファイル格納部304は、区分された当該ファイルを第1記憶部12および第2記憶部22それぞれに格納しているが、これには限定されない。すなわち、ファイル格納部304は、コンテンツを構成するファイル(プログラム)のうち一部でも脆弱性を発見した場合、全てのファイル(ページおよびプログラム)を第2記憶部22に格納してもよい。この場合、テキスト抽出部による抽出漏れ・区分漏れがあった場合でも、脆弱性のあるファイル(プログラム)を確実に第2サーバ20から提供することができる。また、ファイルの区分をせず一括して第1記憶部12または第2記憶部22に格納するので、ファイル受付から第1または第2サーバへの格納を高速に処理することができる。
【0057】
(第2の実施形態)
続いて、本発明の第2の実施の形態を、図面を参照して詳細に説明する。この実施形態に係るセキュリティサーバシステムは、図1および図2に示す第1の実施形態に係るセキュリティサーバシステムの構成の一部を変更したものである。そこで、以下の説明においては、第1の実施形態と共通する要素については同一の符号を付して示し、重複する説明を省略する。
【0058】
図5に示すように、第2の実施形態に係るセキュリティサーバシステム2は、第1サーバ10および第2サーバ20を備えている。第1サーバ10および第2サーバ20には、それぞれ第1記憶部12および第2記憶部22が接続されている。第1サーバ10は、通信経路選択部126を介してネットワーク40と接続されており、第2サーバ20は、防御部24および通信経路選択部126を介してネットワーク40と接続されている。さらに、この実施形態に係るセキュリティサーバシステム2は、ファイル受付部30、脆弱性判定部132、判定テーブル34を備えている。すなわち、第2の実施形態に係るセキュリティサーバシステム2は、第1の実施形態に係るセキュリティサーバシステム1に通信経路選択部126を追加した構成を有している。
【0059】
通信経路選択部126は、ネットワーク40から送られるアクセス要求を、第1サーバ10または第2サーバ20のいずれかに振り分ける機能要素である。通信経路選択部126は、例えばネットワーク機器の一種であるルータにより実現することができる。あるいは、通信経路選択部126の機能をネットワーク40上に設けられるDNS(Domain Name System)を利用することによっても実現可能である。
【0060】
(第2の実施形態の具体的構成)
次に、図6を参照して、第2の実施形態に係るセキュリティサーバシステムの構成をより詳細に説明する。図6に示すように、脆弱性判定部132は、テキスト抽出部301、判定部302、アドレス処理部403およびファイル格納部304を有している。第2の実施形態の脆弱性判定部132は、第1の実施形態の脆弱性判定部32と比較すると、アドレス処理部403を備える点において相違している。
【0061】
テキスト抽出部301は、受け取った電子ファイルから所定の文字列等を検索して抽出する機能要素である。判定部302は、テキスト抽出部301による検索結果に基づいて当該受け取った電子ファイルの脆弱性を判定し、脆弱性のあるデータと脆弱性のないデータを区分する。アドレス処理部403は、判定部302による判定テーブル34を用いた区分結果に基づいて、ネットワーク40からのアクセスを第1サーバ10または第2サーバ20に振り分けるよう通信経路選択部126に指示する機能要素である。ファイル格納部304は、判定部302による区分結果に基づいて、電子ファイルを第1サーバ10と接続された第1記憶部12または第2サーバ20と接続された第2記憶部22のいずれかに格納する機能要素である。
【0062】
(第2の実施形態の動作)
図5ないし図7を参照して、この実施形態のセキュリティサーバシステムの動作を説明する。以下の説明では、脆弱性のないページaのみからなるコンテンツA、脆弱性のないページbと脆弱性のないプログラムb1と脆弱性のあるプログラムb2とからなるコンテンツB、および、脆弱性のないページcと脆弱性のあるプログラムcとからなるコンテンツCをネットワーク上で提供するものとする。
【0063】
この実施形態に係るセキュリティサーバシステムにおいては、サーバによるサービス提供者は、クライアント42a・42bに提供しようとするコンテンツの電子ファイルを、ファイル受付部30に格納する(ステップS51。以下「S51」のように称する。)。具体的には、ユーザは、所望の電子ファイルをハードディスク上の所定のフォルダに保存する。以下、判定部302によるファイル受付部30が受け取った電子ファイルの脆弱性の判定まで、第1の実施形態と動作は同じである(図7中S52〜S54)
【0064】
判定の結果、脆弱性が全くない場合(S55のNo)、例えば、判定対象の電子ファイルが安全なHTMLファイルのみからなるコンテンツAのような場合、ファイル格納部304は、ファイル受付部30が受け取った電子ファイルを全て第1記憶部12に格納する。すなわち、安全なコンテンツについては、アクセス速度等を優先して、防御部24を設けていない第1サーバ10により提供されるようにする。図6には、判定部302により脆弱性なしと判定されたコンテンツAのページa・121が、ファイル受付部30から第1記憶部12に格納された様子が示されている。
【0065】
判定の結果、脆弱性が発見された場合(S55のYes)、ファイル格納部304は、当該電子ファイルを全て第2記憶部22に格納する(S157)。すなわち、構成するプログラムに脆弱性があるコンテンツは、安全性等を優先して、プログラムに対する全てのアクセスが防御部24を経由する第2サーバ20により提供されるようにする。図6には、判定部302により脆弱性ありと判定されたコンテンツCのうちプログラムc・123bが、ファイル受付部30から第2記憶部22に格納された様子が示されている。
【0066】
ファイル格納部304が電子ファイルの格納を行うと、アドレス処理部403は、第1記憶部12および第2記憶部22それぞれに格納されたコンテンツと、コンテンツを提供する第1サーバ10および第2サーバ20それぞれのアドレス(当該コンテンツを提供するクライアント42a・42bがネットワーク40を介してアクセスするためのアドレス)とを関係付けたアドレス情報を生成し、通信経路選択部126に送る(S158)。通信経路選択部126は、アドレス処理部403から送られたアドレス情報に基づいて、第1記憶部12および第2記憶部22それぞれに格納されたコンテンツと第1サーバ10および第2サーバ20それぞれを示すアドレスとを対応付けて自身のメモリ領域に記憶する。
【0067】
図6のステップ51からステップ158までを繰り返すことで、クライアント42a・42bに提供されるコンテンツが、外部からの脆弱性の有無を基準に第1記憶部12および第2記憶部22に振り分けられて格納されるとともに、振り分けられたコンテンツと第1サーバ10および第2サーバ20それぞれのアドレスとが対応付けられる。
【0068】
例えば、クライアント42aがブラウザアプリケーションを用いてページa・121を参照したとすると、参照要求は、ネットワーク40を介して通信経路選択部126に送られる。通信経路選択部126は、ページa・121を提供するアドレスをメモリ領域に記憶したアドレスから選択し、当該参照要求をWEBサーバ102に送る。WEBサーバ102は、ページa・121を第1記憶部12から読み出し、ネットワーク40を介してクライアント42aに送る。
【0069】
クライアント42aが脆弱性のあるプログラムc・123bを実行するページc・123aを参照すると、参照要求は、ネットワーク40を介して通信経路選択部126に送られる。通信経路選択部126は、プログラムc・123bの実行結果を提供するアドレスをメモリ領域に記憶したアドレスから選択し、当該参照要求をファイアウォール242へ送る。ファイアウォール242に送られた参照要求は、次いでリバースプロキシ242を経由してWEBサーバ202に到達する。このとき、クライアント42aからの参照要求が攻撃性を有していても、リバースプロキシ242により無害化または廃棄されているので、WEBサーバ202やCGI部204の脆弱性が攻撃されることはない。
【0070】
WEBサーバ202は、CGI部204が第2記憶部22から読み出したプログラムcを実行して得たページデータを、ネットワーク40を介してクライアント42aに送る。
【0071】
なお、この例では、通信経路選択部126がルータとして機能するものとして説明したが、これには限定されない。通信経路選択部126の機能をDNSにより実現する場合、クライアント42aからのクエリーをDNSが受けると、クエリーに含まれるURLに応じたページを示すIPアドレスをメモリ領域に記憶したIPアドレスから選択し、クライアント42aに当該アドレスを返し、クライアント42aは、返されたアドレスを用いて参照要求を再度発行すればよい。この場合、DNSは、この実施形態の通信経路選択部126のように直接第1サーバ10や防御部24に接続されている必要はなく、第1サーバ10や防御部24は、第1の実施形態に示したようにネットワーク40と直接接続されることができる。
【0072】
この実施形態のセキュリティサーバシステムによれば、脆弱性を含むアプリケーションへのアクセスは防御手段を介して第2サーバに接続され、脆弱性を含まない大多数のアクセスは防御手段を経由することなく直接第1サーバに接続されるから、防御手段のトラヒック負荷を低減することができる。また、この実施形態のセキュリティサーバシステムによれば、通信経路選択部を備えたので、コンテンツの脆弱性の有無に応じて確実に参照先を指定することができる。
【0073】
なお、第2の実施形態では、コンテンツを構成するファイルの一部のみに脆弱性が存在する場合(ページb、プログラムb1およびb2からなるコンテンツB)の判定をしていないが、これには限定されない。第1の実施形態と同様に、リンク整合部を設けて脆弱性のあるファイルのみを区分して第2記憶部に格納するように構成してもよい。
【0074】
(通信経路選択部の他の動作例1)
コンテンツを構成する電子ファイル群を作成する際、コンテンツを提供するサーバのアドレス(URL)を、例えば「www1.sample.jp」、「www2.sample.co.jp」、「www3.sample.co.jp」のようにあらかじめ複数準備しておく。判定部302が、コンテンツBのプログラムb2やコンテンツCのプログラムcに脆弱性を発見した場合、ファイル格納部304は、コンテンツBあるいはコンテンツCの全てのファイルを第2記憶部22に格納する。併せて、アドレス処理部403は、DNSとしての通信経路選択部126に対し、「www1.sample.jp」が第2サーバ20のIPアドレスとなるように登録する。
【0075】
同様に、判定部302が、コンテンツAのページaあるいはコンテンツBのプログラムb1に脆弱性を発見しなかった場合、ファイル格納部304は、コンテンツAあるいはコンテンツBのうちプログラムb2に関する全てのファイルを第1記憶部12に格納する。併せて、アドレス処理部403は、DNSとしての通信経路選択部126に対し、「www1.sample.jp」が第1サーバ10のIPアドレスとなるように登録する。
【0076】
すなわち、クライアント42a・42bは、インターネット上のDNSの機能により、自動的に第1サーバ10または第2サーバ20のいずれかにアクセスすることが可能となるから、コンテンツをなすページやプログラムに含まれるジャンプ先のURLを書き換えることなく、脆弱性な内容を含むコンテンツのみを第2サーバ20から提供することが可能になる。これは、防御部24の負荷を軽減することにもつながる。
【0077】
(通信経路選択部の他の動作例2)
第1サーバ10および第2サーバ20を仮想的なドメイン(バーチャルドメイン)により1台のサーバで構築する。この場合、内部的に第1サーバ10と第2サーバ20のURLを変更できるから、通信経路選択部126をルータにより構築した場合、脆弱性の有無に応じて第1サーバ10および第2サーバ20のいずれかにアクセスを振り分けることができる。上記動作例1と同様に、コンテンツをなすページやプログラムに含まれるジャンプ先のURLを書き換えることなく、脆弱性な内容を含むコンテンツのみを第2サーバ20から提供することが可能になる。これは、防御部24の負荷を軽減することにもつながる。
【0078】
(第3の実施形態)
次に、図8を参照して、第3の実施形態に係るセキュリティサーバシステムについて詳細に説明する。図8に示すように、この実施形態に係るセキュリティサーバシステムは、図1に示す第1の実施形態に係るセキュリティサーバシステムに、第3サーバ426および脆弱性スキャン部428をさらに備えたものである。そこで、共通する要素については同一の符号を付して示し、重複する説明は省略する。
【0079】
第3サーバ426は、第1サーバ10および第2サーバ20と共通する機能を有するサーバであり、擬似的に第1サーバ10および第2サーバ20の動作を再現させる。第3サーバ426は、判定部302から与えられる擬似参照要求に応じて、ファイル受付部30が受け付けたコンテンツを脆弱性スキャン部428に提供する動作をする。
【0080】
脆弱性スキャン部428は、第3サーバ426と接続され、クライアントに代わって擬似参照要求を第3サーバ426に発行するとともに、当該参照要求に応じて第3サーバ426が提供するファイル受付部30が受け取ったコンテンツのパケットをスキャンする機能要素である。スキャン制御部428は、判定テーブル434にあらかじめ記憶されたネットワーク経由の攻撃態様を示す攻撃情報に基づいて、攻撃性のある参照要求を第3サーバ426に対して発行する。また、スキャン制御部428は、判定テーブル434に記憶した攻撃情報に基づいて、第3サーバ426が提供したコンテンツ(ファイル受付部30が受け取ったコンテンツ)のパケットをスキャンし、当該パケットに保護すべきデータが含まれていないか(攻撃された結果サーバのセキュリティがやぶられていないか)を判定する機能要素である。
【0081】
脆弱性スキャン部428は、例えば、NiktoやParos、skipfish等のツールにより実現することができる。脆弱性スキャン部428は、判定テーブル434に予め記憶された想定される各種攻撃方法による攻撃パケットを、第3サーバ426に対して実際に発行し、攻撃パケットに応じて提供されたパケットをスキャンする。脆弱性スキャン部428は、スキャン結果に基づいて、第3サーバ426の攻略が可能であるか否かを判定する。すなわち、攻撃が可能である場合、ファイル受付部30が受け取ったコンテンツには外部からの攻撃に対する脆弱性が存在することになる。
【0082】
攻撃パケットとしては、例えば、SQLサーバとしてのDBサーバと接続されたWEBサーバに対して、前述したように文字列「' OR 't' = 't」を含めたものが考えられる。脆弱性スキャン部428は、スキャン結果に意図しないユーザの情報が漏洩していないかを確認し、漏洩していれば脆弱性があると判定して判定部302に通知する。この場合、脆弱性診断に用いるDBサーバのデータベースを復元するために用いたバックアップログに含まれる文字が、スキャン結果に漏洩しているか否かを判定することにより、情報漏洩の有無を判定することができる。新たな攻撃方法が発見された場合、攻撃情報として判定テーブル434に新たに記憶させることで、攻撃方法を最新に更新することが可能である。
【0083】
図8に示す実施形態のセキュリティサーバシステムの動作は、図4に示す第1の実施形態の動作とステップ54の判定処理を除き共通である。すなわち、第3サーバ426および脆弱性スキャン部428による脆弱性スキャンが、図4に示すステップ54の判定処理として実行される。
【0084】
この実施形態のセキュリティサーバシステムによれば、判定部302に加えて、実際にサーバに攻撃パケットを発行するとともに提供されたパケットに漏洩データがあるか否か判定する脆弱性スキャン部428を備えたので、ファイル受付部30が受け取った電子ファイルに脆弱性があるかどうか正確に判定することができる。
【0085】
なお、図8に示す例では、第1サーバおよび第2サーバとは別に第3サーバを設けているが、これには限定されない。例えば、第1サーバ10をネットワーク40から切り離し、第1サーバ10に第3サーバ426の機能を代替させてもかまわない。
【0086】
(第4の実施形態)
次に、図9を参照して、第4の実施形態に係るセキュリティサーバシステムについて詳細に説明する。図9に示すように、この実施形態に係るセキュリティサーバシステムは、図5に示す第2の実施形態に係るセキュリティサーバシステムに、第3サーバ426および脆弱性スキャン部428をさらに備えたものである。すなわち、第3の実施形態における第3サーバおよび脆弱性スキャン部を第2の実施形態に適用したものであり、第3サーバおよび脆弱性スキャン部の動作は第3の実施形態と共通する。
【0087】
この実施形態のセキュリティサーバシステムにおいても、第3の実施形態と同様に、実際にサーバに攻撃パケットを発行するとともに提供されたパケットに漏洩データがあるか否か判定する脆弱性スキャン部428を備えたので、ファイル受付部30が受け取った電子ファイルに脆弱性があるかどうか正確に判定することができる。
【0088】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【0089】
1…セキュリティサーバシステム、10…第1サーバ、12…第1記憶部、20…第2サーバ、22…第2記憶部、24…防御部、30…ファイル受付部、32…脆弱性判定部、34…判定テーブル、40…ネットワーク、42a,42b…クライアント。
【特許請求の範囲】
【請求項1】
ネットワークを介して送られる要求に応じてコンテンツを提供する第1のサーバシステムと、
前記第1のサーバシステムよりも前記ネットワークを経由した攻撃に対する強度が強く、前記ネットワークを介して送られる要求に応じてコンテンツを提供する第2のサーバシステムと、
前記ネットワークを介して提供するコンテンツを受け付ける受付部と、
前記ネットワークを経由した攻撃の影響を受け得るコンテンツ内容を示す脆弱情報を含む判定テーブルと、
前記脆弱情報に基づき、前記受付部が受け付けたコンテンツについて前記ネットワークを経由した攻撃に対する脆弱性の有無を判定する判定部と、
前記判定部の判定結果に応じて、前記受付部が受け付けたコンテンツを提供候補として前記第1のサーバシステムまたは前記第2のサーバシステムのいずれかに格納するファイル制御部と、
を具備したことを特徴とするセキュリティサーバシステム。
【請求項2】
前記ファイル制御部は、前記受付部が受け付けたコンテンツのうち前記脆弱性を有するデータを前記第2サーバシステムに格納し、前記脆弱性を有さないデータを前記第1サーバシステムに格納することを特徴とする請求項1記載のセキュリティサーバシステム。
【請求項3】
前記ファイル制御部により、前記第1サーバシステムに格納されるデータおよび前記第2サーバシステムに格納されるデータ相互間のリンクを整合させる整合部をさらに備えたことを特徴とする請求項2記載のセキュリティサーバシステム。
【請求項4】
前記ネットワークと前記第1のサーバシステムおよび前記第2のサーバシステムとの間に接続され、前記判定部の判定結果に基づき、前記ネットワークを介して送られる要求を前記第1のサーバシステムまたは前記第2のサーバシステムのいずれかに振り分ける通信経路制御部をさらに備えたことを特徴とする請求項2記載のセキュリティサーバシステム。
【請求項5】
前記判定テーブルは、前記ネットワークを経由した攻撃に関する攻撃情報を含み、
前記攻撃情報に基づいて前記ネットワークを経由した攻撃を擬似的に生成する擬似攻撃発生部と、
前記擬似的に生成した攻撃に応じて前記受付部が受け付けたコンテンツを提供する第3のサーバシステムと、
前記第3のサーバシステムが提供したコンテンツが正常か否かスキャンし、正常でない場合に前記脆弱性を有すると判定する脆弱性スキャン部と、
をさらに具備したこと
を特徴とする請求項1ないし4のいずれか1項に記載のセキュリティサーバシステム。
【請求項1】
ネットワークを介して送られる要求に応じてコンテンツを提供する第1のサーバシステムと、
前記第1のサーバシステムよりも前記ネットワークを経由した攻撃に対する強度が強く、前記ネットワークを介して送られる要求に応じてコンテンツを提供する第2のサーバシステムと、
前記ネットワークを介して提供するコンテンツを受け付ける受付部と、
前記ネットワークを経由した攻撃の影響を受け得るコンテンツ内容を示す脆弱情報を含む判定テーブルと、
前記脆弱情報に基づき、前記受付部が受け付けたコンテンツについて前記ネットワークを経由した攻撃に対する脆弱性の有無を判定する判定部と、
前記判定部の判定結果に応じて、前記受付部が受け付けたコンテンツを提供候補として前記第1のサーバシステムまたは前記第2のサーバシステムのいずれかに格納するファイル制御部と、
を具備したことを特徴とするセキュリティサーバシステム。
【請求項2】
前記ファイル制御部は、前記受付部が受け付けたコンテンツのうち前記脆弱性を有するデータを前記第2サーバシステムに格納し、前記脆弱性を有さないデータを前記第1サーバシステムに格納することを特徴とする請求項1記載のセキュリティサーバシステム。
【請求項3】
前記ファイル制御部により、前記第1サーバシステムに格納されるデータおよび前記第2サーバシステムに格納されるデータ相互間のリンクを整合させる整合部をさらに備えたことを特徴とする請求項2記載のセキュリティサーバシステム。
【請求項4】
前記ネットワークと前記第1のサーバシステムおよび前記第2のサーバシステムとの間に接続され、前記判定部の判定結果に基づき、前記ネットワークを介して送られる要求を前記第1のサーバシステムまたは前記第2のサーバシステムのいずれかに振り分ける通信経路制御部をさらに備えたことを特徴とする請求項2記載のセキュリティサーバシステム。
【請求項5】
前記判定テーブルは、前記ネットワークを経由した攻撃に関する攻撃情報を含み、
前記攻撃情報に基づいて前記ネットワークを経由した攻撃を擬似的に生成する擬似攻撃発生部と、
前記擬似的に生成した攻撃に応じて前記受付部が受け付けたコンテンツを提供する第3のサーバシステムと、
前記第3のサーバシステムが提供したコンテンツが正常か否かスキャンし、正常でない場合に前記脆弱性を有すると判定する脆弱性スキャン部と、
をさらに具備したこと
を特徴とする請求項1ないし4のいずれか1項に記載のセキュリティサーバシステム。
【図1】
【図2】
【図3A】
【図3B】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図2】
【図3A】
【図3B】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【公開番号】特開2011−258018(P2011−258018A)
【公開日】平成23年12月22日(2011.12.22)
【国際特許分類】
【出願番号】特願2010−132352(P2010−132352)
【出願日】平成22年6月9日(2010.6.9)
【出願人】(301022471)独立行政法人情報通信研究機構 (1,071)
【Fターム(参考)】
【公開日】平成23年12月22日(2011.12.22)
【国際特許分類】
【出願日】平成22年6月9日(2010.6.9)
【出願人】(301022471)独立行政法人情報通信研究機構 (1,071)
【Fターム(参考)】
[ Back to top ]