特許第6902037号(P6902037)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ヴァーセック・システムズ・インコーポレーテッドの特許一覧

特許6902037パターンマッチングベースのデータセット抽出
<>
  • 特許6902037-パターンマッチングベースのデータセット抽出 図000006
  • 特許6902037-パターンマッチングベースのデータセット抽出 図000007
  • 特許6902037-パターンマッチングベースのデータセット抽出 図000008
  • 特許6902037-パターンマッチングベースのデータセット抽出 図000009
  • 特許6902037-パターンマッチングベースのデータセット抽出 図000010
  • 特許6902037-パターンマッチングベースのデータセット抽出 図000011
  • 特許6902037-パターンマッチングベースのデータセット抽出 図000012
  • 特許6902037-パターンマッチングベースのデータセット抽出 図000013
  • 特許6902037-パターンマッチングベースのデータセット抽出 図000014
  • 特許6902037-パターンマッチングベースのデータセット抽出 図000015
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6902037
(24)【登録日】2021年6月22日
(45)【発行日】2021年7月14日
(54)【発明の名称】パターンマッチングベースのデータセット抽出
(51)【国際特許分類】
   G06F 21/55 20130101AFI20210701BHJP
   G06F 21/56 20130101ALI20210701BHJP
【FI】
   G06F21/55
   G06F21/56 360
【請求項の数】22
【全頁数】38
(21)【出願番号】特願2018-538236(P2018-538236)
(86)(22)【出願日】2017年1月20日
(65)【公表番号】特表2019-506674(P2019-506674A)
(43)【公表日】2019年3月7日
(86)【国際出願番号】US2017014354
(87)【国際公開番号】WO2017127691
(87)【国際公開日】20170727
【審査請求日】2020年1月17日
(31)【優先権主張番号】62/286,282
(32)【優先日】2016年1月22日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】516074252
【氏名又は名称】ヴァーセック・システムズ・インコーポレーテッド
【氏名又は名称原語表記】VIRSEC SYSTEMS,INC.
(74)【代理人】
【識別番号】100087941
【弁理士】
【氏名又は名称】杉本 修司
(74)【代理人】
【識別番号】100086793
【弁理士】
【氏名又は名称】野田 雅士
(74)【代理人】
【識別番号】100112829
【弁理士】
【氏名又は名称】堤 健郎
(74)【代理人】
【識別番号】100142608
【弁理士】
【氏名又は名称】小林 由佳
(74)【代理人】
【識別番号】100154771
【弁理士】
【氏名又は名称】中田 健一
(74)【代理人】
【識別番号】100155963
【弁理士】
【氏名又は名称】金子 大輔
(74)【代理人】
【識別番号】100150566
【弁理士】
【氏名又は名称】谷口 洋樹
(72)【発明者】
【氏名】グプタ・サチャ・ヴラ
【審査官】 平井 誠
(56)【参考文献】
【文献】 特開2010−092174(JP,A)
【文献】 特開2007−334536(JP,A)
【文献】 米国特許出願公開第2012/0117644(US,A1)
【文献】 鐘 揚 ほか,攻撃とその影響を特定可能とするWebサーバログ相関手法 A Log Correlation Method to Identify the Target and the Effect of Web Attacks,CSS2015 コンピュータセキュリティシンポジウム2015 論文集 合同開催 マルウェア対策研究人材育成ワークショップ2015 プライバシーワークショップ2015 情報処理学会シンポジウムシリーズ Vol.2015 No.3 [CD−ROM],日本,一般社団法人情報処理学会 コンピュータセキュリティ研究会 セキュリティ心理学とトラスト研究会,2015年10月14日,第2015巻,pp.132-139
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/55−56
(57)【特許請求の範囲】
【請求項1】
コンピュータに実装される方法であって、
ウェブフェーシングアプリケーションのフレームワークで受信されたデータストリームを捕捉する過程と、
前記データストリームを処理する前記フレームワークによって起動される関数の第1の関数セットを捕捉する過程と、
捕捉された前記第1の関数セットのサブセットを、捕捉された前記データストリームのデータパケットと照合する過程と、
捕捉された前記第1の関数セットのうちの適合した前記サブセットと前記データパケットのデータとを、データセットに抽出する過程と、
セキュリティ攻撃を検知するために、抽出された前記データセットに基づいて前記ウェブフェーシングアプリケーションの活動を探査する過程と、
を備える、方法。
【請求項2】
請求項1に記載の方法において、さらに、
前記データストリームを処理する前記フレームワークによって起動される関数の第2の関数セットを捕捉する過程と、
データベースサーバへのデータベースクエリであって、前記フレームワークにより生成されるデータベースクエリを捕捉する過程と、
捕捉された少なくとも1つの前記データベースクエリを、捕捉された前記第2の関数セットのサブセットと照合する過程と、
捕捉されたデータベースクエリであって、適合した少なくとも1つの前記データベースクエリと、捕捉された前記第2の関数セットのうちの適合した前記サブセットとを、抽出された前記データセットに抽出する過程と、
を備える、方法。
【請求項3】
請求項2に記載の方法において、さらに、
適合した前記データパケット、捕捉された前記第1の関数セットのうちの適合した前記サブセット、捕捉された前記第2の関数セットのうちの適合した前記サブセット、および前記少なくとも1つのデータベースクエリの間の関係を相関させる過程であって、捕捉された前記第1の関数セットのうちの適合した前記サブセット、捕捉された前記第2の関数セットのうちの適合した前記サブセットおよび前記少なくとも1つのデータベースクエリを処理するのに用いられるスレッドを追跡することに基づく、相関させる過程と、
前記データセット内における、適合した前記データパケット、捕捉された前記第1の関数セットのうちの適合した前記サブセット、捕捉された前記第2の関数セットのうちの適合した前記サブセット、および前記少なくとも1つのデータベースクエリを、相関された前記関係に基づいてマッピングする過程と、
前記ウェブフェーシングアプリケーションの活動を、抽出された前記データセット内における、適合した前記データパケット、捕捉された前記第1の関数セットのうちの適合した前記サブセット、捕捉された前記第2の関数セットのうちの適合した前記サブセット、および前記少なくとも1つのデータベースクエリの前記マッピングに基づいて探査する過程と、
を備える、方法。
【請求項4】
請求項3に記載の方法において、捕捉された前記少なくとも1つのデータベースクエリを照合する前記過程が、前記第2の関数セットの捕捉された前記サブセットにおける少なくとも1つの捕捉された関数のパラメータのデータを、捕捉された前記少なくとも1つのデータベースクエリの表現式のデータとパターン照合することを含む、方法。
【請求項5】
請求項3に記載の方法において、前記活動を探査する前記過程が、さらに、
前記ウェブフェーシングアプリケーションのフレームワークで受信されたデータパケットを実行時に捕捉すること、
抽出された前記データセット内における、捕捉された前記第1の関数セットのうちの適合した前記サブセットおよび捕捉された前記第2の関数セットのうちの適合した前記サブセットそれぞれの起動される関数を前記データセット内に捕捉し、捕捉された前記データベースクエリそれぞれの起動されるデータベースクエリを前記データセット内に実行時に捕捉すること、
前記第1の関数セットの起動される関数ごとに、前記第2の関数セットのマッピングされた前記サブセットの起動と、マッピングされた前記少なくとも1つのデータベースクエリの起動とがないかを調べること、
前記第2の関数セットのマッピングされた前記サブセットとマッピングされた少なくとも1つのデータクエリとのうちの少なくとも一方が起動されない場合にセキュリティ攻撃と断定すること、
を含む、方法。
【請求項6】
請求項2に記載の方法において、(i)前記第1の関数セットの前記サブセットが、前記フレームワークのビジネスロジック層へのインターフェースで前記フレームワークによって起動され、(ii)前記第2の関数セットの前記サブセットが、前記フレームワークの前記ビジネスロジック層からのインターフェースで前記フレームワークによって起動される、方法。
【請求項7】
請求項1に記載の方法において、捕捉された前記第1の関数セットの前記サブセットを照合する前記過程が、捕捉された前記第1の関数セットの前記サブセットにおける少なくとも1つの捕捉された関数のパラメータにおけるデータを、前記データパケットのフィールドのデータとパターン照合することを含む、方法。
【請求項8】
請求項1に記載の方法において、データストリームを捕捉する前記過程が、さらに、前記データストリームを前記フレームワークのプロトコル構成に基づいて復号することを含む、方法。
【請求項9】
請求項1に記載の方法において、さらに、
前記データストリームの処理から、ユーザ、ユーザデータ、セッション情報、IPアドレス、ポート番号、プロトコルコンテキスト、スレッドID、スレッドコンテキスト、メモリへの読み書きの命令のアドレス、オペレートされるメモリの範囲、およびトラフィック方向のうちの少なくとも1つを、前記ウェブフェーシングアプリケーションの活動を探査するために、抽出された前記データセットに抽出する過程、
を備える、方法。
【請求項10】
請求項1に記載の方法において、前記フレームワークが、バイナリ言語、.NET言語、JAVA(登録商標)言語、PHP言語、Ruby言語およびPython言語のうちの少なくとも1つに従って構成されている、方法。
【請求項11】
請求項1に記載の方法において、さらに、
前記フレームワークにおける前記データストリームの処理の間に各メモリアクセスのコンテンツを捕捉する過程と、
捕捉された前記第1の関数セットおよび捕捉された第2の関数セットの命令であって、ユーザデータを処理するのに用いられる命令を特定するように、抽出された前記データセットを捕捉された各メモリアクセスと比較する過程と、
特定された前記命令のチェーンを作成する過程であって、作成された前記チェーンは、前記ウェブフェーシングアプリケーションにおける脆弱性を表すように前記データセットに抽出される、過程と、
前記作成されたチェーンを監視することにより、実行時に前記ウェブフェーシングアプリケーションの前記活動を探査する過程であって、捕捉された各関数の出力にユーザコンテンツを付加すること、および捕捉された各関数の入力からコンテキストを除去することを含む、探索する過程と、
を備える、方法。
【請求項12】
ウェブフェーシングアプリケーションのフレームワークで受信されたデータストリームを捕捉するように構成された第1のトラフィックアナライザと、
前記データストリームを処理する前記フレームワークによって起動される第1の関数セットを捕捉するように構成された第1のプロファイラと、
捕捉された前記第1の関数セットのサブセットを、捕捉された前記データストリームのデータパケットと照合し、かつ、捕捉された前記第1の関数セットのうちの適合したサブセットをデータセットに抽出するように構成されたパターン照合エンジンと、
セキュリティ攻撃を検知するために、抽出された前記データセットに基づいて前記ウェブフェーシングアプリケーションの活動を監視するように構成されたプローブと、
を備える、コンピュータシステム。
【請求項13】
請求項12に記載のシステムにおいて、さらに、
前記データストリームを処理する前記フレームワークによって起動される第2の関数セットを捕捉するように構成された第2のプロファイラと、
データベースサーバへのデータベースクエリであって、前記フレームワークにより生成されるデータベースクエリを捕捉するように構成された第2のトラフィックアナライザと、
を備え、
前記パターン照合エンジンが、さらに、
捕捉された少なくとも1つの前記データベースクエリを、捕捉された前記第2の関数セットのサブセットと照合し、かつ、
捕捉されたデータベースクエリであって、適合した少なくとも1つの前記データベースクエリと、捕捉された前記第2の関数セットの前記サブセットとを、抽出された前記データセットに抽出するように構成されている、システム。
【請求項14】
請求項13に記載のシステムにおいて、
前記パターン照合エンジンが、さらに、
適合した前記データパケット、捕捉された前記第1の関数セットのうちの適合した前記サブセット、捕捉された前記第2の関数セットのうちの適合した前記サブセット、および適合した前記少なくとも1つのデータベースクエリの間の関係を相関し、かつ、
抽出された前記データセット内における、適合した前記データパケット、捕捉された前記第1の関数セットのうちの適合した前記サブセット、捕捉された前記第2の関数セットのうちの適合した前記サブセット、および適合した前記少なくとも1つのデータベースクエリを、相関された前記関係に基づいてマッピングするように構成されており、
前記相関は、捕捉された前記第1の関数セットのうちの適合した前記サブセット、捕捉された前記第2の関数セットのうちの適合した前記サブセット、および適合した前記少なくとも1つのデータベースクエリを処理するのに用いられるスレッドを追跡することに基づき、
前記プローブが、さらに、前記ウェブフェーシングアプリケーションの活動を、抽出された前記データセット内における、適合した前記データパケット、捕捉された前記第1の関数セットのうちの適合した前記サブセット、捕捉された前記第2の関数セットのうちの適合した前記サブセット、および適合した前記少なくとも1つのデータベースクエリのマッピングに基づいて監視するように構成されている、システム。
【請求項15】
請求項14に記載のシステムにおいて、さらに、
ウェブフェーシングアプリケーションのフレームワークで受信されたデータパケットを実行時に捕捉するように構成された第3のトラフィックアナライザと、
捕捉された前記第1の関数セットのうちの適合した前記サブセットの起動される各関数を実行時に捕捉するように構成されたる第3のプロファイラと、
抽出された前記データセット内における、捕捉された前記第2の関数セットのうちの適合した前記サブセットの起動される各関数を前記データセット内に実行時に捕捉するように構成された第4のプロファイラと、
捕捉された前記データベースクエリのうち起動される各データベースクエリを前記データセット内に実行時に捕捉するように構成された第4のトラフィックアナライザと、
を備え、
前記プローブが、さらに、
前記第1の関数セットの起動される関数ごとに、前記第2の関数セットのマッピングされた前記サブセットの起動と、マッピングされた前記少なくとも1つのデータベースクエリの起動とがないかを調べ、かつ、
前記第2の関数セットの前記マッピングされたサブセットとマッピングされた少なくとも1つのデータクエリとのうちの少なくとも一方が起動されなかった場合にセキュリティ攻撃と断定するように構成されている、システム。
【請求項16】
請求項14に記載のシステムにおいて、捕捉された前記少なくとも1つのデータベースクエリを照合することが、捕捉された前記第2の関数セットのパラメータにおけるデータを、捕捉された前記少なくとも1つのデータベースクエリの表現式のデータとパターン照合することを含む、システム。
【請求項17】
請求項12に記載のシステムにおいて、前記第1の関数セットを照合することが、前記第1の関数セットのパラメータにおけるデータを、前記データパケットのフィールドのデータとパターン照合することを含む、システム。
【請求項18】
請求項13に記載のシステムにおいて、(i)前記第1の関数セットの前記サブセットが、前記フレームワークのビジネスロジック層へのインターフェースで前記フレームワークによって起動され、(ii)前記第2の関数セットの前記サブセットが、前記フレームワークの前記ビジネスロジック層からのインターフェースで前記フレームワークによって起動される、システム。
【請求項19】
請求項12に記載のシステムにおいて、前記第1のトラフィックアナライザが、さらに、前記データストリームを前記フレームワークのプロトコル構成に基づいて復号するように構成されている、システム。
【請求項20】
請求項12に記載のシステムにおいて、前記パターン照合エンジンが、さらに、前記データストリームの処理から、ユーザ、ユーザデータ、セッション情報、IPアドレス、ポート番号、プロトコルコンテキスト、スレッドID、スレッドコンテキスト、メモリへの読み書きの命令のアドレス、オペレートされるメモリの範囲、およびトラフィック方向のうちの少なくとも1つを、前記ウェブフェーシングアプリケーションの活動を探査するために、抽出された前記データセットに抽出するように構成されている、システム。
【請求項21】
請求項12に記載のシステムにおいて、前記フレームワークが、バイナリ言語、.NET言語、JAVA(登録商標)言語、PHP言語、Ruby言語およびPython言語のうちの少なくとも1つに従って構成されている、システム。
【請求項22】
請求項12に記載のシステムにおいて、前記第1のプロファイラおよび第2のプロファイラが、さらに、前記フレームワークにおける前記データストリームの処理の間に各メモリアクセスのコンテンツを捕捉するように構成され、
前記パターン照合エンジンが、さらに、
捕捉された前記関数の命令であって、ユーザデータを処理するのに用いられる命令を特定するように、抽出された前記データセットを捕捉された各メモリアクセスと比較し、かつ、
特定された前記命令のチェーンを作成するように構成されており、
作成された前記チェーンは、前記ウェブフェーシングアプリケーションにおける脆弱性を表すように前記データセットに抽出され、
前記プローブが、さらに、前記作成されたチェーンを実行時に監視することにより、前記ウェブフェーシングアプリケーションの前記活動を監視するように構成され、当該監視が、捕捉された各関数の出力にユーザコンテンツを付加すること、捕捉された各関数の入力からコンテキストを除去すること、およびこれら付加および除去を解析エンジンに報告することを含む、システム。
【発明の詳細な説明】
【関連出願】
【0001】
本願は、2016年1月22日付出願の米国仮特許出願第62/286,282号の利益を主張する。この仮特許出願の全教示内容は、参照をもって全体を本明細書に取り入れたものとする。
【背景技術】
【0002】
日を追うごとに、サイバー攻撃はますます洗練化されている。攻撃は、特定のアプリケーションにおける特定の脆弱性を悪用することを対象とする。このような攻撃の要因と影響は、ネットワーク層では識別不可能である。というのも、これらの攻撃は単純明快な攻撃の上を行き、明らかに悪意があると解釈されることが可能なネットワーク活動を引き起こさないからである。企業データベースは、クレジットカード番号、顧客の社会保障番号、健康記録、他の個人特定可能情報、詳細な顧客リスト、設計プラン、ソースコード、他の知的財産などの極めて高価値な情報が当該データベースに存在していることから、攻撃者が好んで標的とする。これらの標的型攻撃に対抗するために数多くのベンダが、ユーザのアクセス及び挙動をアプリケーションのマーカに紐付ける次世代ファイアウォールやウェブフェーシングアプリケーション(ウェブ上のアプリケーション)ファイアウォール、当該ベンダが不審と判断するコードをサンドボックス内で実行させてこのようなコードが観察可能な悪意のある活動を行うのを待つことを試みるサンドボックス技術などのサイバーセキュリティ製品を配備している。このような検知メカニズムに対してマルウェアは、当該マルウェアがその悪意のある意図を実際に解き放つ前に検知エンジンが諦めるのを待つなど、自身の挙動をしばしば順応させる。挙動のこのような変更は、現代のサイバーセキュリティソリューションにおける、攻撃の挙動を認識する機能、つまり、マルウェアの存在を適時に検知する機能を妨げる。
【0003】
コンピュータアプリケーションの今日の大多数のマルウェア攻撃は、極めて巧妙に作られた入力データを供給することによって、悪意のあるコンテンツを注入して後に実行するか、又はデータベースからデータを抽出するという、悪意のある行為者の能力に由来している。これらの悪意のある活動は、企業の情報技術(IT)組織に悟られることなく遂行される可能性がある。このような悪意のあるコンテンツの注入は、不十分な入力検証を行う安全性の低いコードを特定して悪用することを意味する。今日のサイバーセキュリティ技術は、ネットワークトラフィック内の悪意のあるコンテンツもしくは当該コンテンツのソースを観察するか、アプリケーションのネットワーク挙動を追跡して当該ネットワーク挙動が過去に報告されたことのある異常活動を見せることを見込むか、または不審なコードの挙動を当該不審なコードがサーバに送信されて実行される前にサンドボックス内でスクリーニングすることを試みる。これらの技術は、上記のような悪意のあるコンテンツの実行によって表出する根本的な原因である引き金を高い信頼性で検知するのに十分な細かい粒度で、本物のウェブフェーシングアプリケーションをリアルタイムで調べる能力を有していない。
【発明の概要】
【発明が解決しようとする課題】
【0004】
このような根本的な原因である引き金を検知するのに障害となるのは、アプリケーションのフレームワーク及びビジネスロジックを通り抜けるデータストリームの処理を追跡する能力がないことである。
【課題を解決するための手段】
【0005】
本発明の実施形態は、フレームワークで受信されたデータストリームの大量のデータパケットを捕捉し、さらに、受信した当該データストリームの処理時に起動(トリガ)される、大量の関数、当該関数のパラメータ、およびデータベースクエリを捕捉する。これは、前述したフレームワークとビジネスロジックの両方における情報を捕捉することを含む。本発明の他の実施形態は、さらに、スレッドID、メモリへの読み書きの命令のアドレス、およびオペレート(操作)されるメモリのアドレス及び範囲を捕捉する。これらの実施形態は、さらに、パターンマッチングおよび機械学習を用いて、この大量の捕捉されたデータから、アプリケーション固有のパケット、関数、データベースクエリ、スレッドIDおよびメモリ操作を分離して、分離されたこれらパケット、関数、クエリ、メモリアクセス間の関係を相関させる(相関付ける)。分離されて相関されたこれらパケット、関数、クエリ、スレッドIDおよびメモリアクセスは、ユーザ、セッション、IPアドレス、ポート、プロトコル、スレッド、コードアドレス、メモリ操作(読込み/書込み)、対象のメモリアドレス及び範囲などの所与のコンテキストデータと共に、データセットに抽出される。当該データセットに従ってアナライザが、特定のアプリケーションに関係する活動を追跡および探査するために、相関されたパケット、関数及びクエリのセットをリッスンするようにチューニングされてもよい。このようなチューニングによって、当該アナライザは、上記のような悪意のあるコンテンツが実行される前に、根本的な原因である引き金を高い信頼性で検知することが可能となる。例えば、このようなチューニングによって、アナライザは、ユーザにより供給されたデータを取り扱う関数及び機械語を、当該関数及び機械語が悪意のあるコンテンツをどのように取り扱うかを突き止めるように隔離して調べることが可能となる。
【0006】
本発明の実施形態は、特定のアプリケーションに関係する活動を探査するようにアナライザをチューニングするためのデータセットを生成するシステム及び方法に関する。前記システム及び方法は、アプリケーションのフレームワークで受信したデータストリームを捕捉する。例示的な実施形態では、前記フレームワークが、バイナリ言語、.NET言語、JAVA言語、PHP言語、Ruby言語およびPython言語のうちの少なくとも1つに従って記述されているものであってもよい。一部の実施形態では、第1のトラフィックアナライザ又はパケットキャプチャツール(パケット捕捉ツール)が、前記データストリームを捕捉するように構成されてもよい。前記システム及び方法は、さらに、前記データストリームを処理する前記フレームワークによって起動される関数の第1の関数セットを捕捉する。一部の実施形態では、第1のプロファイラが、前記アプリケーションにより実行される前記関数、スレッドIDおよびメモリアクセスを捕捉するように構成されてもよい。
【0007】
前記システム及び方法は、捕捉された前記第1の関数セットのサブセットを、捕捉された前記データストリームのデータパケットと照合する。一部の実施形態では、パターンマッチングエンジン(パターン照合エンジン)が、この照合(マッチ)を実行するように構成されてもよい。一部の実施形態では、捕捉された前記第1の関数セットの前記サブセットを照合することが、これらの関数および/またはスレッドIDおよび/またはメモリアクセスのパラメータのデータを、前記データパケットのフィールドにおけるデータにパターンマッチ(パターン照合)することを含む。前記システム及び方法は、捕捉された前記第1の関数セットのうちの適合(match)した前記サブセットおよび/またはスレッドIDおよび/またはメモリアクセスを、データセットに抽出する。前記システム及び方法は、サイバー攻撃を検知するために、抽出された前記データセットに基づいて前記アプリケーションの活動を探査する。
【0008】
一部の実施形態では、前記システム及び方法が、前記データストリームを処理する前記フレームワークによって起動される関数の第2の関数セットを捕捉する。一部の実施形態では、第2のプロファイラが、前記アプリケーションにより実行される関数の前記第2の関数セット、スレッドIDおよびメモリアクセスを捕捉するように構成されてもよい。これらの実施形態では、前記システム及び方法が、さらに、データベースサーバへのデータベースクエリであって、前記フレームワークにより生成されるデータベースクエリを捕捉する。一部の実施形態では、第2のトラフィックアナライザ又はパケットキャプチャツールが、前記データベースクエリを捕捉するように構成されてもよい。これらの実施形態では、前記システム及び方法が、捕捉された少なくとも1つの前記データベースクエリを、捕捉された前記第2の関数セットのサブセットと照合する。捕捉された前記少なくとも1つのデータベースクエリを照合することは、捕捉された前記第2の関数セットのパラメータのデータを、捕捉された前記少なくとも1つのデータベースクエリの表現式のデータとパターン照合することを含む。これらの実施形態では、前記システム及び方法が、さらに、捕捉されたデータベースクエリであって、適合した少なくとも1つの前記データベースクエリと、捕捉された前記第2の関数セットのうちの適合した前記サブセットとを、抽出された前記データセットに抽出する。
【0009】
これらの実施形態のうちの一部の実施形態では、前記システム及び方法が、さらに、適合した前記データパケット、捕捉された前記第1の関数セットのうちの適合したサブセット、捕捉された前記第2の関数セットのうちの適合したサブセット、メモリアクセスの適合したコンテンツ、および適合した少なくとも1つのデータベースクエリの間の関係を相関する(相関付ける)。前記システム及び方法は、前記データセット内における、適合した前記データパケット、捕捉された関数のうちの適合したサブセット、メモリアクセスの適合したコンテンツ、適合した少なくとも1つのデータベースクエリを、相関された前記関係に基づいてマッピングする。前記システム及び方法は、さらに、前記アプリケーションの活動を、抽出された前記データセット内における、適合した前記データパケット、捕捉された関数のうちの適合したサブセット、メモリアクセスの適合したコンテンツ、および適合した少なくとも1つのデータベースクエリの前記マッピングに基づいて探査する。
【0010】
一部の実施形態では、前記システム及び方法が、前記データストリームの処理時に各メモリアクセスのコンテンツを捕捉する。前記システム及び方法は、捕捉された前記第1の関数セットおよび第2の関数セットのうち、ユーザデータを処理するのに用いられる関数の命令を特定するように、抽出された前記データセットを捕捉された各メモリアクセスと比較する。前記システム及び方法は、特定された前記命令のチェーンを作成し、これにより、前記データセットに抽出される当該チェーンが、前記ウェブフェーシングアプリケーションで監視されるべき脆弱性を表す。前記システム及び方法は、命令の作成された前記チェーンを監視することにより、実行時(ランタイム)に前記ウェブフェーシングアプリケーションの前記活動を探査する。当該探査は、捕捉された各関数の出力にユーザコンテンツを付加すること、および捕捉された各関数の入力からコンテキストを除去することを含む。例示的な実施形態では、捕捉された前記第1の関数セットが、前記フレームワークのビジネスロジック層へのインターフェースで前記フレームワークによって起動され、捕捉された前記第2の関数セットが、前記フレームワークの前記ビジネスロジック層からのインターフェースで前記フレームワークによって起動される。
【0011】
例示的な一部の実施形態では、前記データストリームを捕捉することが、さらに、前記システム及び方法に、前記データストリームを前記フレームワークのプロトコル構成に基づいて復号させることを含む。例示的な一部の実施形態では、前記システム及び方法が、さらに、前記データストリームの処理から、ユーザ、ユーザデータ、セッション情報、IPアドレス、ポート番号、プロトコルコンテキスト、スレッドコンテキスト、およびトラフィック方向のうちの少なくとも1つを、前記ウェブフェーシングアプリケーションの活動を探査するために、抽出される前記データセットに抽出する。
【0012】
例示的な一部の実施形態では、前記システム及び方法が、前記ウェブフェーシングアプリケーションの前記フレームワークで受信されたデータパケットを実行時に捕捉することにより、前記活動を探査する。例示的な実施形態では、第3のトラフィックアナライザが、前記データパケットを捕捉するように構成されている。前記システム及び方法は、さらに、抽出された前記データセット内において、捕捉された前記第1の関数セットのうちの適合した前記サブセットおよび捕捉された前記第2の関数セットのうちの適合した前記サブセットのうち、起動される関数をデータセット内に捕捉し、捕捉された前記データベースクエリのうち、起動される各データベースクエリを前記データセット内に捕捉する。例示的な実施形態では、第3のプロファイラが前記第1の関数セットを捕捉するように構成されており、第4のプロファイラが前記第2の関数セットを捕捉するように構成されており、第4のトラフィックアナライザが前記データベースクエリを捕捉するように構成されている。前記システム及び方法は、前記第1の関数セットのうちの起動される関数ごとに、前記第2の関数セットのうちのマッピングされた前記サブセットの起動と、マッピングされた前記少なくとも1つのデータベースクエリの起動とを確認する。前記システム及び方法は、捕捉された前記パケットのデータが、起動される各関数のパラメータのデータ及び起動される各データベースクエリの表現式のデータと適合しない場合に、セキュリティ攻撃と断定する。
【0013】
前述の内容は、添付の図面に示す例示的な実施形態についての以下のより詳細な説明から明らかになる。異なる図をとおして、同じ参照符号は同じ構成/構成要素を指すものとする。図面は必ずしも縮尺どおりではなく、重点は本発明の実施形態を示すことに置かれている。
【図面の簡単な説明】
【0014】
図1】知能型持続(advanced persistent)マルウェア攻撃の例示的な構成を示す図である。
図2】本発明の実施形態における例示的なアプリケーションインフラストラクチャを示す図である。
図3】本発明の実施形態におけるアプリケーションフレームワークのブロック図である。
図4】本発明の実施形態における暗号化されていないデータストリームでのパターンマッチングベースのデータセット抽出のブロック図である。
図5】本発明の実施形態における暗号化されたデータストリームでのパターンマッチングベースのデータセット抽出のブロック図である。
図6】本発明の実施形態におけるパターンマッチングベースのデータセット抽出の例示的な方法を示すフローチャートである。
図7A】本発明の実施形態におけるアプリケーション実行時監視解析(ARMAS)の例示的なブロック図である。
図7B図7AのARMASインフラストラクチャ内でデータを伝送するのに用いられる例示的なプロトコルデータユニット(PDU)を示す図である。
図8】本発明の実施形態が実現可能なコンピュータネットワーク又は同様のデジタル処理環境を示す図である。
図9図8のコンピュータシステムにおけるコンピュータ(例えば、クライアントプロセッサ/装置、サーバコンピュータ等)の例示的な内部構造を示す図である。
【発明を実施するための形態】
【0015】
以下では、本発明の例示的な実施形態について説明する。
本明細書で引用する全ての特許、特許出願公報及び参考文献の全教示内容は、参照をもって本明細書に取り入れたものとする。
【0016】
<例示的なマルウェア攻撃>
【0017】
図1に、知能型持続(advanced persistent)マルウェア攻撃の一例を示す。このケースでは、悪意のある行為者(つまりハッカー)が当該行為者自身のインフラストラクチャ102から、nmapなどのスキャンツール104を用いて企業108の顧客対応インフラストラクチャを遠隔でスキャンするものとする。このスキャンが既知の脆弱性又はゼロデイ脆弱性を有するコードを発見すると、行為者はシェルコード106をインストールし、遠隔の企業サーバ(すなわち、標的)110の制御を獲得して企業ネットワークにアクセスする。当該ネットワークに侵入した悪意のある行為者は、アプリケーションへの攻撃を容易にするために追加のツールをロードする。これらのツールは、nmapおよび/またはポートスキャナおよび/またはパスワードクラッキングツールおよび/またはFTPクライアントおよび/または圧縮ツールおよび/またはハッシュ化および/または暗号化・復号ツールを含み得る。
【0018】
次に行為者は、企業インフラストラクチャにアクセスして、管理者権限を持つユーザがデータベース、ファイルリポジトリなどの高価値の標的にログインする際のマシン114,116を探す。行為者は、ユーザのアクセス資格情報をスクレイピングしたり(引っこ抜いたり)さらなるハッキングツールのホームを見つけ出したりする目的で、マシン114,116を探す。脆弱なアプリケーションを有するマシン114,116を見つけ出すと悪意のある行為者は、遠隔にある自身のハッカー指令統制センタ112に接続し直して、資格情報をスクレイピングし、標的110に侵入して当該標的110にアクセスする可能性がある。標的にアクセスすると、専門的な追加のツール(さらなる商売道具)が当該標的110にロードされる。また、権限を持つユーザがスマートフォン、ラップトップなどのモバイルデバイスを喫茶店、空港、ホテルなどの保護されていないネットワークに持ち出した際に、当該モバイルデバイスにマルウェアが植え付けられる場合もある。他のケースでは、内部の人間が標的のマシンを、アプリケーションにより実行されたプロセスが動作している最中にウィルス又は他のマルウェア攻撃で感染させる場合もある。
【0019】
企業データベースは、権限を持つユーザが企業にとって極めて高価値である情報にアクセスし得ることから、悪意のある行為者が好んで標的にする。例えば、これらのデータベースでは、権限を持つユーザが全顧客に関する大量の機密顧客情報へのアクセス権を有するのに対し、通常のユーザは当該機密情報のうちの自身に関係する部分にのみアクセス権を有する。悪意のある行為者は資格情報が得られた後、権限を持つユーザとしてデータベース及びファイルリポジトリ118に接続し、実名、自宅の住所、社会保障、運転免許証、生年月日、医療記録、クレジット/デビットカード番号などの金融情報、電話番号、電子メールアドレス、ユーザ名及びパスワード、保険情報、詳細な顧客リスト、設計プラン、ソースコード、他の知的財産などといった高価値な機密情報を抽出する可能性がある。
【0020】
悪意のある行為者は、この情報を、企業セキュリティ解析者の注意を引かないように、場合によっては圧縮・暗号化してからハッカー指令統制センタ112に少量ずつアップロードする可能性がある。この目的を達成するために悪意のある行為者は、ハッカー指令統制センタ112のIPアドレスを毎日変更したりプロキシを使用したりすることにより、企業の侵入検知システムがパターンを確立できないようにする。企業は典型的に毎日10GBを超えるデータを送受信するので、比較的少量のデータを短いバーストでアップロードしても気付かれない場合が多い。
【0021】
他のケースでは、悪意のある行為者がSQLインジェクション攻撃などのデータベースクエリ注入攻撃を用いて初めにウェブシェルを投下してから、企業クライアント又は顧客に関する高価値な機密情報の抽出に進む可能性がある。また、悪意のある行為者は同様に、リモートファイルインジェクション(RFI)攻撃を用いてウェブフェーシングアプリケーション(ウェブ向けアプリケーション)に追加の機能を挿入可能である。悪意のある行為者は、このような機能に、全く無害なユーザ入力を用いてアクセス可能である。注入された当該機能が実行されると、前記ウェブフェーシングアプリケーションは、意図せずにウェブシェルをインストールし、かつ/あるいは、機密情報を悪意のある行為者に公開する。
【0022】
このような攻撃が成功するのは、サイバーセキュリティソリューションが、特定のウェブフェーシングアプリケーションについて、ウェブフェーシングアプリケーションフレームワークでの処理パイプラインを探査することができず、悪意のある行為者がこの特定のウェブフェーシングアプリケーションの処理に関係するデータに干渉したか又は当該データを改変したかを突き止めることができないからである。ウェブフェーシングアプリケーションファイアウォール、侵入検知/防止エンジンなどのサイバーセキュリティソリューションは、特定のウェブフェーシングアプリケーションのウェブフェーシングアプリケーションフレームワークでの高粒度処理を追跡するようにチューニングできない。この理由の一部として、ウェブフェーシングアプリケーションフレームワークで受信されて処理される大量のデータから、アプリケーションを処理するのに用いられる特定のデータ、関数、データベースクエリ、スレッドID、およびメモリアクセスのコンテンツの分離や相関を可能にするサイバーセキュリティツールが存在しないことが挙げられる。このような分離・相関データがないため、これらのサイバーセキュリティソリューションは悪意のある行為者によるアプリケーションを介した攻撃を完全に検知することができない。
【0023】
<ウェブフェーシングアプリケーションインフラストラクチャ>
図2に、セキュリティ攻撃に対して脆弱であり得る例示的なウェブフェーシングアプリケーションインフラストラクチャを示す。当該インフラストラクチャは、遠隔のウェブクライアント220を含む。ウェブクライアント220からユーザ又はマシンが、特定のウェブサイトでのトランザクションを実行するためのウェブ要求を生成する。当該ユーザ又はマシンはそのウェブ要求を、URLを入力したり当該ユーザのためにURLを入力するグラフィカルな選択肢を選択したりすることによって生成できる。ウェブクライアント220がそのウェブ要求を(例えば、HTTP、SOAP、REST、他の規格化された又は規格化されていない要求等として)ウェブサーバ240に送信して、当該ウェブサーバ240はそのウェブ要求を、他の大量のユーザからのウェブ要求と共にデータストリームとして受信できる。ウェブサーバ240は、当該データストリームを処理するアプリケーションサーバ260に動作可能に接続されている。ウェブサーバ240およびアプリケーションサーバ260は、バイナリ(Binary)、.NET、JAVA、PHP、Ruby、Pythonなどを含むがこれらに限定されないウェブフェーシングアプリケーションフレームワークタイプで構成されている。当該ウェブフェーシングアプリケーションフレームワークは、プレゼンテーションロジック層、ビジネスロジック層、データロジック層などを含むがこれらに限定されない複数のロジック層に分けられている可能性がある。
【0024】
受信された前記データストリームは、(ウェブサーバ240及びアプリケーションサーバ260での)前記ウェブフェーシングアプリケーションフレームワークの前記ロジック層を通り抜けるパイプラインでインターセプト及び処理される。典型的な前記ウェブフェーシングアプリケーションは、さらに、前記フレームワークの出力において提供されるさらなるサービスを利用するために、データベースにクエリする。よって、アプリケーションサーバ260は前記ウェブフェーシングアプリケーションフレームワークの前記処理パイプライン内において、前記データストリームをさらにデータベースサーバ270に送信する可能性がある。アプリケーションサーバ260は前記処理パイプラインの終端部において、前記データストリームを(バックエンド)データベース275に通信する可能性がある。データベースサーバ270が当該データストリームを、データベースクエリ(例えば、SQLクエリ、ストアドプロシージャコール等)としてデータベース275に通信して、前記ウェブ要求に関係するデータ記録を当該データベース275から取り出す可能性がある。データベースサーバ270は、取り出された当該データ記録からのデータを要求側ユーザに返す可能性がある。そうするにあたってデータサーバ270は、このデータをデータストリームとしてウェブサーバ240に、前記フレームワークの前記処理パイプライン内で逆方向に送信する。ウェブサーバ240はこのデータを(例えば、HTTP応答等として)、対応するユーザの遠隔のウェブクライアント220に送信する。
【0025】
本発明の実施形態は前記データストリームを、前記フレームワークの前記ロジック層を通り抜ける前記処理パイプラインにおける様々なステージで捕捉する(取り込む)。前記データストリームはそのステージに応じて、データパケットからの生データ(例えば、生TCPデータ等)として捕捉されたり、当該データストリームを処理するように前記フレームワークによって起動される関数として捕捉されたり、メモリアクセスとして捕捉されたり、データベース記録を取り出すように前記フレームワークによって起動されるデータベースクエリとして捕捉されたりしてもよい。これらの実施形態は、捕捉された生データ、関数およびデータベースクエリに対してパターンマッチング(パターン照合)及び相関(相互に関係付けること)を実行することにより、特定のウェブサイト(ウェブフェーシングアプリケーション)の前記フレームワークにおける様々なステージにおける処理パターンを示すデータセットを抽出する。
【0026】
図3は、本発明の実施形態におけるウェブフェーシングアプリケーションフレームワークのブロック図である。ほとんどのウェブフェーシングアプリケーションは、図3に示すように、アプリケーションフレームワークにより提供される「コンテナ」内で実行されるか又は当該「コンテナ」でホストされるように構築されている。この例では、前記アプリケーションフレームワークが、ユーザの認証、暗号化、セッション管理、SQLコネクタなどの一般的に用いられる機能を提供する。コンテナの幾つかの例は、Apache Tomcat、JBoss、Oracle Web Logic、IBM Web Sphereなどを含む。これらのフレームワークはアプリケーション開発者の負担を大きく和らげて、当該アプリケーション開発者はビジネスロジックの開発に集中することができる。例示的な実施形態では、前記ウェブフェーシングアプリケーションフレームワークが、図2のウェブサーバ240およびアプリケーションサーバ260にわたって構成されてもよい。前記ウェブフェーシングアプリケーションフレームワークは、バイナリ、.NET、JAVA、PHP、Ruby、Pythonなどの任意の規格化されたもしくは独自のフレームワーク言語タイプのものであってもよい。
【0027】
図3では、データ1を含む大量のデータのデータストリーム305が、通信ネットワーク(例えば、インターネット等)から前記フレームワークの前記処理パイプラインに入力される。なお、ウェブサーバ240/アプリケーションサーバ260は、異なる処理パイプラインを有する異なるフレームワークで構成されたものであってもよい。データストリーム305のデータは、前記アプリケーションを同時に利用する複数のユーザからのデータである。データストリーム305は、HTTP、FTP、SMTP、VOIP、RDP、WebSocketなどの通信プロトコルからの生データパケット(例えば、イーサネット(登録商標)フレーム等)として前記フレームワークの前記処理パイプライン(フレームワーク入力310)に到達する可能性がある。これらのデータストリーム305は、暗号化および/またはフラグメント化されていてもよい。例えば、一部の実施形態ではデータ1が、ユーザからのユーザクライアント装置220を介した特定のウェブサイト(ウェブフェーシングアプリケーション)へのHTTP要求であってもよい。前記フレームワークの前記ビジネスロジック層において構成されたビジネスロジック320が、この特定のウェブサイト用のロジックであってもよい。
【0028】
データ1を含むデータストリーム305は、前記フレームワークの1つ以上の層(例えば、図3に示すビジネスロジック層320等)を通って引き続き前記処理パイプライン内を進む。データストリーム305は、前記処理パイプライン内を進み続けるにつれて、複数の処理ステージによって改変データストリーム315,325,335へと消費および生成される。これらの処理ステージは、特定の関数又はメソッドの起動(トリガ、呼び出し)、特にはCPU命令の実行によって遂行される。例えば、データ1を含むデータストリーム315は前記処理パイプラインにおいて、データ2を含むデータストリーム325を生成するようにビジネスロジック層320により消費される。データストリーム335が、前記処理パイプライン(フレームワーク出力330)を出て、バックエンドデータベース(例えば、図2のデータベース275等)から記録データを取り出すようにデータベースクエリを起動することにより、処理を完了してもよい。前記バックエンドデータベースから取り出された前記記録データを含むデータストリームが前記フレームワークの前記処理パイプラインで(逆方向に)送信されてもよく、当該データストリームも複数の処理ステージによって同様に消費/生成される。
【0029】
<暗号化されていないデータストリームのパターンマッチングベースのデータセット抽出>
図4は、本発明の実施形態における暗号化されていないデータストリームでのパターンマッチングベースのデータセット抽出のブロック図である。図4では、パケットキャプチャアプリケーション(パケット捕捉アプリケーション)つまりツール302が、前記フレームワークの前記処理パイプライン(フレームワーク入力310)に到達する、データ1を含む大量のデータの入力データストリーム305を捕捉するように構成されている。図4にはWiresharkパケットキャプチャツールの使用が描かれているが、他の実施形態では任意の他のパケットキャプチャツール/アプリケーションが使用されてもよく、特に制限はない。当該パケットキャプチャツール/アプリケーションは、データ1を含むデータストリーム305からの生データパケットを、前記フレームワークのタイプに基づいて捕捉する。例えば、特定のフレームワーク(例えば、PHP等)のデータパケットは特定のデータヘッダ又は他の特定のフィールドを含んでもよく、当該特定のデータヘッダ又は他の特定のフィールドが前記パケットキャプチャツール/アプリケーションによって認識され(リッスンされ)てもよい。当該パケットキャプチャツール/アプリケーションは、捕捉された前記生データパケットからのデータ(例えば、TCPデータ等)の一部(Pm)を、記録および処理のために、パターンマッチング/機械学習エンジン360に送信する。一部の実施形態では、当該データが、パイプなどのストリーミングトランスポートを用いてパターンマッチング/機械学習エンジン360に送信されてもよい。パターンマッチング/機械学習エンジン360が、データの一部から、ユーザ、セッション情報、通信プロトコル、IPアドレス、ポート番号、トラフィック方向などを含むがこれらに限定されない特定のデータアイテムを抽出してもよい。
【0030】
図4では、プロファイラアプリケーション/ツール312が、特定のアプリケーションの前記フレームワークの前記処理パイプラインおよびビジネスロジック320において、データ1を含むデータストリーム315をプロファイル化する(捕捉する)ように構成されている。なお、実施形態は、関数エントリポイントをインターセプトする言語特化プロファイラと、個々の命令をインターセプトするバイナリプロファイラとの両方を用いる。この処理ステージでは前記フレームワークが関数(又はメソッド)および命令を起動し、当該関数(又はメソッド)および命令が、データ1を含むデータストリーム315を処理(消費・生成)するようにメモリアクセスを起動する。データ1を処理するのに用いられる特定の関数を突き止めるためにプロファイラ312は、前記処理パイプラインのこのステージで前記フレームワークによって起動される全ての関数を捕捉する。例えば、プロファイラ312は、前記フレームワークによって起動される関数Foo(p1,p2…pn)を捕捉する。そしてプロファイラ312は、プロファイル化された関数、スレッドID、およびパラメータのコンテンツをパターンマッチング/機械学習エンジン360に送信し、当該パターンマッチング/機械学習エンジン360が、当該プロファイル化された関数を、パケットキャプチャツール/アプリケーションツール302により捕捉された前記生データパケットと照合させる。具体的に述べると、パターンマッチング/機械学習エンジン360がパターンマッチングを実行し、当該パターンマッチングが前記プロファイル化された関数のデータパラメータを、捕捉された前記生データパケットの抽出された前記データアイテムと相関させて、データ1を処理するのに起動される特定の関数を特定して分離する。パターンマッチング/機械学習エンジン360はこれらの特定の関数を、前記特定のアプリケーションの(関係データ1セット)350としてデータセットに抽出および記録する。当該データセット内では特定の関数が、関連する生データパケットに対してマッピング(リンク)されてもよい。この関連する生データパケットは、前記フレームワーク及び前記特定のアプリケーションの処理パターンを示す。
【0031】
図4では、さらに、他のプロファイラアプリケーション/ツール(例えば、SQLプロファイラ等)322が、前記バックエンドシステム又はデータベースにアクセスする前記フレームワークの前記処理パイプラインにおける、データ2を含むデータストリーム325をプロファイル化するように構成されている。なお、データ1を含むデータストリーム315が前記処理パイプラインにおいて、データ2を含むデータストリーム325を生成するように前記アプリケーションのコアビジネスロジック320により消費される。この処理ステージでは、前記フレームワークが関数(又はメソッド)およびメモリアクセスを、データ2を含む前記データストリームを処理(消費・生成)するように起動する。前記プロファイラは、前記処理パイプラインのこのステージで前記フレームワークによって起動される全ての関数、スレッドIDおよびメモリアクセスをプロファイル化して、プロファイル化された当該関数、スレッドIDおよびメモリアクセスを前記パターンマッチング/機械学習エンジンに送信する。例えば、プロファイラ322は、前記フレームワークによって起動される関数Bar(p1、SQLi,…pq)をプロファイル化/送信する。具体的に述べると、パターンマッチング/機械学習エンジン360は、バックエンドデータベース340からのデータ記録にアクセスすることに向けられた関数(例えば、データベース特化指令(例えば、SQLコマンド等)に関係するパラメータを含む関数等)を特定して分離してもよい。
【0032】
さらに、他のパケットキャプチャツール/アプリケーション332(例えば、WireShark、TCPDump等)が、バックエンドデータベース340に向けられた、データ2を含むデータストリーム335を捕捉するように構成されている。パケットキャプチャツール/アプリケーション332は、当該データストリーム335を、当該データストリーム335がサーバ270を離れてTCP/IPソケットなどのIPCメカニズムを介して前記データベースをトラバースしているときに捕捉してもよい。D2を含むこれらのデータストリーム335は前記フレームワークの前記処理パイプラインにおいて、起動される前記関数から生成される。前記パケットキャプチャツール/アプリケーションは、データ2を含むデータストリーム335からの生データパケットを、前記フレームワークのタイプに基づいて捕捉する。例えば、特定のデータベースのタイプに関連付けられたデータパケットは特定のフィールドを含んでもよく、当該特定のフィールドが前記パケットキャプチャツール/アプリケーションによって認識され(リッスンされ)てもよい。パケットキャプチャツール/アプリケーション332は捕捉された前記生パケットデータからのデータ(例えば、SQLデータ等)の一部を収集し、記録および処理のために当該一部をパターンマッチング/機械学習エンジン360に送信する。パターンマッチング/機械学習エンジン360が、データの一部から、SQLクエリ、ストアドプロシージャコールなどの特定のデータアイテムを抽出してもよい。
【0033】
そして、パターンマッチング/機械学習エンジン360が、データベースアクセスに関係する前記プロファイル化された関数を、バックエンドデータベース340に向けられた(前記パケットキャプチャツール/アプリケーションにより捕捉された)前記データパケット(データベースクエリ)と照合させる。具体的に述べると、パターンマッチング/機械学習エンジン360がパターンマッチングを実行し、当該パターンマッチングがこれらのプロファイル化された関数のデータパラメータを、SQLクエリ(SQLi)の式と相関させることにより、データ2に基づいて起動される特定の関数及び特定のデータベースクエリを特定して分離する。パターンマッチング/機械学習エンジン360はこれらの特定の関数及びデータベースクエリを、前記特定のウェブサイト(ウェブフェーシングアプリケーション)のための(関係データ2セット)355として前記データセットに抽出して記録する。当該データセット内では当該特定の関数が、当該特定のデータベースクエリに対してマッピング(リンク)される。データセット355は、前記特定のウェブサイト(ウェブフェーシングアプリケーション)のための前記フレームワークのバックエンドの処理パターンを示す。
【0034】
<抽出されたデータセットの相関>
パターンマッチング/機械学習エンジン360は、さらに、関係データ1セットのデータセット350を関係データ2セットのデータセット355と相関させてもよい。パターンマッチング/機械学習エンジン360は当該相関を、前記フレームワークのプロセス又はスレッド間の通信用に構成されたコンテキストデータ構造を利用することによって行ってもよい。このようなコンテキストデータ構造は、ウェブフェーシングアプリケーションフレームワークの処理パイプラインにおいて用いられる。プロファイラ312、プロファイラ322または動作可能に接続されたコンピュータアプリケーションが、これらのコンテキストデータ構造に、データ1を処理するのに用いられるプロセス/スレッドを、データ2を処理するのに用いられるプロセス/スレッドへと追跡することを可能にする特定情報(例えば、ユーザ、セッションなどの情報等)を挿入してもよい。前記プロファイラは、データ2を含むデータストリーム325,335により起動される関数又はデータベースクエリを捕捉するときに、関連するプロセス/スレッドおよび挿入された対応する特定情報も捕捉してもよい。プロファイラ312,322はこれらのプロセス/スレッドおよび対応する特定情報もパターンマッチング/機械学習エンジン360に送信し、当該パターンマッチング/機械学習エンジン360で当該プロセス/スレッドおよび特定情報が、対応するデータセット内に記録されて且つ当該データセット内の関連する関数やデータベースクエリに対してマッピングされる。パターンマッチング/機械学習エンジン360は、データセット2のデータ/関数に対してマッピングされた前記特定情報を、データセット1のデータ/関数に対してマッピングされた前記特定情報(あるいは、データセット1のデータ/関数のフィールド/パラメータ)と照合させることにより、データセット2の関数/クエリに関連するデータセット1のデータ/関数を突き止めてもよい。
【0035】
以下では、前記コンテキストデータ構造をこのように使用する一例について説明する。(図2に示す)例示的なアプリケーションインフラストラクチャにおいてウェブサーバ240が、ユーザからの(ウェブサービスクライアントを介した)ウェブ要求(例えば、HTTP要求等)を受信する。ウェブサーバ240は、当該ウェブ要求(例えば、URL等)に含まれる情報を用いて前記ユーザを認証し、認証が成功すると、当該ユーザが前記ウェブフェーシングアプリケーションインフラストラクチャ内のデータにアクセスするためのコネクション(又はセッション)を確立する。ウェブサーバ240は、当該セッション内において前記ユーザとウェブ要求及びウェブ応答を交換するために、ユーザ及びセッションデータを維持する。ウェブサーバ240およびアプリケーションサーバ260は、図3に示すようにウェブフェーシングアプリケーションフレームワークで構成されている。ウェブサーバ240は、前記セッション中に、クロスコンテキストコンテナ及びローカル/インタープロセス通信(LPC/IPC)を用いた相互依存メカニズム及びスレッドを介して前記ウェブフェーシングアプリケーションフレームワーク(図3)内でアプリケーションサーバ260と通信することにより、前記ウェブ要求を処理する。他の実施形態では、ウェブサーバ240とアプリケーションサーバ260とが、任意の他のコンテキストデータメモリ構造及び任意の他のプロセス通信方法を用いて前記ウェブフェーシングアプリケーションフレームワーク内で通信してもよい。なお、前記コンテキストデータは、ウェブフェーシングアプリケーションフレームワーク内においてサーバ間で又は他のこのような機器間でデータを伝送するのに用いられるどのようなデータ構造であってもよく、当該データ構造は、バイナリ、.NET、JAVA(登録商標)、PHP、Ruby、Pythonなどの任意のウェブフェーシングアプリケーションフレームワーク言語タイプで使用されるあらゆるデータ構造を含み、特に制限はない。
【0036】
前記クロスコンテキストコンテナ(コンテキストデータ)は、ウェブサーバ240とアプリケーションサーバ260とで共有されるデータを保持するのに用いられる複数のメモリ部分(データオブジェクト)を含み、当該複数のメモリ部分(データオブジェクト)は、HTTP/同期、コール/オペレーションなどを含む。これらのデータオブジェクトは、内部データ構造またはテキストベースのメモリエレメント(例えば、XML、JSON、生データフォーマット等)でフォーマット化されてもよい。図4のプロファイラ312,322は、計測されたコードを経由して、ウェブサーバ240およびアプリケーションサーバ260と、付録Aに示す各データ構造に従って前記コンテキストデータを拡張するために通信する。例えば、プロファイラ312,322は前記計測されたコードを経由して、ウェブサーバ240で受信された前記ウェブ要求から、ユーザ名(例えば、uuid等)、IPアドレス、ポート番号、URL、セッションID、HTTPデータ、スレッドID、メモリアクセスの種類及びコンテンツなどの任意のユーザ/セッション情報を含む、ユーザ、セッションおよびユーザ入力情報を取り出す。
【0037】
このようにしてプロファイラ312,322は、データ1及びデータ2を処理するのに前記フレームワーク(図4)の前記処理パイプラインにおいて使用されるスレッドに関連するユーザ、セッションなどを認知できる。さらに、プロファイラ312,322は前記スレッドおよび関連するユーザ、セッションなどを、データ1及びデータ2の前記処理パイプラインにおけるデータパケット、起動される関数、メモリアクセスおよび起動されるデータベースクエリと共に捕捉してもよい。プロファイラ312,322は、前記コンテキストデータの拡張された前記データ構造からの前記スレッドおよび関連するユーザ/セッションデータをパターンマッチング/機械学習エンジン360に送信し、これらのスレッドおよび関連するユーザ/セッションデータを、関係するデータパケット、起動される関数及び起動されるクエリに対してマッピングされた関係データ2セットのデータセット335内に記録してもよい。パターンマッチング/機械学習エンジン360は、前記ユーザ/セッションデータを用いてデータ2の(関係データ2セットのデータセット355内の)関係する関数/クエリをデータ1の(関係データ1セットのデータセット350内の)データ/関数と、当該ユーザ/セッションデータ又はデータ1のデータ/関数のフィールド/パラメータにおける同様のデータに基づいて相関させてもよい。相関されたデータセット350およびデータセット355は累積データセット内に共に含められてもよく、当該累積データセットが特定のアプリケーションの前記フレームワークの各種ステージ(エンドツーエンド)にわたっての処理パターンを提供する。
【0038】
<暗号化されたデータストリームのパターンマッチングベースのデータセット抽出>
図5は、本発明の実施形態における暗号化されたデータストリームでのパターンマッチングベースのデータセット抽出のブロック図である。図5の実施形態では、前記フレームワークに到達する、データ1を含むデータストリーム505が暗号化されている。パケットキャプチャツール302は、暗号化された前記データストリームを、前記フレームワークに到達する前にインターセプトする。そして、暗号変換モジュール510がデータストリーム505を、復号された同等のデータストリーム305に変換するように構成されている。暗号変換モジュール510は、前記フレームワークにより使用されている暗号化プロトコル(例えば、SSL等)を突き止めることによりこのような変換を行い、前記データストリームのデータパケットを、突き止められた前記暗号化プロトコルに従ってクリアテキストへと復号してもよい。暗号変換モジュール510は、データストリーム505の前記データパケットの復号を実行するために、ライブラリ関数(例えば、ssl_read、ssl_write等)、アプリケーションプログラミングインターフェース(API)関数、および突き止められた前記暗号化プロトコルに関係する他のこのような機能を参照してもよい。復号されたデータストリーム305は、前記フレームワーク(フレームワーク入力310)に到達すると(パケットキャプチャツールではなく)プロファイラ308により捕捉される。データストリーム305は、スケーラビリティの目的で前記フレームワークの端で復号される。つまり、本発明の実施形態では、前記フレームワークの端で復号を実行することにより、所与のフレームワークとアクセスの種類(HTTP、REST、SOA、非規格など)とを用いるどのようなビジネスロジックにも対処することができる。データ1を含む復号されたデータストリーム305は、図4で説明したものと同じ様式で引き続き前記フレームワークの前記処理パイプライン内を進む。
【0039】
<抽出されたデータセットの使用>
図4または図5で得られた前記データセットは、前記フレームワークの様々なステージ(エンドツーエンド)にわたって前記アプリケーションの活動を探査してサイバー攻撃を検知するのに用いられてもよい。得られた当該データセットに基づいて解析エンジンが、特定のウェブフェーシングアプリケーションの活動を監視・探査するために前記フレームワークの計測されたコードを経由して、特定の関数およびデータベースクエリをリッスンするようにチューニングされてもよい。このようにして当該解析エンジンは、前記データストリームにおけるノイズを除去して、前記アプリケーションにおいてユーザデータを処理する特定の関数(又はメソッド)、スレッドおよびメモリアクセスのみに集中してもよく、つまりこのようなものだけを選別してもよい。また、前記データセットは、当該データセット内に記録された、パケット、関数、データベースクエリ、スレッド及びメモリアクセスに関係するコンテキストに基づき、当該パケット、関数、データベースクエリ、スレッドおよびメモリアクセスの、データパラメータ及びフィールドを探査してもよい。さらに、前記データセットに基づいて前記解析エンジンは、前記フレームワークにわたって活動を、特定のユーザ、セッションなどに関して追跡および探査するようにチューニングされてもよい。
【0040】
<パターンマッチングベースのデータセット抽出の方法>
図6は、本発明の実施形態におけるパターンマッチングベースのデータセット抽出の例示的な方法600を示すフローチャートである。図6の方法は、ステップ610で、ウェブフェーシングアプリケーションのフレームワークで受信したデータストリームを捕捉することによって開始する。当該方法はパケットキャプチャツールを用いて、前記アプリケーションの前記フレームワーク固有のデータパケットを待ち受けて(リッスンして)且つ当該データパケットの特定のデータ部分(データの一部)(例えば、TCPデータ等)を抽出してもよい。次に当該方法は、ステップ620で、ビジネスロジックが処理する前の前記データストリームを処理するように前記フレームワークによって起動される、第1のセットの関数(又はメソッド)(第1の関数セット又は第1のメソッドセット)、スレッドIDおよびメモリアクセスを捕捉する。次に当該方法は、ステップ625で、前記ビジネスロジックが処理した後の前記データストリームを処理するように前記フレームワークによって起動される、第2のセットの関数(又はメソッド)(第2の関数セット又は第2のメソッドセット)、スレッドIDおよびメモリアクセスを捕捉する。一部の実施形態では、当該方法が、さらに、前記フレームワークの各方向における最後の関数を、前記第1および第2のセットの関数の一部として捕捉してもよい。捕捉された当該関数がデータのフラグメントを取り扱うものである場合には、当該方法が、さらに、前記処理パイプラインにおける当該関数のその前の関数とその次の関数とを捕捉してもよい。当該方法はステップ620で、さらに、捕捉されたセットの関数の、パラメータ、スレッドID、メモリアクセス、このようなアクセスのコンテンツおよび関連するデータを抽出してもよい。そして、当該方法は、ステップ630で、前記フレームワークにより生成された、バックエンドデータベースをクエリするデータベースサーバへの、ネットワークを介したデータベースクエリ、スレッドIDおよびメモリアクセスを捕捉する。当該方法はステップ630で、さらに、捕捉されたデータベースクエリにおける、表現式(式)、フィールドおよび関連するデータも捕捉してもよい。当該方法は、プロファイラを用いて前記第1および第2のセットの関数を捕捉し(ステップ620およびステップ625)、第2のパケットキャプチャツールを用いて前記データベースクエリを捕捉してもよい(ステップ630)。
【0041】
当該方法のステップ640では、捕捉されたデータを前記パケットキャプチャツールおよびプロファイラがパターンマッチング/機械学習エンジンに送信し、当該パターンマッチング/機械学習エンジンが前記データパケット、起動される第1および第2のセットの関数、スレッドID、メモリアクセスおよびデータベースクエリを、パターンによって、データストリームと照合させる。前記フレームワークのフロントエンドからの、捕捉された前記パケットデータ、起動される第1のセットの関数、スレッドIDおよびメモリアクセスが、第1のデータストリームと照合されてもよく、前記フレームワークのバックエンドにおける、起動される前記第2のセットの関数および捕捉されたデータベースクエリが、第2のデータストリームと照合されてもよい。当該方法は、ステップ650で、(前記第1および第2のセットの関数からの)適合した関数、適合したスレッドID、適合したメモリアクセス、適合したクエリおよびデータパケットを、1つ以上のデータセットに抽出する。当該方法は、前記第1のデータストリーム(フレームワークのフロントエンド)の前記パケット及び適合した前記第1のセットの関数を第1のデータセットに抽出し、前記第2のデータストリーム(フレームワークのバックエンド)の適合した前記第2のセットの関数及び捕捉されたデータベースクエリを第2のデータセットに抽出してもよい。
【0042】
当該方法は、さらに、前記データパケット、関数及びクエリの一部又は全部に関係する、ユーザ、ユーザデータ、セッション情報、IPアドレス、ポート番号、プロトコルコンテキスト、スレッドコンテキスト、スレッドID、メモリアクセス(例えば、メモリに読み書きする命令のアドレス、前記アプリケーションによってオペレートされるメモリの範囲等)、トラフィック方向などの情報を、各データセットに抽出してもよい。当該抽出の結果は、前記フレームワークにより処理されるユーザ供給データを取り扱う、一連の連結した関数、スレッド、メモリアクセス命令などである。当該方法は、前記アプリケーションにおける各メモリアクセス(読込み/書込み)のコンテンツを捕捉してもよい。よって、当該方法は、前記メモリアクセスを追跡して前記データセットを当該メモリアクセスと比較することにより、前記アプリケーションにおいてユーザデータを処理するのに参加するのがどの命令(読込み/書込み)かを特定してもよい。当該方法は、これらの関数、メモリアクセス、命令などを捕捉することにより、前記アプリケーション又はフレームワークのうちの、実行時(ランタイム)により詳細に調べられる必要のある1つ以上の脆弱性候補を分離できる。実行時にはこれらの特定された命令が、前記フレームワークで受信された(例えば、ウェブフェーシングアプリケーション要求内等の)悪意を持ってかつ巧妙に作成されたユーザデータを誤って取り扱ってしまうかを判断するために、隔離して実行できる。さらに、当該方法は、特定されたユーザ命令を処理するものではない関数を含めない(前記データセットから外す)ことにより、それらの外された関数を深く追求しないので、ウェブフェーシングアプリケーションの活動を探査する計測の効率を向上させることができる。
【0043】
当該方法のステップ660では、前記パターンマッチング/機械学習エンジンが各データセットの関数、クエリ、スレッドID、メモリアクセス、データパケット間の関係を、当該関数、クエリ、スレッドID、メモリアクセス及びデータパケットのパラメータおよびフィールドのデータに基づいて相関させる。この相関では、スレッド、関数、命令などのチェーンを前記データセット内に作成してもよい。これらデータセットは、脆弱性が悪用されないようにするために実行時に確認される必要があるデータセットである。当該相関は、さらに、前記第1のデータセットのデータパケットおよび関数と前記第2のデータセットの関数およびクエリとをコンテキストデータ構造のユーザに基づいて相関させることにより、前記第1のデータストリームと第2のデータストリームとの間でプロセス/スレッドを追跡およびマッピングすることを含んでもよい。当該追跡およびマッピングは、前記アプリケーションのユーザごとのコンテキストを確立するために用いられるスレッドIDチェーンを作成してもよい。当該プロセス/スレッドの追跡およびマッピングは、特定情報(ユーザ、セッションなど)を前記フレームワーク内のクロスコンテキストコンテナ及びローカル/インタープロセス通信(LPC/IPC)に配置して処理することによって実行されてもよい。前記第1のデータセットと第2のデータセットとの当該相関は、特定のウェブフェーシングアプリケーションの前記フレームワークにわたるエンドツーエンド処理を示す累積データセットをもたらしてもよい。当該方法は、ステップ670で、前記累積データセットをアナライザ(解析エンジン)でプログラムして、セキュリティ攻撃を検知するために当該アナライザを、前記特定のウェブフェーシングアプリケーションの活動を当該データセットに基づいて探査するようにチューニングする。当該探査の間、前記データセット内のスレッド、関数、命令などの前記チェーンが実行時に特定され、当該方法が当該チェーンを用いて、各関数の出力側にユーザコンテキストを付加し、入力から当該コンテキストを除去し(取り出し)、これら付加および除去を解析エンジンに報告してもよい。
【0044】
<アプリケーション実行時監視分析(ARMAS)インフラストラクチャ>
図7Aは、例示的なアプリケーション実行時監視解析(ARMAS)インフラストラクチャの上位レベルブロック図である。図2図6のシステムおよび方法から生成された前記データセットは、特定のアプリケーションに関係する活動を監視および解析するように解析エンジン737をチューニングするのに用いられてもよい。このインフラストラクチャは、スマートフォン、タブレット、ラップトップ及びデスクトップからハイエンドサーバにわたるコンピュータ装置を含む、各種ハードウェアで構成されてもよい。図7Aに示すように、監視エージェント702により実行されるデータ収集は、解析エンジン737により実行される解析から切り離されてもよく、これにより前記アプリケーションがオーバーヘッドとなってその性能が低下するのを抑制する。前記インフラストラクチャは、マルウェア攻撃に対する防御をハッカーが破るのを阻止することを可能にする。監視エージェント702は、ロードタイム及び実行時にデータを収集するようにアプリケーションと相互作用する。一部の実施形態では、監視エージェント702が、前記アプリケーションのフレームワークで受信されて処理されるデータストリームを捕捉する図4および図5の前記パケットキャプチャツールおよびプロファイラであってもよい。また、監視エージェント702は、捕捉された前記データストリームからデータセットを生成するために、パターンマッチング/機械学習エンジンと通信してもよい。
【0045】
アプリケーション701のインフラストラクチャは、プロセスメモリ703、サードパーティライブラリ704、カーネルサービス706および命令パイプライン707を含む。監視エージェント702のインフラストラクチャは、計測・解析エンジン(計測エンジン)705、グラフィカルユーザインターフェース(GUI)711、クライアントデーモン708、構成(コンフィグレーション)データベース709、ストリーミング・圧縮エンジン710、および中央演算処理装置(CPU)736を含む。アプリケーション701のローカル又は遠隔のユーザ750は当該アプリケーションと、キーボード、マウスもしくは同様の入出力装置のような装置を介して、またはパイプ、共有メモリもしくはソケットにより確立され得る通信チャネルを介したネットワークで相互作用する。これに応答して、前記アプリケーションのプロセス703は、実行のために、命令の適切なセットを命令パイプライン707にディスパッチする。また、前記アプリケーションは、自身の又はlibc.so(Linux(登録商標))、msvcrtxx.dll(Windows)などのサードパーティライブラリ704を利用してもよい。これらのライブラリからの機能が呼び出される際に、当該ライブラリからの適切な命令も、実行のために前記命令パイプライン707に挿入される。また、前記アプリケーションは、カーネル706からのメモリ、ファイル入出力などのシステムリソースを利用してもよい。前記アプリケーション、ライブラリおよび前記カーネルからのこれらの一連の命令は、一つの時間順のシーケンス上に編成されて、所与のユーザが所望するアプリケーション機能を送り出す。
【0046】
前記アプリケーションのコードのメモリへのロードが開始すると、計測エンジン705は複数の異なるロードタイム動作を実行する。全てのモジュールがロードされると、前記アプリケーションの計測された命令がランタイムデータを生成する。クライアントデーモン708は、構成データベース709からの1つ以上の構成ファイルを読み出すことにより、CPU736において、計測・解析エンジン705のプロセス、ストリーミングエンジン710のプロセス、およびGUI711のプロセスを初期化する。クライアントデーモン708は、さらに、前記計測エンジン、ストリーミングエンジン、GUI、解析エンジン737、当該クライアントデーモン708間の相互通信パイプを初期化する。当該クライアントデーモンは、さらに、当該クライアントデーモン自身も含め、監視エージェント702のいずれかのプロセスが応答しなくなったり停止したりした場合に、当該プロセスが再生されることを確実にする。これによって、監視エージェント702は、企業向け製品としての利用が保証される。
【0047】
計測・解析エンジン737は、前記アプリケーションから収集されたロード及びランタイムデータを前記ストリーミングエンジンに収める。計測・解析エンジン737は、図4および図5の前記パターンマッチング/機械学習エンジンにより生成された前記データセットに基づいてデータを収めてもよい。前記ストリーミングエンジンは、監視エージェント702からの生データをPDUにパッケージ化する。そして、前記ストリーミングエンジンは、当該PDUを、高帯域幅・低レイテンシ通信チャネル712を介して解析エンジン737に収める。監視エージェント702と解析エンジン737とが同じマシンに配置されている場合、このチャネルはメモリバスで実現できる。これらのエンティティが異なるハードウェアに配置されているものの物理的に近接している場合、当該チャネルは、インターネットを介して前記ロード及びランタイムデータを伝送するためのリモートコネクションが当該エンティティ間に確立されることを可能にするイーサネット又はファイバベースのトランスポートで実現できる。
【0048】
解析エンジン737のインフラストラクチャは、ネットワークインターフェースカード(NIC)713、パケットプール714、タイムスタンプエンジン715、プロセッサファブリック716、ハッシングエンジン717、TCAMエンジン718、アプリケーションマップデータベース719、およびREGEXエンジン740を構成するスレッドコンテキストデータベース720を含む。解析エンジン737のインフラストラクチャは、さらに、コンテンツ解析エンジン721、イベント・イベントチェーン722、イベント管理エンジン723、イベントログ724、アプライアンスデーモン725、解析エンジン構成(コンフィグレーション)データベース726、ネットワークインターフェース727、ダッシュボード(又はCMS)728、SMS/SMTPサーバ729、OTPサーバ730、アップグレードクライアント731、ソフトウェアアップグレードサーバ732、ソフトウェアイメージ733、イベントアップデートクライアント734、およびイベントアップグレードサーバ735を含む。
【0049】
PDUは、プロトコルヘッダと共に、ネットワークインターフェースカード713でインターセプトされて、当該ネットワークインターフェースカード713から前記PDUが取り出されて、パケットプール714に収められる。当該PDUのタイムスタンプフィールドが、タイムスタンプエンジン715により充填される。これにより、パケットが前記パケットプールバッファ内に過度に長時間留まらないことが確実となる。
【0050】
プロセッサファブリック716が前記パケットバッファからパケットを取出し、アドレスフィールドがハッシュ化されて当該パケット内の適切な位置に戻される。この処理は、ハッシングエンジン717により実行される。そして、前記プロセッサファブリックが前記パケットバッファからパケットを、当該パケットが到達した順に取り除き始める。ロードタイムフェーズからの情報を有するパケットは、関係するデータが抽出されてアプリケーションマップデータベース719に記憶されるように処理される。ランタイムフェーズからの情報を有するパケットは、図6に従って処理される。解析エンジン737の効率は、前記プロセッサファブリック内のプロセッサの数に基づいて上昇または下降し得る。
【0051】
遷移の対象であるデータは、スレッドごとにテーブルを有するスレッドコンテキストデータベース720に保存される。また、前記プロセッサファブリックは、TCAMエンジン718を用いて遷移及びメモリ領域の探索を実行する。前記プロセッサファブリックはハッシュを用いてルックアップを実行するので、実際に費やされる時間は予測可能で且つ極めて短い。前記ファブリック内のプロセッサの数を慎重に選択することにより、パケット当たりのスループットを適宜変更可能である。
【0052】
解析エンジン737が探索を実行すると、当該解析エンジン737は、有効でない遷移、重要/管理者機能もしくはシステムコールの有効でない処理を、見つける場合があり、または適切でない箇所へのメモリ書込みを見つける場合がある。これらの場合のいずれにおいても、解析エンジン737はイベント・イベントチェーンデータベース722に記憶されたポリシーで記述されている、プログラムされた深刻度のイベントを、イベント管理エンジン723にディスパッチする。生イベントログは、イベントログデータベース724に記憶される。また、前記ダッシュボードが、当該イベントログにアクセスしてアプリケーション状態を表示することができる。
【0053】
また、イベント・イベントチェーンデータベース722における各イベントには、救済動作が対応付けられている。ユーザはこの救済動作を、「イベントを無視する」から「スレッドを終了する」までの両極端な動作の間に存在する様々な動作から設定することが可能である。推奨される救済動作が、イベントアップデートクライアント734およびイベントアップグレードサーバ735を用いて解析者に提案されることができる。そのような推奨される動作を変更するために解析者は、そのためにダッシュボード728を使用することが可能である。当該ダッシュボードは、監視中の各アプリケーションの状態を表示してセキュリティ解析者が当該アプリケーションをある程度操作する(例えば、当該アプリケーションを開始する、停止させる等)ことを可能にするGUIインターフェースを提供する。イベントが生成されると、前記イベントチェーンが通常状態から次の状態へと移行する。この新しい状態に対応付けられた救済動作が取られることができる。この救済動作が「無視」以外の動作を伴うものである場合には、SMS又はSMTPサーバ729を用いてセキュリティ解析者に通知が送信される。当該セキュリティ解析者のSMS/SMTPアドレスは、LDAP又は他のディレクトリプロトコルを用いて突き止められ得る。前記ダッシュボードからアプリケーションを開始又は停止させるには管理者権限が必要であり、セキュリティ解析者はOTPサーバ730を用いた本人証明が必要である。
【0054】
また、新たなイベントが作成されてイベント・イベントチェーンデータベース722に、深刻度および解析者に提案される救済動作と共にリンクされ得る。これにより、ある装置における新たな攻撃についての固有のイベント及びイベントチェーンが、他の装置にディスパッチされることが可能となる。この目的のために、新たなイベント及びイベントチェーンは全てイベントアップグレードサーバ735にロードされる。イベントアップデートクライアント734は、イベントアップグレードサーバ735に定期的に接続し、新たなイベント及びイベントチェーンを取り出すために当該イベントアップグレードサーバ735に対して本物証明を行う。そして、前記イベントアップデートクライアントは、これらの新たなイベント及びイベントチェーンをイベント・イベントチェーンデータベース722にロードする。コンテンツ解析エンジン721は前記アプリケーションを、当該新たなイベントチェーン内にカプセル化されている新たな攻撃に関して追跡し始めることができる。
【0055】
前記クライアントデーモンと同様に、アプライアンスデーモン725は、解析エンジン737上で実行する各種プロセスを開始する役割を果たす。この目的のために、アプライアンスデーモン725は、解析エンジン構成データベース726から構成情報を読み出す必要がある。当該デーモンは、さらに、解析エンジン737における全てのプロセスのためのハートビートポールを実行する役割を果たす。これは、解析エンジン737エコシステムにおける全ての装置が常に最良の動作状態にあることを確実にする。連続するハートビートが3回欠けると、対象のプロセスが応答していないことを示唆する。任意のプロセスが早まって終了した場合には、前記デーモンが当該プロセスを、当該デーモン自身も含めて復活させる。
【0056】
ソフトウェアが、当該ソフトウェアのエラーを修正するなどの目的で、アプライアンスホスト、解析エンジン737またはクライアントにおいてアップグレードされることがある。この目的のために、アップグレードクライアント731は、最新のソフトウェアが入手可能となるソフトウェアアップグレードサーバ732を常に確認する。当該クライアントは、解析エンジン737又は当該クライアントにおけるエンティティが古いイメージを動作させていることを発見した場合、解析者が当該古いイメージをソフトウェアアップグレードサーバ732からの新しいイメージによってアップグレードさせることを可能にする。新しいイメージは、システムイメージ733としてまとめられている。これにより、アプライアンスまたはホストにテスト済みの互換イメージを用意しておくことが可能となる。解析エンジン737又は監視エージェント702におけるサブシステムについての所与のイメージが前記システムイメージのうちの同じ構成要素についてのイメージと合致しない場合には、全てのイメージが以前の既知の良好なシステムイメージにロールバックされる。
【0057】
<ARMAS通信用のPDU>
【0058】
図7Bに、図7Aの監視エージェント702と解析エンジン737との間でデータを伝送するのに用いられる例示的なプロトコルデータユニット(PDU)を示す。監視エージェント702と解析エンジン737とは、互いに効果的に協働するために、前記PDUを用いて互いに通信する。具体的に述べると、前記PDUは監視エージェント702により、前記アプリケーションの抽出されたモデルおよび/または収集されたランタイムデータをパッケージ化して解析エンジン737に伝送するために使用され得る。前記PDUは、監視エージェント702と解析エンジン737との間で伝送される情報の種類ごとにフィールドを備える。前記PDUは、アプリケーション提供データセクションと、生成HW/CAEセクションと、コンテンツ解析エンジン又は生データセクションとに分けられる。
【0059】
前記アプリケーション提供データセクションは、各種レジスタからのデータ、ならびに当該セクションの別個のフィールドに配置される発信元アドレス及び宛先アドレスを含む。プロトコルバージョン752は、前記PDUのバージョン番号を有する。発信元と宛先は、長期的にプロトコルバージョンが変化しても互いに通信することが可能である必要がある。この8ビットのフィールドは、ソースエンティティにより生成されたパケットのバージョン番号を記述する。当該プロトコルバージョンフィールドの後には、現在未使用の予備フィールド756が続く。
【0060】
前記アプリケーション提供データセクションにおける次のフィールドは、メッセージ発信元/宛先識別子757,753,754であり、図7Aに示す解析エンジンインフラストラクチャ内でトラフィックを交換するために使用される。図7に示す各種エンティティは、当該エンティティ間でトラフィックを交換する場合がある。これらの全ての装置がIPアドレスを有したり必要としたりするわけではなく、そのため(ハードウェアとホストとの)2つのクエリルータエンジンが、前記メッセージ発信元フィールド及び宛先フィールドを用いて内的にトラフィックをルーティングする。一部のメッセージは、解析エンジン737内のエンティティにネットワークを介して移動する必要がある。この目的のために、前記エンティティには次のようなIDが振り当てられる。所与の解析エンジンアプライアンスは、複数のアクセラレータカードを備える可能性がある。各カードが固有のIPアドレスを有するので、各種エンティティは固有のIDを有する。また、前述したインフラストラクチャは、複数のアプリケーションを実行する可能性がある。各アプリケーションサーバが固有のIPアドレスを有するので、対応する監視エージェント側のエンティティも固有のIDを有する。
【0061】
[監視エージェント側のエンティティ]
1.GUI
2.監視・解析エンジン
3.クライアントメッセージルータ
4.ストリーミングエンジン
5.クライアント側デーモン
6.CLIエンジン
7.クライアントウォッチドッグ
8.クライアント圧縮ブロック
9.クライアントiWarpイーサネットドライバ(100Mb/1Gb/10Gb)
[各PCIカードエンティティ(開始アドレス=20+n*20)]
20.セキュラライザTOEブロック
21.セキュラライザPCIブリッジ
22.解凍ブロック
23.メッセージ検証ブロック
24.パケットハッシングブロック
25.タイムスタンピングブロック
26.メッセージタイムアウトタイマブロック
27.統計カウンタブロック
28.セキュラライザクエリルータエンジン
29.セキュラライザアシスト
[セキュラライザホストエンティティ]
200.セキュラライザPCIeドライバ
201.ホストルーティングエンジン
202.コンテンツ解析エンジン
203.ログマネージャ
204.デーモン
205.ウェブエンジン
206.ウォッチドッグ
207.IPCメッセージングバス
208.構成データベース
209.ログデータベース
[SIEMコネクタ]
220.SIEMコネクタ1−Virsec Dashboard(ダッシュボード)
221.SIEMコネクタ2−HP ArcSight
222.SIEMコネクタ3−IBM QRadar
223.SIEMコネクタ4−Alien Vault USM
[セキュラライザインフラストラクチャエンティティ]
230.Virsecダッシュボード
231.SMTPサーバ
232.LDAPサーバ
233.SMSサーバ
234.エンタイトルメントサーバ
235.データベースバックアップサーバ
236.OTPクライアント
237.OTPサーバ
238.チェックサムサーバ
239.チケッティングサーバ
240.Virsecルールサーバ
241.Virsecアップデートサーバ
[全てのユーザアプリケーション]
255.ユーザアプリケーション(アプリケーションPIDが、クエリを発行するアプリケーションを特定するのに使用される。)
【0062】
前記アプリケーション提供データセクションにおける他のフィールドは、伝送されるデータの種類を示すメッセージタイプフィールド755である。最上位レベルで言えば、メッセージの種類には、各種ローカル監視エージェント側エンティティ間で流れるものと、解析エンジンアプライアンス側エンティティ間で流れるものと、クライアント側エンティティとアプライアンス側エンティティとの間で流れるものとの、3つの異なる種類のものがある。また、ネットワークを介して移動する必要のあるメッセージは、OSIモデル及び他のプロトコルに準拠する必要がある。
【0063】
前記アプリケーション提供データセクションにおける次のフィールドは、パケットのシーケンス識別子を含むパケットシーケンス番号フィールドである。前記ストリーミングエンジンは、失われたパケットについてエラー復元を実行する。この目的のために前記ストリーミングエンジンは、パケットを一意的に識別する必要がある。インクリメントする符号付き64ビットパケットシーケンス番号が前記ストリーミングエンジンにより挿入されて、残りの解析エンジンインフラストラクチャに単に渡される。当該シーケンス番号は、64ビット限度に達すると0から再び開始してもよい。ハートビート、ログメッセージなどのアプリケーション非関連のパケットの場合には、当該シーケンス番号が−1とされてもよい。
【0064】
前記アプリケーション提供データセクションは、さらに、暗号化目的のために用いられるカナリアを有するカナリアメッセージフィールドを含む。監視エージェント702および解析エンジン737にとって、共通の(ただし、アプリケーション立上り時間、PID、ライセンス文字列、認証されたユーザ名などの非一定の)情報からどのようにして前記カナリアを算出するかは既知である。
【0065】
前記アプリケーション提供データセクションは、さらに、全てのメッセージで使用される汎用フィールドを含む。アプリケーションソース命令アドレスフィールド780、アプリケーション宛先命令アドレスフィールド758、メモリ開始アドレスポインタフィールド759、メモリ終了アドレスポインタフィールド760、アプリケーションPIDフィールド762、スレッドIDフィールド763、解析エンジン到達タイムスタンプフィールド764、および解析エンジン出発タイムスタンプフィールド765は、汎用的なアプリケーションデータを保持する。
【0066】
前記PDUは、さらに、生成HW/CAEセクションを備える。解析を容易にし且つ一定のタイムバジェットを維持するために解析エンジン737は、前記発信元・宛先アドレスフィールドをハッシュ化して前記PDUを処理に先立って更新する。前記PDUの前記生成HW/CAEセクションは、そのハッシュ化されたデータが後で利用されるために配されるセクションである。このセクションは、ハッシュ化アプリケーション発信元命令アドレスフィールド766、ハッシュ化アプリケーション宛先命令アドレスフィールド767、ハッシュ化メモリ開始アドレスフィールド768、およびハッシュ化メモリ終了アドレスフィールド769を含む。前記生成HW/CAEセクションは、さらに、ハードコード化コンテンツ開始マジックヘッダ、API名マジックヘッダ、コールコンテキストマジックヘッダ及びコール生データマジックヘッダを含む、前記カナリアに関係する他のフィールド771を含み、これらは全てのPDUパケットに存在している。
【0067】
前記生成HW/CAEセクションは、さらに、他の構成及びエラーデータ(結果、コンフィギュレーションビット、動作モード、エラーコード及び動作モードデータを含む)を特定するためのフィールド770を含む。当該フィールドのうちの「結果」部分は、様々な解析エンジンクエリ(遷移プレイブッククエリ、コードレイアウトクエリ、メモリ(スタック又はヒープ)オーバーランクエリ、およびディープ検査クエリ)のブーリアン結果を返すようにセグメント化されている。当該フィールドのうちの「コンフィギュレーションビット」部分は、圧縮フラグ、デモフラグまたはコロケーテッドフラグがセットされていることを示す。当該フィールド内に圧縮フラグが存在していると、パケットが圧縮モードで返されるべきであることを解析エンジン737に示している。デモフラグは、システムの有効なライセンスが存在していないので当該システムがデモモードであることを示す。このモードでは、ログやイベントの全てが利用可能なわけではない。コロケーテッドフラグは、前記アプリケーションが解析エンジン737で実行されているため、当該アプリケーションに返す必要のあるパケットをどこに送信すべきかを、ホストクエリルータエンジンが決定可能であるということを示す。このフラグがセットされているとパケットはPCIブリッジを介して送信され、そうでなければPCIカードのイーサネットインターフェースで送信される。当該フィールドのうちの「動作モード」部分は、システムがパラノイド、監視および学習モードのどのモードであるのかを示す。これらのモードについては、本セクションにおいて後述する。最後に、当該フィールドのうちの「エラーコード」部分は、システムにおけるエラーを示す。当該エラーコードの最初の8ビットは、メッセージ発信元に対応する。残りの12ビットは、各サブシステムにより報告された実際のエラーに対応する。
【0068】
前記PDUは、さらに、コンテンツ解析エンジン又は生データセクションを備える。PDUにおけるこのセクションには、OSライブラリコール及びシステムコールの引数、戻り値などの全ての可変データが配置される。このセクションにおけるデータは、前記アプリケーションから収集されたデータのコンテンツを含み、主にコンテンツ解析エンジン721に向けられている。このセクションは、可変サイズのAPI名又は番号フィールド772、コールコンテンツマジックヘッダフィールド777、可変サイズのコールコンテンツフィールド774、コール生データマジックヘッダフィールド778、可変サイズの生データコンテンツフィールド776、および2つの予備フィールド773,775を含む。また、これらのフィールドは、管理メッセージのためにオーバーロードされ得る。
【0069】
<デジタル処理環境>
図8に、本発明の実施形態が実現可能なコンピュータネットワーク又は同様のデジタル処理環境を示す。
【0070】
少なくとも1つのクライアントコンピュータ/装置50および少なくとも1つのサーバコンピュータ60が、アプリケーションプログラムなどを実行する処理装置、記憶装置および入出力装置を提供する。少なくとも1つのクライアントコンピュータ/装置50は、さらに、他のコンピューティングデバイス(他のクライアント装置/プロセス50および1つ以上の他のサーバコンピュータ60を含む)に通信ネットワーク70を介して接続され得る。通信ネットワーク70は、リモートアクセスネットワーク、グローバルネットワーク(例えば、インターネット等)、世界中のコンピュータの集まり、ローカルエリア又はワイドエリアネットワーク、およびプロトコル(例えば、TCP/IP、Bluetooth(登録商標)等)を現在用いて互いに通信するゲートウェイの一部であり得る。これら以外の電子デバイス/コンピュータネットワークアーキテクチャも好適である。
【0071】
クライアントコンピュータ/装置50が、データパケットおよび/またはウェブフェーシングアプリケーションフレームワークにおいて前記処理パイプラインによって起動される関数および/またはデータベースクエリを捕捉する、パケットキャプチャツール又はプロファイラとして構成されてもよい。サーバコンピュータ60が、クライアントコンピュータ/装置50により捕捉された前記データパケット、関数およびデータベースクエリを少なくとも1つのデータセット内でマッチおよび相関させる、パターンマッチング/機械学習エンジンとして構成されてもよい。サーバコンピュータ60は、個別のサーバコンピュータではなくクラウドネットワーク70の一部であってもよい。また、一部の実施形態では、サーバコンピュータ60が前記少なくとも1つのデータセットを、アナライザ(解析エンジン)として構成された第2のサーバコンピュータ60に送信してもよい。第2のサーバコンピュータ60は前記アナライザを、セキュリティイベントを検知するために特定のウェブフェーシングアプリケーションに関係する処理活動(受信したデータパケット、起動される関数、および起動されるデータベースクエリ)を待ち受けるように、前記少なくとも1つのデータセットに基づいてチューニングする。一部の実施形態では、クライアント50およびサーバ60が、前述した捕捉、相関およびチューニングを実行するために当該クライアントおよび当該サーバで実行される、クライアントアプリケーション又はコンポーネントを含んでもよい。
【0072】
図9は、図8のコンピュータシステムにおけるコンピュータ(例えば、クライアントプロセッサ/装置50、サーバコンピュータ60等)の例示的な内部構造を示す図である。各コンピュータ50,60は、コンピュータ又は処理システムの構成要素間でのデータ伝送に利用される一連のハードウェアラインであるシステムバス79を備える。システムバス79は、基本的に、コンピュータシステムの異なる構成要素(例えば、プロセッサ、ディスクストレージ、メモリ、入出力ポート、ネットワークポート等)同士を接続して当該構成要素間での情報の伝送を可能にする共有のコンジットである。システムバス79には、様々な入出力装置(例えば、キーボード、マウス、ディスプレイ、プリンタ、スピーカ等)をコンピュータ50,60に接続する入出力装置インターフェース82が取り付けられている。ネットワークインターフェース86は、ネットワーク(例えば、図8のネットワーク70等)に取り付けられた様々な他の装置にコンピュータが接続することを可能にする。メモリ90は、本発明の実施形態(例えば、本明細書で説明したセキュリティ監視エージェントの構成要素、計測エンジンの構成要素、解析エンジンの構成要素等)を実現するように用いられるコンピュータソフトウェア命令92およびデータ94を記憶する揮発性の記憶装置である。ディスクストレージ95は、本発明の実施形態を実現するように用いられるコンピュータソフトウェア命令92およびデータ94を記憶する不揮発性の記憶装置である。システムバス79には、さらに、コンピュータ命令を実行する中央演算処理装置84が取り付けられている。
【0073】
本発明の実施形態又は態様は、ハードウェア、ファームウェア又はソフトウェアの形態で実現されてもよい。ソフトウェアで実現された場合、当該ソフトウェアは、当該ソフトウェア又は当該ソフトウェアの命令のサブセットをプロセッサがロードすることを可能にするように構成された任意の非過渡的なコンピュータ読取り可能媒体に記憶されてもよい。そして、プロセッサが当該命令を実行し、当該プロセッサは、本明細書で説明した様式によって装置が動作するように又はそのような様式によって装置を動作させるように構成されている。
【0074】
また、本明細書では、ファームウェア、ソフトウェア、ルーチン又は命令が、データプロセッサの所与の動作および/または機能を実行するように説明しているかもしれない。しかし、本明細書に含まれたこのような説明は便宜上のものに過ぎず、実際にはそのような動作が、ファームウェア、ソフトウェア、ルーチン、命令などを実行するコンピューティングデバイス、プロセッサ、コントローラまたは他の装置により生じることを理解されたい。
【0075】
フローチャート、ブロック図およびネットワーク図は、構成要素の数がより多くても又はより少なくされてもよく、異なる配置構成にされてもよく、異なって表現されてもよいことを理解されたい。ただし、適用例によっては、実施形態の実行を示すブロック図、ネットワーク図、ならびにブロック図及びネットワーク図の数が、特定のものでなければならない場合もあることを理解されたい。
【0076】
つまり、さらなる実施形態が、多種多様なコンピュータアーキテクチャおよび/または物理的コンピュータおよび/または仮想的コンピュータおよび/またはクラウドコンピュータおよび/または幾つかのこれらの組合せによっても実現されてもよい。したがって、本明細書で説明したデータプロセッサは例示に過ぎず、実施形態を限定するものではない。
【0077】
本発明を例示的な実施形態を参照しながら具体的に図示・説明してきたが、当業者であれば、特許請求の範囲に包含される本発明の範囲を逸脱することなく形態や細部に様々な変更が施されてもよいことを理解するであろう。
なお、本発明は、実施の態様として以下の内容を含む。
〔態様1〕
コンピュータに実装される方法であって、
ウェブフェーシングアプリケーションのフレームワークで受信されたデータストリームを捕捉する過程と、
前記データストリームを処理する前記フレームワークによって起動される関数の第1の関数セットを捕捉する過程と、
捕捉された前記第1の関数セットのサブセットを、捕捉された前記データストリームのデータパケットと照合する過程と、
捕捉された前記第1の関数セットのうちの適合した前記サブセットと前記データパケットのデータとを、データセットに抽出する過程と、
セキュリティ攻撃を検知するために、抽出された前記データセットに基づいて前記ウェブフェーシングアプリケーションの活動を探査する過程と、
を備える、方法。
〔態様2〕
態様1に記載の方法において、さらに、
前記データストリームを処理する前記フレームワークによって起動される関数の第2の関数セットを捕捉する過程と、
データベースサーバへのデータベースクエリであって、前記フレームワークにより生成されるデータベースクエリを捕捉する過程と、
捕捉された少なくとも1つの前記データベースクエリを、捕捉された前記第2の関数セットのサブセットと照合する過程と、
捕捉されたデータベースクエリであって、適合した少なくとも1つの前記データベースクエリと、捕捉された前記第2の関数セットのうちの適合した前記サブセットとを、抽出された前記データセットに抽出する過程と、
を備える、方法。
〔態様3〕
態様2に記載の方法において、さらに、
適合した前記データパケット、捕捉された前記第1の関数セットのうちの適合した前記サブセット、捕捉された前記第2の関数セットのうちの適合した前記サブセット、および前記少なくとも1つのデータベースクエリの間の関係を相関させる過程であって、捕捉された前記第1の関数セットのうちの適合した前記サブセット、捕捉された前記第2の関数セットのうちの適合した前記サブセットおよび前記少なくとも1つのデータベースクエリを処理するのに用いられるスレッドを追跡することに基づく、相関させる過程と、
前記データセット内における、適合した前記データパケット、捕捉された前記第1の関数セットのうちの適合した前記サブセット、捕捉された前記第2の関数セットのうちの適合した前記サブセット、および前記少なくとも1つのデータベースクエリを、相関された前記関係に基づいてマッピングする過程と、
前記ウェブフェーシングアプリケーションの活動を、抽出された前記データセット内における、適合した前記データパケット、捕捉された前記第1の関数セットのうちの適合した前記サブセット、捕捉された前記第2の関数セットのうちの適合した前記サブセット、および前記少なくとも1つのデータベースクエリの前記マッピングに基づいて探査する過程と、
を備える、方法。
〔態様4〕
態様3に記載の方法において、捕捉された前記少なくとも1つのデータベースクエリを照合する前記過程が、前記第2の関数セットの捕捉された前記サブセットにおける少なくとも1つの捕捉された関数のパラメータのデータを、捕捉された前記少なくとも1つのデータベースクエリの表現式のデータとパターン照合することを含む、方法。
〔態様5〕
態様3に記載の方法において、前記活動を探査する前記過程が、さらに、
前記ウェブフェーシングアプリケーションのフレームワークで受信されたデータパケットを実行時に捕捉すること、
抽出された前記データセット内における、捕捉された前記第1の関数セットのうちの適合した前記サブセットおよび捕捉された前記第2の関数セットのうちの適合した前記サブセットそれぞれの起動される関数を前記データセット内に捕捉し、捕捉された前記データベースクエリそれぞれの起動されるデータベースクエリを前記データセット内に実行時に捕捉すること、
前記第1の関数セットの起動される関数ごとに、前記第2の関数セットのマッピングされた前記サブセットの起動と、マッピングされた前記少なくとも1つのデータベースクエリの起動とがないかを調べること、
前記第2の関数セットのマッピングされた前記サブセットとマッピングされた少なくとも1つのデータクエリとのうちの少なくとも一方が起動されない場合にセキュリティ攻撃と断定すること、
を含む、方法。
〔態様6〕
態様2に記載の方法において、(i)前記第1の関数セットの前記サブセットが、前記フレームワークのビジネスロジック層へのインターフェースで前記フレームワークによって起動され、(ii)前記第2の関数セットの前記サブセットが、前記フレームワークの前記ビジネスロジック層からのインターフェースで前記フレームワークによって起動される、方法。
〔態様7〕
態様1に記載の方法において、捕捉された前記第1の関数セットの前記サブセットを照合する前記過程が、捕捉された前記第1の関数セットの前記サブセットにおける少なくとも1つの捕捉された関数のパラメータにおけるデータを、前記データパケットのフィールドのデータとパターン照合することを含む、方法。
〔態様8〕
態様1に記載の方法において、データストリームを捕捉する前記過程が、さらに、前記データストリームを前記フレームワークのプロトコル構成に基づいて復号することを含む、方法。
〔態様9〕
態様1に記載の方法において、さらに、
前記データストリームの処理から、ユーザ、ユーザデータ、セッション情報、IPアドレス、ポート番号、プロトコルコンテキスト、スレッドID、スレッドコンテキスト、メモリへの読み書きの命令のアドレス、オペレートされるメモリの範囲、およびトラフィック方向のうちの少なくとも1つを、前記ウェブフェーシングアプリケーションの活動を探査するために、抽出された前記データセットに抽出する過程、
を備える、方法。
〔態様10〕
態様1に記載の方法において、前記フレームワークが、バイナリ言語、.NET言語、JAVA(登録商標)言語、PHP言語、Ruby言語およびPython言語のうちの少なくとも1つに従って構成されている、方法。
〔態様11〕
態様1に記載の方法において、さらに、
前記フレームワークにおける前記データストリームの処理の間に各メモリアクセスのコンテンツを捕捉する過程と、
捕捉された前記第1の関数セットおよび捕捉された第2の関数セットの命令であって、ユーザデータを処理するのに用いられる命令を特定するように、抽出された前記データセットを捕捉された各メモリアクセスと比較する過程と、
特定された前記命令のチェーンを作成する過程であって、作成された前記チェーンは、前記ウェブフェーシングアプリケーションにおける脆弱性を表すように前記データセットに抽出される、過程と、
前記作成されたチェーンを監視することにより、実行時に前記ウェブフェーシングアプリケーションの前記活動を探査する過程であって、捕捉された各関数の出力にユーザコンテンツを付加すること、および捕捉された各関数の入力からコンテキストを除去することを含む、探索する過程と、
を備える、方法。
〔態様12〕
ウェブフェーシングアプリケーションのフレームワークで受信されたデータストリームを捕捉するように構成された第1のトラフィックアナライザと、
前記データストリームを処理する前記フレームワークによって起動される第1の関数セットを捕捉するように構成された第1のプロファイラと、
捕捉された前記第1の関数セットのサブセットを、捕捉された前記データストリームのデータパケットと照合し、かつ、捕捉された前記第1の関数セットのうちの適合したサブセットをデータセットに抽出するように構成されたパターン照合エンジンと、
セキュリティ攻撃を検知するために、抽出された前記データセットに基づいて前記ウェブフェーシングアプリケーションの活動を監視するように構成されたプローブと、
を備える、コンピュータシステム。
〔態様13〕
態様12に記載のシステムにおいて、さらに、
前記データストリームを処理する前記フレームワークによって起動される第2の関数セットを捕捉するように構成された第2のプロファイラと、
データベースサーバへのデータベースクエリであって、前記フレームワークにより生成されるデータベースクエリを捕捉するように構成された第2のトラフィックアナライザと、
を備え、
前記パターン照合エンジンが、さらに、
捕捉された少なくとも1つの前記データベースクエリを、捕捉された前記第2の関数セットのサブセットと照合し、かつ、
捕捉されたデータベースクエイルであって、適合した少なくとも1つの前記データベースクエリと、捕捉された前記第2の関数セットの前記サブセットとを、抽出された前記データセットに抽出するように構成されている、システム。
〔態様14〕
態様13に記載のシステムにおいて、
前記パターンマッチングエンジンが、さらに、
適合した前記データパケット、捕捉された前記第1の関数セットのうちの適合した前記サブセット、捕捉された前記第2の関数セットのうちの適合した前記サブセット、および適合した前記少なくとも1つのデータベースクエリの間の関係を相関し、かつ、
抽出された前記データセット内における、適合した前記データパケット、捕捉された前記第1の関数セットのうちの適合した前記サブセット、捕捉された前記第2の関数セットのうちの適合した前記サブセット、および適合した前記少なくとも1つのデータベースクエリを、相関された前記関係に基づいてマッピングするように構成されており、
前記相関は、捕捉された前記第1の関数セットのうちの適合した前記サブセット、捕捉された前記第2の関数セットのうちの適合した前記サブセット、および適合した前記少なくとも1つのデータベースクエリを処理するのに用いられるスレッドを追跡することに基づき、
前記プローブが、さらに、前記ウェブフェーシングアプリケーションの活動を、抽出された前記データセット内における、適合した前記データパケット、捕捉された前記第1の関数セットのうちの適合した前記サブセット、捕捉された前記第2の関数セットのうちの適合した前記サブセット、および適合した前記少なくとも1つのデータベースクエリのマッピングに基づいて監視するように構成されている、システム。
〔態様15〕
態様14に記載のシステムにおいて、さらに、
ウェブフェーシングアプリケーションのフレームワークで受信されたデータパケットを実行時に捕捉するように構成された第3のトラフィックアナライザと、
捕捉された前記第1の関数セットのうちの適合した前記サブセットの起動される各関数を実行時に捕捉するように構成されたる第3のプロファイラと、
抽出された前記データセット内における、捕捉された前記第2の関数セットのうちの適合した前記サブセットの起動される各関数を前記データセット内に実行時に捕捉するように構成された第4のプロファイラと、
捕捉された前記データベースクエリのうち起動される各データベースクエリを前記データセット内に実行時に捕捉するように構成された第4のトラフィックアナライザと、
を備え、
前記プローブが、さらに、
前記第1の関数セットの起動される関数ごとに、前記第2のセットの関数のマッピングされた前記サブセットの起動と、マッピングされた前記少なくとも1つのデータベースクエリの起動とがないかを調べ、かつ、
前記第2の関数セットの前記マッピングされたサブセットとマッピングされた少なくとも1つのデータクエリとのうちの少なくとも一方が起動されなかった場合にセキュリティ攻撃と断定するように構成されている、システム。
〔態様16〕
態様14に記載のシステムにおいて、捕捉された前記少なくとも1つのデータベースクエリを照合することが、捕捉された前記第2の関数セットのパラメータにおけるデータを、捕捉された前記少なくとも1つのデータベースクエリの表現式のデータとパターン照合することを含む、システム。
〔態様17〕
態様12に記載のシステムにおいて、前記第1の関数セットを照合することが、前記第1の関数セットのパラメータにおけるデータを、前記データパケットのフィールドのデータとパターン照合することを含む、システム。
〔態様18〕
態様12に記載のシステムにおいて、(i)前記第1の関数セットの前記サブセットが、前記フレームワークのビジネスロジック層へのインターフェースで前記フレームワークによって起動され、(ii)前記第2の関数セットの前記サブセットが、前記フレームワークの前記ビジネスロジック層からのインターフェースで前記フレームワークによって起動される、システム。
〔態様19〕
態様12に記載のシステムにおいて、前記第1のトラフィックアナライザが、さらに、前記データストリームを前記フレームワークのプロトコル構成に基づいて復号するように構成されている、システム。
〔態様20〕
態様12に記載のシステムにおいて、前記パターンマッチングエンジンが、さらに、前記データストリームの処理から、ユーザ、ユーザデータ、セッション情報、IPアドレス、ポート番号、プロトコルコンテキスト、スレッドID、スレッドコンテキスト、メモリへの読み書きの命令のアドレス、オペレートされるメモリの範囲、およびトラフィック方向のうちの少なくとも1つを、前記ウェブフェーシングアプリケーションの活動を探査するために、抽出された前記データセットに抽出するように構成されている、システム。
〔態様21〕
態様12に記載のシステムにおいて、前記フレームワークが、バイナリ言語、.NET言語、JAVA(登録商標)言語、PHP言語、Ruby言語およびPython言語のうちの少なくとも1つに従って構成されている、システム。
〔態様22〕
態様12に記載のシステムにおいて、前記第1のプロファイラおよび第2のプロファイラが、さらに、前記フレームワークにおける前記データストリームの処理の間に各メモリアクセスのコンテンツを捕捉するように構成され、
前記パターンマッチングエンジンが、さらに、
捕捉された前記関数の命令であって、ユーザデータを処理するのに用いられる命令を特定するように、抽出された前記データセットを捕捉された各メモリアクセスと比較し、かつ、
特定された前記命令のチェーンを作成するように構成されており、
作成された前記チェーンは、前記ウェブフェーシングアプリケーションにおける脆弱性を表すように前記データセットに抽出され、
前記プローブが、さらに、前記作成されたチェーンを実行時に監視することにより、前記ウェブフェーシングアプリケーションの前記活動を監視するように構成され、当該監視が、捕捉された各関数の出力にユーザコンテンツを付加すること、捕捉された各関数の入力からコンテキストを除去すること、およびこれら付加および除去を解析エンジンに報告することを含む、システム。
【0078】
【数1】
【0079】
【数2】
【0080】
【数3】
【0081】
【数4】
図1
図2
図3
図4
図5
図6
図7A
図7B
図8
図9