JP6902037B2 - パターンマッチングベースのデータセット抽出 - Google Patents

パターンマッチングベースのデータセット抽出 Download PDF

Info

Publication number
JP6902037B2
JP6902037B2 JP2018538236A JP2018538236A JP6902037B2 JP 6902037 B2 JP6902037 B2 JP 6902037B2 JP 2018538236 A JP2018538236 A JP 2018538236A JP 2018538236 A JP2018538236 A JP 2018538236A JP 6902037 B2 JP6902037 B2 JP 6902037B2
Authority
JP
Japan
Prior art keywords
captured
data
subset
framework
matched
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2018538236A
Other languages
English (en)
Other versions
JP2019506674A5 (ja
JP2019506674A (ja
Inventor
グプタ・サチャ・ヴラ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Virsec Systems Inc
Original Assignee
Virsec Systems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Virsec Systems Inc filed Critical Virsec Systems Inc
Publication of JP2019506674A publication Critical patent/JP2019506674A/ja
Publication of JP2019506674A5 publication Critical patent/JP2019506674A5/ja
Application granted granted Critical
Publication of JP6902037B2 publication Critical patent/JP6902037B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1425Traffic logging, e.g. anomaly detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/552Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6227Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/04Processing captured monitoring data, e.g. for logfile generation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/12Network monitoring probes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1433Vulnerability analysis
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/1466Active attacks involving interception, injection, modification, spoofing of data unit addresses, e.g. hijacking, packet injection or TCP sequence number attacks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)
  • Debugging And Monitoring (AREA)

Description

関連出願
本願は、2016年1月22日付出願の米国仮特許出願第62/286,282号の利益を主張する。この仮特許出願の全教示内容は、参照をもって全体を本明細書に取り入れたものとする。
日を追うごとに、サイバー攻撃はますます洗練化されている。攻撃は、特定のアプリケーションにおける特定の脆弱性を悪用することを対象とする。このような攻撃の要因と影響は、ネットワーク層では識別不可能である。というのも、これらの攻撃は単純明快な攻撃の上を行き、明らかに悪意があると解釈されることが可能なネットワーク活動を引き起こさないからである。企業データベースは、クレジットカード番号、顧客の社会保障番号、健康記録、他の個人特定可能情報、詳細な顧客リスト、設計プラン、ソースコード、他の知的財産などの極めて高価値な情報が当該データベースに存在していることから、攻撃者が好んで標的とする。これらの標的型攻撃に対抗するために数多くのベンダが、ユーザのアクセス及び挙動をアプリケーションのマーカに紐付ける次世代ファイアウォールやウェブフェーシングアプリケーション(ウェブ上のアプリケーション)ファイアウォール、当該ベンダが不審と判断するコードをサンドボックス内で実行させてこのようなコードが観察可能な悪意のある活動を行うのを待つことを試みるサンドボックス技術などのサイバーセキュリティ製品を配備している。このような検知メカニズムに対してマルウェアは、当該マルウェアがその悪意のある意図を実際に解き放つ前に検知エンジンが諦めるのを待つなど、自身の挙動をしばしば順応させる。挙動のこのような変更は、現代のサイバーセキュリティソリューションにおける、攻撃の挙動を認識する機能、つまり、マルウェアの存在を適時に検知する機能を妨げる。
コンピュータアプリケーションの今日の大多数のマルウェア攻撃は、極めて巧妙に作られた入力データを供給することによって、悪意のあるコンテンツを注入して後に実行するか、又はデータベースからデータを抽出するという、悪意のある行為者の能力に由来している。これらの悪意のある活動は、企業の情報技術(IT)組織に悟られることなく遂行される可能性がある。このような悪意のあるコンテンツの注入は、不十分な入力検証を行う安全性の低いコードを特定して悪用することを意味する。今日のサイバーセキュリティ技術は、ネットワークトラフィック内の悪意のあるコンテンツもしくは当該コンテンツのソースを観察するか、アプリケーションのネットワーク挙動を追跡して当該ネットワーク挙動が過去に報告されたことのある異常活動を見せることを見込むか、または不審なコードの挙動を当該不審なコードがサーバに送信されて実行される前にサンドボックス内でスクリーニングすることを試みる。これらの技術は、上記のような悪意のあるコンテンツの実行によって表出する根本的な原因である引き金を高い信頼性で検知するのに十分な細かい粒度で、本物のウェブフェーシングアプリケーションをリアルタイムで調べる能力を有していない。
このような根本的な原因である引き金を検知するのに障害となるのは、アプリケーションのフレームワーク及びビジネスロジックを通り抜けるデータストリームの処理を追跡する能力がないことである。
本発明の実施形態は、フレームワークで受信されたデータストリームの大量のデータパケットを捕捉し、さらに、受信した当該データストリームの処理時に起動(トリガ)される、大量の関数、当該関数のパラメータ、およびデータベースクエリを捕捉する。これは、前述したフレームワークとビジネスロジックの両方における情報を捕捉することを含む。本発明の他の実施形態は、さらに、スレッドID、メモリへの読み書きの命令のアドレス、およびオペレート(操作)されるメモリのアドレス及び範囲を捕捉する。これらの実施形態は、さらに、パターンマッチングおよび機械学習を用いて、この大量の捕捉されたデータから、アプリケーション固有のパケット、関数、データベースクエリ、スレッドIDおよびメモリ操作を分離して、分離されたこれらパケット、関数、クエリ、メモリアクセス間の関係を相関させる(相関付ける)。分離されて相関されたこれらパケット、関数、クエリ、スレッドIDおよびメモリアクセスは、ユーザ、セッション、IPアドレス、ポート、プロトコル、スレッド、コードアドレス、メモリ操作(読込み/書込み)、対象のメモリアドレス及び範囲などの所与のコンテキストデータと共に、データセットに抽出される。当該データセットに従ってアナライザが、特定のアプリケーションに関係する活動を追跡および探査するために、相関されたパケット、関数及びクエリのセットをリッスンするようにチューニングされてもよい。このようなチューニングによって、当該アナライザは、上記のような悪意のあるコンテンツが実行される前に、根本的な原因である引き金を高い信頼性で検知することが可能となる。例えば、このようなチューニングによって、アナライザは、ユーザにより供給されたデータを取り扱う関数及び機械語を、当該関数及び機械語が悪意のあるコンテンツをどのように取り扱うかを突き止めるように隔離して調べることが可能となる。
本発明の実施形態は、特定のアプリケーションに関係する活動を探査するようにアナライザをチューニングするためのデータセットを生成するシステム及び方法に関する。前記システム及び方法は、アプリケーションのフレームワークで受信したデータストリームを捕捉する。例示的な実施形態では、前記フレームワークが、バイナリ言語、.NET言語、JAVA言語、PHP言語、Ruby言語およびPython言語のうちの少なくとも1つに従って記述されているものであってもよい。一部の実施形態では、第1のトラフィックアナライザ又はパケットキャプチャツール(パケット捕捉ツール)が、前記データストリームを捕捉するように構成されてもよい。前記システム及び方法は、さらに、前記データストリームを処理する前記フレームワークによって起動される関数の第1の関数セットを捕捉する。一部の実施形態では、第1のプロファイラが、前記アプリケーションにより実行される前記関数、スレッドIDおよびメモリアクセスを捕捉するように構成されてもよい。
前記システム及び方法は、捕捉された前記第1の関数セットのサブセットを、捕捉された前記データストリームのデータパケットと照合する。一部の実施形態では、パターンマッチングエンジン(パターン照合エンジン)が、この照合(マッチ)を実行するように構成されてもよい。一部の実施形態では、捕捉された前記第1の関数セットの前記サブセットを照合することが、これらの関数および/またはスレッドIDおよび/またはメモリアクセスのパラメータのデータを、前記データパケットのフィールドにおけるデータにパターンマッチ(パターン照合)することを含む。前記システム及び方法は、捕捉された前記第1の関数セットのうちの適合(match)した前記サブセットおよび/またはスレッドIDおよび/またはメモリアクセスを、データセットに抽出する。前記システム及び方法は、サイバー攻撃を検知するために、抽出された前記データセットに基づいて前記アプリケーションの活動を探査する。
一部の実施形態では、前記システム及び方法が、前記データストリームを処理する前記フレームワークによって起動される関数の第2の関数セットを捕捉する。一部の実施形態では、第2のプロファイラが、前記アプリケーションにより実行される関数の前記第2の関数セット、スレッドIDおよびメモリアクセスを捕捉するように構成されてもよい。これらの実施形態では、前記システム及び方法が、さらに、データベースサーバへのデータベースクエリであって、前記フレームワークにより生成されるデータベースクエリを捕捉する。一部の実施形態では、第2のトラフィックアナライザ又はパケットキャプチャツールが、前記データベースクエリを捕捉するように構成されてもよい。これらの実施形態では、前記システム及び方法が、捕捉された少なくとも1つの前記データベースクエリを、捕捉された前記第2の関数セットのサブセットと照合する。捕捉された前記少なくとも1つのデータベースクエリを照合することは、捕捉された前記第2の関数セットのパラメータのデータを、捕捉された前記少なくとも1つのデータベースクエリの表現式のデータとパターン照合することを含む。これらの実施形態では、前記システム及び方法が、さらに、捕捉されたデータベースクエリであって、適合した少なくとも1つの前記データベースクエリと、捕捉された前記第2の関数セットのうちの適合した前記サブセットとを、抽出された前記データセットに抽出する。
これらの実施形態のうちの一部の実施形態では、前記システム及び方法が、さらに、適合した前記データパケット、捕捉された前記第1の関数セットのうちの適合したサブセット、捕捉された前記第2の関数セットのうちの適合したサブセット、メモリアクセスの適合したコンテンツ、および適合した少なくとも1つのデータベースクエリの間の関係を相関する(相関付ける)。前記システム及び方法は、前記データセット内における、適合した前記データパケット、捕捉された関数のうちの適合したサブセット、メモリアクセスの適合したコンテンツ、適合した少なくとも1つのデータベースクエリを、相関された前記関係に基づいてマッピングする。前記システム及び方法は、さらに、前記アプリケーションの活動を、抽出された前記データセット内における、適合した前記データパケット、捕捉された関数のうちの適合したサブセット、メモリアクセスの適合したコンテンツ、および適合した少なくとも1つのデータベースクエリの前記マッピングに基づいて探査する。
一部の実施形態では、前記システム及び方法が、前記データストリームの処理時に各メモリアクセスのコンテンツを捕捉する。前記システム及び方法は、捕捉された前記第1の関数セットおよび第2の関数セットのうち、ユーザデータを処理するのに用いられる関数の命令を特定するように、抽出された前記データセットを捕捉された各メモリアクセスと比較する。前記システム及び方法は、特定された前記命令のチェーンを作成し、これにより、前記データセットに抽出される当該チェーンが、前記ウェブフェーシングアプリケーションで監視されるべき脆弱性を表す。前記システム及び方法は、命令の作成された前記チェーンを監視することにより、実行時(ランタイム)に前記ウェブフェーシングアプリケーションの前記活動を探査する。当該探査は、捕捉された各関数の出力にユーザコンテンツを付加すること、および捕捉された各関数の入力からコンテキストを除去することを含む。例示的な実施形態では、捕捉された前記第1の関数セットが、前記フレームワークのビジネスロジック層へのインターフェースで前記フレームワークによって起動され、捕捉された前記第2の関数セットが、前記フレームワークの前記ビジネスロジック層からのインターフェースで前記フレームワークによって起動される。
例示的な一部の実施形態では、前記データストリームを捕捉することが、さらに、前記システム及び方法に、前記データストリームを前記フレームワークのプロトコル構成に基づいて復号させることを含む。例示的な一部の実施形態では、前記システム及び方法が、さらに、前記データストリームの処理から、ユーザ、ユーザデータ、セッション情報、IPアドレス、ポート番号、プロトコルコンテキスト、スレッドコンテキスト、およびトラフィック方向のうちの少なくとも1つを、前記ウェブフェーシングアプリケーションの活動を探査するために、抽出される前記データセットに抽出する。
例示的な一部の実施形態では、前記システム及び方法が、前記ウェブフェーシングアプリケーションの前記フレームワークで受信されたデータパケットを実行時に捕捉することにより、前記活動を探査する。例示的な実施形態では、第3のトラフィックアナライザが、前記データパケットを捕捉するように構成されている。前記システム及び方法は、さらに、抽出された前記データセット内において、捕捉された前記第1の関数セットのうちの適合した前記サブセットおよび捕捉された前記第2の関数セットのうちの適合した前記サブセットのうち、起動される関数をデータセット内に捕捉し、捕捉された前記データベースクエリのうち、起動される各データベースクエリを前記データセット内に捕捉する。例示的な実施形態では、第3のプロファイラが前記第1の関数セットを捕捉するように構成されており、第4のプロファイラが前記第2の関数セットを捕捉するように構成されており、第4のトラフィックアナライザが前記データベースクエリを捕捉するように構成されている。前記システム及び方法は、前記第1の関数セットのうちの起動される関数ごとに、前記第2の関数セットのうちのマッピングされた前記サブセットの起動と、マッピングされた前記少なくとも1つのデータベースクエリの起動とを確認する。前記システム及び方法は、捕捉された前記パケットのデータが、起動される各関数のパラメータのデータ及び起動される各データベースクエリの表現式のデータと適合しない場合に、セキュリティ攻撃と断定する。
前述の内容は、添付の図面に示す例示的な実施形態についての以下のより詳細な説明から明らかになる。異なる図をとおして、同じ参照符号は同じ構成/構成要素を指すものとする。図面は必ずしも縮尺どおりではなく、重点は本発明の実施形態を示すことに置かれている。
知能型持続(advanced persistent)マルウェア攻撃の例示的な構成を示す図である。 本発明の実施形態における例示的なアプリケーションインフラストラクチャを示す図である。 本発明の実施形態におけるアプリケーションフレームワークのブロック図である。 本発明の実施形態における暗号化されていないデータストリームでのパターンマッチングベースのデータセット抽出のブロック図である。 本発明の実施形態における暗号化されたデータストリームでのパターンマッチングベースのデータセット抽出のブロック図である。 本発明の実施形態におけるパターンマッチングベースのデータセット抽出の例示的な方法を示すフローチャートである。 本発明の実施形態におけるアプリケーション実行時監視解析(ARMAS)の例示的なブロック図である。 図7AのARMASインフラストラクチャ内でデータを伝送するのに用いられる例示的なプロトコルデータユニット(PDU)を示す図である。 本発明の実施形態が実現可能なコンピュータネットワーク又は同様のデジタル処理環境を示す図である。 図8のコンピュータシステムにおけるコンピュータ(例えば、クライアントプロセッサ/装置、サーバコンピュータ等)の例示的な内部構造を示す図である。
以下では、本発明の例示的な実施形態について説明する。
本明細書で引用する全ての特許、特許出願公報及び参考文献の全教示内容は、参照をもって本明細書に取り入れたものとする。
<例示的なマルウェア攻撃>
図1に、知能型持続(advanced persistent)マルウェア攻撃の一例を示す。このケースでは、悪意のある行為者(つまりハッカー)が当該行為者自身のインフラストラクチャ102から、nmapなどのスキャンツール104を用いて企業108の顧客対応インフラストラクチャを遠隔でスキャンするものとする。このスキャンが既知の脆弱性又はゼロデイ脆弱性を有するコードを発見すると、行為者はシェルコード106をインストールし、遠隔の企業サーバ(すなわち、標的)110の制御を獲得して企業ネットワークにアクセスする。当該ネットワークに侵入した悪意のある行為者は、アプリケーションへの攻撃を容易にするために追加のツールをロードする。これらのツールは、nmapおよび/またはポートスキャナおよび/またはパスワードクラッキングツールおよび/またはFTPクライアントおよび/または圧縮ツールおよび/またはハッシュ化および/または暗号化・復号ツールを含み得る。
次に行為者は、企業インフラストラクチャにアクセスして、管理者権限を持つユーザがデータベース、ファイルリポジトリなどの高価値の標的にログインする際のマシン114,116を探す。行為者は、ユーザのアクセス資格情報をスクレイピングしたり(引っこ抜いたり)さらなるハッキングツールのホームを見つけ出したりする目的で、マシン114,116を探す。脆弱なアプリケーションを有するマシン114,116を見つけ出すと悪意のある行為者は、遠隔にある自身のハッカー指令統制センタ112に接続し直して、資格情報をスクレイピングし、標的110に侵入して当該標的110にアクセスする可能性がある。標的にアクセスすると、専門的な追加のツール(さらなる商売道具)が当該標的110にロードされる。また、権限を持つユーザがスマートフォン、ラップトップなどのモバイルデバイスを喫茶店、空港、ホテルなどの保護されていないネットワークに持ち出した際に、当該モバイルデバイスにマルウェアが植え付けられる場合もある。他のケースでは、内部の人間が標的のマシンを、アプリケーションにより実行されたプロセスが動作している最中にウィルス又は他のマルウェア攻撃で感染させる場合もある。
企業データベースは、権限を持つユーザが企業にとって極めて高価値である情報にアクセスし得ることから、悪意のある行為者が好んで標的にする。例えば、これらのデータベースでは、権限を持つユーザが全顧客に関する大量の機密顧客情報へのアクセス権を有するのに対し、通常のユーザは当該機密情報のうちの自身に関係する部分にのみアクセス権を有する。悪意のある行為者は資格情報が得られた後、権限を持つユーザとしてデータベース及びファイルリポジトリ118に接続し、実名、自宅の住所、社会保障、運転免許証、生年月日、医療記録、クレジット/デビットカード番号などの金融情報、電話番号、電子メールアドレス、ユーザ名及びパスワード、保険情報、詳細な顧客リスト、設計プラン、ソースコード、他の知的財産などといった高価値な機密情報を抽出する可能性がある。
悪意のある行為者は、この情報を、企業セキュリティ解析者の注意を引かないように、場合によっては圧縮・暗号化してからハッカー指令統制センタ112に少量ずつアップロードする可能性がある。この目的を達成するために悪意のある行為者は、ハッカー指令統制センタ112のIPアドレスを毎日変更したりプロキシを使用したりすることにより、企業の侵入検知システムがパターンを確立できないようにする。企業は典型的に毎日10GBを超えるデータを送受信するので、比較的少量のデータを短いバーストでアップロードしても気付かれない場合が多い。
他のケースでは、悪意のある行為者がSQLインジェクション攻撃などのデータベースクエリ注入攻撃を用いて初めにウェブシェルを投下してから、企業クライアント又は顧客に関する高価値な機密情報の抽出に進む可能性がある。また、悪意のある行為者は同様に、リモートファイルインジェクション(RFI)攻撃を用いてウェブフェーシングアプリケーション(ウェブ向けアプリケーション)に追加の機能を挿入可能である。悪意のある行為者は、このような機能に、全く無害なユーザ入力を用いてアクセス可能である。注入された当該機能が実行されると、前記ウェブフェーシングアプリケーションは、意図せずにウェブシェルをインストールし、かつ/あるいは、機密情報を悪意のある行為者に公開する。
このような攻撃が成功するのは、サイバーセキュリティソリューションが、特定のウェブフェーシングアプリケーションについて、ウェブフェーシングアプリケーションフレームワークでの処理パイプラインを探査することができず、悪意のある行為者がこの特定のウェブフェーシングアプリケーションの処理に関係するデータに干渉したか又は当該データを改変したかを突き止めることができないからである。ウェブフェーシングアプリケーションファイアウォール、侵入検知/防止エンジンなどのサイバーセキュリティソリューションは、特定のウェブフェーシングアプリケーションのウェブフェーシングアプリケーションフレームワークでの高粒度処理を追跡するようにチューニングできない。この理由の一部として、ウェブフェーシングアプリケーションフレームワークで受信されて処理される大量のデータから、アプリケーションを処理するのに用いられる特定のデータ、関数、データベースクエリ、スレッドID、およびメモリアクセスのコンテンツの分離や相関を可能にするサイバーセキュリティツールが存在しないことが挙げられる。このような分離・相関データがないため、これらのサイバーセキュリティソリューションは悪意のある行為者によるアプリケーションを介した攻撃を完全に検知することができない。
<ウェブフェーシングアプリケーションインフラストラクチャ>
図2に、セキュリティ攻撃に対して脆弱であり得る例示的なウェブフェーシングアプリケーションインフラストラクチャを示す。当該インフラストラクチャは、遠隔のウェブクライアント220を含む。ウェブクライアント220からユーザ又はマシンが、特定のウェブサイトでのトランザクションを実行するためのウェブ要求を生成する。当該ユーザ又はマシンはそのウェブ要求を、URLを入力したり当該ユーザのためにURLを入力するグラフィカルな選択肢を選択したりすることによって生成できる。ウェブクライアント220がそのウェブ要求を(例えば、HTTP、SOAP、REST、他の規格化された又は規格化されていない要求等として)ウェブサーバ240に送信して、当該ウェブサーバ240はそのウェブ要求を、他の大量のユーザからのウェブ要求と共にデータストリームとして受信できる。ウェブサーバ240は、当該データストリームを処理するアプリケーションサーバ260に動作可能に接続されている。ウェブサーバ240およびアプリケーションサーバ260は、バイナリ(Binary)、.NET、JAVA、PHP、Ruby、Pythonなどを含むがこれらに限定されないウェブフェーシングアプリケーションフレームワークタイプで構成されている。当該ウェブフェーシングアプリケーションフレームワークは、プレゼンテーションロジック層、ビジネスロジック層、データロジック層などを含むがこれらに限定されない複数のロジック層に分けられている可能性がある。
受信された前記データストリームは、(ウェブサーバ240及びアプリケーションサーバ260での)前記ウェブフェーシングアプリケーションフレームワークの前記ロジック層を通り抜けるパイプラインでインターセプト及び処理される。典型的な前記ウェブフェーシングアプリケーションは、さらに、前記フレームワークの出力において提供されるさらなるサービスを利用するために、データベースにクエリする。よって、アプリケーションサーバ260は前記ウェブフェーシングアプリケーションフレームワークの前記処理パイプライン内において、前記データストリームをさらにデータベースサーバ270に送信する可能性がある。アプリケーションサーバ260は前記処理パイプラインの終端部において、前記データストリームを(バックエンド)データベース275に通信する可能性がある。データベースサーバ270が当該データストリームを、データベースクエリ(例えば、SQLクエリ、ストアドプロシージャコール等)としてデータベース275に通信して、前記ウェブ要求に関係するデータ記録を当該データベース275から取り出す可能性がある。データベースサーバ270は、取り出された当該データ記録からのデータを要求側ユーザに返す可能性がある。そうするにあたってデータサーバ270は、このデータをデータストリームとしてウェブサーバ240に、前記フレームワークの前記処理パイプライン内で逆方向に送信する。ウェブサーバ240はこのデータを(例えば、HTTP応答等として)、対応するユーザの遠隔のウェブクライアント220に送信する。
本発明の実施形態は前記データストリームを、前記フレームワークの前記ロジック層を通り抜ける前記処理パイプラインにおける様々なステージで捕捉する(取り込む)。前記データストリームはそのステージに応じて、データパケットからの生データ(例えば、生TCPデータ等)として捕捉されたり、当該データストリームを処理するように前記フレームワークによって起動される関数として捕捉されたり、メモリアクセスとして捕捉されたり、データベース記録を取り出すように前記フレームワークによって起動されるデータベースクエリとして捕捉されたりしてもよい。これらの実施形態は、捕捉された生データ、関数およびデータベースクエリに対してパターンマッチング(パターン照合)及び相関(相互に関係付けること)を実行することにより、特定のウェブサイト(ウェブフェーシングアプリケーション)の前記フレームワークにおける様々なステージにおける処理パターンを示すデータセットを抽出する。
図3は、本発明の実施形態におけるウェブフェーシングアプリケーションフレームワークのブロック図である。ほとんどのウェブフェーシングアプリケーションは、図3に示すように、アプリケーションフレームワークにより提供される「コンテナ」内で実行されるか又は当該「コンテナ」でホストされるように構築されている。この例では、前記アプリケーションフレームワークが、ユーザの認証、暗号化、セッション管理、SQLコネクタなどの一般的に用いられる機能を提供する。コンテナの幾つかの例は、Apache Tomcat、JBoss、Oracle Web Logic、IBM Web Sphereなどを含む。これらのフレームワークはアプリケーション開発者の負担を大きく和らげて、当該アプリケーション開発者はビジネスロジックの開発に集中することができる。例示的な実施形態では、前記ウェブフェーシングアプリケーションフレームワークが、図2のウェブサーバ240およびアプリケーションサーバ260にわたって構成されてもよい。前記ウェブフェーシングアプリケーションフレームワークは、バイナリ、.NET、JAVA、PHP、Ruby、Pythonなどの任意の規格化されたもしくは独自のフレームワーク言語タイプのものであってもよい。
図3では、データ1を含む大量のデータのデータストリーム305が、通信ネットワーク(例えば、インターネット等)から前記フレームワークの前記処理パイプラインに入力される。なお、ウェブサーバ240/アプリケーションサーバ260は、異なる処理パイプラインを有する異なるフレームワークで構成されたものであってもよい。データストリーム305のデータは、前記アプリケーションを同時に利用する複数のユーザからのデータである。データストリーム305は、HTTP、FTP、SMTP、VOIP、RDP、WebSocketなどの通信プロトコルからの生データパケット(例えば、イーサネット(登録商標)フレーム等)として前記フレームワークの前記処理パイプライン(フレームワーク入力310)に到達する可能性がある。これらのデータストリーム305は、暗号化および/またはフラグメント化されていてもよい。例えば、一部の実施形態ではデータ1が、ユーザからのユーザクライアント装置220を介した特定のウェブサイト(ウェブフェーシングアプリケーション)へのHTTP要求であってもよい。前記フレームワークの前記ビジネスロジック層において構成されたビジネスロジック320が、この特定のウェブサイト用のロジックであってもよい。
データ1を含むデータストリーム305は、前記フレームワークの1つ以上の層(例えば、図3に示すビジネスロジック層320等)を通って引き続き前記処理パイプライン内を進む。データストリーム305は、前記処理パイプライン内を進み続けるにつれて、複数の処理ステージによって改変データストリーム315,325,335へと消費および生成される。これらの処理ステージは、特定の関数又はメソッドの起動(トリガ、呼び出し)、特にはCPU命令の実行によって遂行される。例えば、データ1を含むデータストリーム315は前記処理パイプラインにおいて、データ2を含むデータストリーム325を生成するようにビジネスロジック層320により消費される。データストリーム335が、前記処理パイプライン(フレームワーク出力330)を出て、バックエンドデータベース(例えば、図2のデータベース275等)から記録データを取り出すようにデータベースクエリを起動することにより、処理を完了してもよい。前記バックエンドデータベースから取り出された前記記録データを含むデータストリームが前記フレームワークの前記処理パイプラインで(逆方向に)送信されてもよく、当該データストリームも複数の処理ステージによって同様に消費/生成される。
<暗号化されていないデータストリームのパターンマッチングベースのデータセット抽出>
図4は、本発明の実施形態における暗号化されていないデータストリームでのパターンマッチングベースのデータセット抽出のブロック図である。図4では、パケットキャプチャアプリケーション(パケット捕捉アプリケーション)つまりツール302が、前記フレームワークの前記処理パイプライン(フレームワーク入力310)に到達する、データ1を含む大量のデータの入力データストリーム305を捕捉するように構成されている。図4にはWiresharkパケットキャプチャツールの使用が描かれているが、他の実施形態では任意の他のパケットキャプチャツール/アプリケーションが使用されてもよく、特に制限はない。当該パケットキャプチャツール/アプリケーションは、データ1を含むデータストリーム305からの生データパケットを、前記フレームワークのタイプに基づいて捕捉する。例えば、特定のフレームワーク(例えば、PHP等)のデータパケットは特定のデータヘッダ又は他の特定のフィールドを含んでもよく、当該特定のデータヘッダ又は他の特定のフィールドが前記パケットキャプチャツール/アプリケーションによって認識され(リッスンされ)てもよい。当該パケットキャプチャツール/アプリケーションは、捕捉された前記生データパケットからのデータ(例えば、TCPデータ等)の一部(Pm)を、記録および処理のために、パターンマッチング/機械学習エンジン360に送信する。一部の実施形態では、当該データが、パイプなどのストリーミングトランスポートを用いてパターンマッチング/機械学習エンジン360に送信されてもよい。パターンマッチング/機械学習エンジン360が、データの一部から、ユーザ、セッション情報、通信プロトコル、IPアドレス、ポート番号、トラフィック方向などを含むがこれらに限定されない特定のデータアイテムを抽出してもよい。
図4では、プロファイラアプリケーション/ツール312が、特定のアプリケーションの前記フレームワークの前記処理パイプラインおよびビジネスロジック320において、データ1を含むデータストリーム315をプロファイル化する(捕捉する)ように構成されている。なお、実施形態は、関数エントリポイントをインターセプトする言語特化プロファイラと、個々の命令をインターセプトするバイナリプロファイラとの両方を用いる。この処理ステージでは前記フレームワークが関数(又はメソッド)および命令を起動し、当該関数(又はメソッド)および命令が、データ1を含むデータストリーム315を処理(消費・生成)するようにメモリアクセスを起動する。データ1を処理するのに用いられる特定の関数を突き止めるためにプロファイラ312は、前記処理パイプラインのこのステージで前記フレームワークによって起動される全ての関数を捕捉する。例えば、プロファイラ312は、前記フレームワークによって起動される関数Foo(p1,p2…pn)を捕捉する。そしてプロファイラ312は、プロファイル化された関数、スレッドID、およびパラメータのコンテンツをパターンマッチング/機械学習エンジン360に送信し、当該パターンマッチング/機械学習エンジン360が、当該プロファイル化された関数を、パケットキャプチャツール/アプリケーションツール302により捕捉された前記生データパケットと照合させる。具体的に述べると、パターンマッチング/機械学習エンジン360がパターンマッチングを実行し、当該パターンマッチングが前記プロファイル化された関数のデータパラメータを、捕捉された前記生データパケットの抽出された前記データアイテムと相関させて、データ1を処理するのに起動される特定の関数を特定して分離する。パターンマッチング/機械学習エンジン360はこれらの特定の関数を、前記特定のアプリケーションの(関係データ1セット)350としてデータセットに抽出および記録する。当該データセット内では特定の関数が、関連する生データパケットに対してマッピング(リンク)されてもよい。この関連する生データパケットは、前記フレームワーク及び前記特定のアプリケーションの処理パターンを示す。
図4では、さらに、他のプロファイラアプリケーション/ツール(例えば、SQLプロファイラ等)322が、前記バックエンドシステム又はデータベースにアクセスする前記フレームワークの前記処理パイプラインにおける、データ2を含むデータストリーム325をプロファイル化するように構成されている。なお、データ1を含むデータストリーム315が前記処理パイプラインにおいて、データ2を含むデータストリーム325を生成するように前記アプリケーションのコアビジネスロジック320により消費される。この処理ステージでは、前記フレームワークが関数(又はメソッド)およびメモリアクセスを、データ2を含む前記データストリームを処理(消費・生成)するように起動する。前記プロファイラは、前記処理パイプラインのこのステージで前記フレームワークによって起動される全ての関数、スレッドIDおよびメモリアクセスをプロファイル化して、プロファイル化された当該関数、スレッドIDおよびメモリアクセスを前記パターンマッチング/機械学習エンジンに送信する。例えば、プロファイラ322は、前記フレームワークによって起動される関数Bar(p1、SQLi,…pq)をプロファイル化/送信する。具体的に述べると、パターンマッチング/機械学習エンジン360は、バックエンドデータベース340からのデータ記録にアクセスすることに向けられた関数(例えば、データベース特化指令(例えば、SQLコマンド等)に関係するパラメータを含む関数等)を特定して分離してもよい。
さらに、他のパケットキャプチャツール/アプリケーション332(例えば、WireShark、TCPDump等)が、バックエンドデータベース340に向けられた、データ2を含むデータストリーム335を捕捉するように構成されている。パケットキャプチャツール/アプリケーション332は、当該データストリーム335を、当該データストリーム335がサーバ270を離れてTCP/IPソケットなどのIPCメカニズムを介して前記データベースをトラバースしているときに捕捉してもよい。D2を含むこれらのデータストリーム335は前記フレームワークの前記処理パイプラインにおいて、起動される前記関数から生成される。前記パケットキャプチャツール/アプリケーションは、データ2を含むデータストリーム335からの生データパケットを、前記フレームワークのタイプに基づいて捕捉する。例えば、特定のデータベースのタイプに関連付けられたデータパケットは特定のフィールドを含んでもよく、当該特定のフィールドが前記パケットキャプチャツール/アプリケーションによって認識され(リッスンされ)てもよい。パケットキャプチャツール/アプリケーション332は捕捉された前記生パケットデータからのデータ(例えば、SQLデータ等)の一部を収集し、記録および処理のために当該一部をパターンマッチング/機械学習エンジン360に送信する。パターンマッチング/機械学習エンジン360が、データの一部から、SQLクエリ、ストアドプロシージャコールなどの特定のデータアイテムを抽出してもよい。
そして、パターンマッチング/機械学習エンジン360が、データベースアクセスに関係する前記プロファイル化された関数を、バックエンドデータベース340に向けられた(前記パケットキャプチャツール/アプリケーションにより捕捉された)前記データパケット(データベースクエリ)と照合させる。具体的に述べると、パターンマッチング/機械学習エンジン360がパターンマッチングを実行し、当該パターンマッチングがこれらのプロファイル化された関数のデータパラメータを、SQLクエリ(SQLi)の式と相関させることにより、データ2に基づいて起動される特定の関数及び特定のデータベースクエリを特定して分離する。パターンマッチング/機械学習エンジン360はこれらの特定の関数及びデータベースクエリを、前記特定のウェブサイト(ウェブフェーシングアプリケーション)のための(関係データ2セット)355として前記データセットに抽出して記録する。当該データセット内では当該特定の関数が、当該特定のデータベースクエリに対してマッピング(リンク)される。データセット355は、前記特定のウェブサイト(ウェブフェーシングアプリケーション)のための前記フレームワークのバックエンドの処理パターンを示す。
<抽出されたデータセットの相関>
パターンマッチング/機械学習エンジン360は、さらに、関係データ1セットのデータセット350を関係データ2セットのデータセット355と相関させてもよい。パターンマッチング/機械学習エンジン360は当該相関を、前記フレームワークのプロセス又はスレッド間の通信用に構成されたコンテキストデータ構造を利用することによって行ってもよい。このようなコンテキストデータ構造は、ウェブフェーシングアプリケーションフレームワークの処理パイプラインにおいて用いられる。プロファイラ312、プロファイラ322または動作可能に接続されたコンピュータアプリケーションが、これらのコンテキストデータ構造に、データ1を処理するのに用いられるプロセス/スレッドを、データ2を処理するのに用いられるプロセス/スレッドへと追跡することを可能にする特定情報(例えば、ユーザ、セッションなどの情報等)を挿入してもよい。前記プロファイラは、データ2を含むデータストリーム325,335により起動される関数又はデータベースクエリを捕捉するときに、関連するプロセス/スレッドおよび挿入された対応する特定情報も捕捉してもよい。プロファイラ312,322はこれらのプロセス/スレッドおよび対応する特定情報もパターンマッチング/機械学習エンジン360に送信し、当該パターンマッチング/機械学習エンジン360で当該プロセス/スレッドおよび特定情報が、対応するデータセット内に記録されて且つ当該データセット内の関連する関数やデータベースクエリに対してマッピングされる。パターンマッチング/機械学習エンジン360は、データセット2のデータ/関数に対してマッピングされた前記特定情報を、データセット1のデータ/関数に対してマッピングされた前記特定情報(あるいは、データセット1のデータ/関数のフィールド/パラメータ)と照合させることにより、データセット2の関数/クエリに関連するデータセット1のデータ/関数を突き止めてもよい。
以下では、前記コンテキストデータ構造をこのように使用する一例について説明する。(図2に示す)例示的なアプリケーションインフラストラクチャにおいてウェブサーバ240が、ユーザからの(ウェブサービスクライアントを介した)ウェブ要求(例えば、HTTP要求等)を受信する。ウェブサーバ240は、当該ウェブ要求(例えば、URL等)に含まれる情報を用いて前記ユーザを認証し、認証が成功すると、当該ユーザが前記ウェブフェーシングアプリケーションインフラストラクチャ内のデータにアクセスするためのコネクション(又はセッション)を確立する。ウェブサーバ240は、当該セッション内において前記ユーザとウェブ要求及びウェブ応答を交換するために、ユーザ及びセッションデータを維持する。ウェブサーバ240およびアプリケーションサーバ260は、図3に示すようにウェブフェーシングアプリケーションフレームワークで構成されている。ウェブサーバ240は、前記セッション中に、クロスコンテキストコンテナ及びローカル/インタープロセス通信(LPC/IPC)を用いた相互依存メカニズム及びスレッドを介して前記ウェブフェーシングアプリケーションフレームワーク(図3)内でアプリケーションサーバ260と通信することにより、前記ウェブ要求を処理する。他の実施形態では、ウェブサーバ240とアプリケーションサーバ260とが、任意の他のコンテキストデータメモリ構造及び任意の他のプロセス通信方法を用いて前記ウェブフェーシングアプリケーションフレームワーク内で通信してもよい。なお、前記コンテキストデータは、ウェブフェーシングアプリケーションフレームワーク内においてサーバ間で又は他のこのような機器間でデータを伝送するのに用いられるどのようなデータ構造であってもよく、当該データ構造は、バイナリ、.NET、JAVA(登録商標)、PHP、Ruby、Pythonなどの任意のウェブフェーシングアプリケーションフレームワーク言語タイプで使用されるあらゆるデータ構造を含み、特に制限はない。
前記クロスコンテキストコンテナ(コンテキストデータ)は、ウェブサーバ240とアプリケーションサーバ260とで共有されるデータを保持するのに用いられる複数のメモリ部分(データオブジェクト)を含み、当該複数のメモリ部分(データオブジェクト)は、HTTP/同期、コール/オペレーションなどを含む。これらのデータオブジェクトは、内部データ構造またはテキストベースのメモリエレメント(例えば、XML、JSON、生データフォーマット等)でフォーマット化されてもよい。図4のプロファイラ312,322は、計測されたコードを経由して、ウェブサーバ240およびアプリケーションサーバ260と、付録Aに示す各データ構造に従って前記コンテキストデータを拡張するために通信する。例えば、プロファイラ312,322は前記計測されたコードを経由して、ウェブサーバ240で受信された前記ウェブ要求から、ユーザ名(例えば、uuid等)、IPアドレス、ポート番号、URL、セッションID、HTTPデータ、スレッドID、メモリアクセスの種類及びコンテンツなどの任意のユーザ/セッション情報を含む、ユーザ、セッションおよびユーザ入力情報を取り出す。
このようにしてプロファイラ312,322は、データ1及びデータ2を処理するのに前記フレームワーク(図4)の前記処理パイプラインにおいて使用されるスレッドに関連するユーザ、セッションなどを認知できる。さらに、プロファイラ312,322は前記スレッドおよび関連するユーザ、セッションなどを、データ1及びデータ2の前記処理パイプラインにおけるデータパケット、起動される関数、メモリアクセスおよび起動されるデータベースクエリと共に捕捉してもよい。プロファイラ312,322は、前記コンテキストデータの拡張された前記データ構造からの前記スレッドおよび関連するユーザ/セッションデータをパターンマッチング/機械学習エンジン360に送信し、これらのスレッドおよび関連するユーザ/セッションデータを、関係するデータパケット、起動される関数及び起動されるクエリに対してマッピングされた関係データ2セットのデータセット335内に記録してもよい。パターンマッチング/機械学習エンジン360は、前記ユーザ/セッションデータを用いてデータ2の(関係データ2セットのデータセット355内の)関係する関数/クエリをデータ1の(関係データ1セットのデータセット350内の)データ/関数と、当該ユーザ/セッションデータ又はデータ1のデータ/関数のフィールド/パラメータにおける同様のデータに基づいて相関させてもよい。相関されたデータセット350およびデータセット355は累積データセット内に共に含められてもよく、当該累積データセットが特定のアプリケーションの前記フレームワークの各種ステージ(エンドツーエンド)にわたっての処理パターンを提供する。
<暗号化されたデータストリームのパターンマッチングベースのデータセット抽出>
図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で説明したものと同じ様式で引き続き前記フレームワークの前記処理パイプライン内を進む。
<抽出されたデータセットの使用>
図4または図5で得られた前記データセットは、前記フレームワークの様々なステージ(エンドツーエンド)にわたって前記アプリケーションの活動を探査してサイバー攻撃を検知するのに用いられてもよい。得られた当該データセットに基づいて解析エンジンが、特定のウェブフェーシングアプリケーションの活動を監視・探査するために前記フレームワークの計測されたコードを経由して、特定の関数およびデータベースクエリをリッスンするようにチューニングされてもよい。このようにして当該解析エンジンは、前記データストリームにおけるノイズを除去して、前記アプリケーションにおいてユーザデータを処理する特定の関数(又はメソッド)、スレッドおよびメモリアクセスのみに集中してもよく、つまりこのようなものだけを選別してもよい。また、前記データセットは、当該データセット内に記録された、パケット、関数、データベースクエリ、スレッド及びメモリアクセスに関係するコンテキストに基づき、当該パケット、関数、データベースクエリ、スレッドおよびメモリアクセスの、データパラメータ及びフィールドを探査してもよい。さらに、前記データセットに基づいて前記解析エンジンは、前記フレームワークにわたって活動を、特定のユーザ、セッションなどに関して追跡および探査するようにチューニングされてもよい。
<パターンマッチングベースのデータセット抽出の方法>
図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)。
当該方法のステップ640では、捕捉されたデータを前記パケットキャプチャツールおよびプロファイラがパターンマッチング/機械学習エンジンに送信し、当該パターンマッチング/機械学習エンジンが前記データパケット、起動される第1および第2のセットの関数、スレッドID、メモリアクセスおよびデータベースクエリを、パターンによって、データストリームと照合させる。前記フレームワークのフロントエンドからの、捕捉された前記パケットデータ、起動される第1のセットの関数、スレッドIDおよびメモリアクセスが、第1のデータストリームと照合されてもよく、前記フレームワークのバックエンドにおける、起動される前記第2のセットの関数および捕捉されたデータベースクエリが、第2のデータストリームと照合されてもよい。当該方法は、ステップ650で、(前記第1および第2のセットの関数からの)適合した関数、適合したスレッドID、適合したメモリアクセス、適合したクエリおよびデータパケットを、1つ以上のデータセットに抽出する。当該方法は、前記第1のデータストリーム(フレームワークのフロントエンド)の前記パケット及び適合した前記第1のセットの関数を第1のデータセットに抽出し、前記第2のデータストリーム(フレームワークのバックエンド)の適合した前記第2のセットの関数及び捕捉されたデータベースクエリを第2のデータセットに抽出してもよい。
当該方法は、さらに、前記データパケット、関数及びクエリの一部又は全部に関係する、ユーザ、ユーザデータ、セッション情報、IPアドレス、ポート番号、プロトコルコンテキスト、スレッドコンテキスト、スレッドID、メモリアクセス(例えば、メモリに読み書きする命令のアドレス、前記アプリケーションによってオペレートされるメモリの範囲等)、トラフィック方向などの情報を、各データセットに抽出してもよい。当該抽出の結果は、前記フレームワークにより処理されるユーザ供給データを取り扱う、一連の連結した関数、スレッド、メモリアクセス命令などである。当該方法は、前記アプリケーションにおける各メモリアクセス(読込み/書込み)のコンテンツを捕捉してもよい。よって、当該方法は、前記メモリアクセスを追跡して前記データセットを当該メモリアクセスと比較することにより、前記アプリケーションにおいてユーザデータを処理するのに参加するのがどの命令(読込み/書込み)かを特定してもよい。当該方法は、これらの関数、メモリアクセス、命令などを捕捉することにより、前記アプリケーション又はフレームワークのうちの、実行時(ランタイム)により詳細に調べられる必要のある1つ以上の脆弱性候補を分離できる。実行時にはこれらの特定された命令が、前記フレームワークで受信された(例えば、ウェブフェーシングアプリケーション要求内等の)悪意を持ってかつ巧妙に作成されたユーザデータを誤って取り扱ってしまうかを判断するために、隔離して実行できる。さらに、当該方法は、特定されたユーザ命令を処理するものではない関数を含めない(前記データセットから外す)ことにより、それらの外された関数を深く追求しないので、ウェブフェーシングアプリケーションの活動を探査する計測の効率を向上させることができる。
当該方法のステップ660では、前記パターンマッチング/機械学習エンジンが各データセットの関数、クエリ、スレッドID、メモリアクセス、データパケット間の関係を、当該関数、クエリ、スレッドID、メモリアクセス及びデータパケットのパラメータおよびフィールドのデータに基づいて相関させる。この相関では、スレッド、関数、命令などのチェーンを前記データセット内に作成してもよい。これらデータセットは、脆弱性が悪用されないようにするために実行時に確認される必要があるデータセットである。当該相関は、さらに、前記第1のデータセットのデータパケットおよび関数と前記第2のデータセットの関数およびクエリとをコンテキストデータ構造のユーザに基づいて相関させることにより、前記第1のデータストリームと第2のデータストリームとの間でプロセス/スレッドを追跡およびマッピングすることを含んでもよい。当該追跡およびマッピングは、前記アプリケーションのユーザごとのコンテキストを確立するために用いられるスレッドIDチェーンを作成してもよい。当該プロセス/スレッドの追跡およびマッピングは、特定情報(ユーザ、セッションなど)を前記フレームワーク内のクロスコンテキストコンテナ及びローカル/インタープロセス通信(LPC/IPC)に配置して処理することによって実行されてもよい。前記第1のデータセットと第2のデータセットとの当該相関は、特定のウェブフェーシングアプリケーションの前記フレームワークにわたるエンドツーエンド処理を示す累積データセットをもたらしてもよい。当該方法は、ステップ670で、前記累積データセットをアナライザ(解析エンジン)でプログラムして、セキュリティ攻撃を検知するために当該アナライザを、前記特定のウェブフェーシングアプリケーションの活動を当該データセットに基づいて探査するようにチューニングする。当該探査の間、前記データセット内のスレッド、関数、命令などの前記チェーンが実行時に特定され、当該方法が当該チェーンを用いて、各関数の出力側にユーザコンテキストを付加し、入力から当該コンテキストを除去し(取り出し)、これら付加および除去を解析エンジンに報告してもよい。
<アプリケーション実行時監視分析(ARMAS)インフラストラクチャ>
図7Aは、例示的なアプリケーション実行時監視解析(ARMAS)インフラストラクチャの上位レベルブロック図である。図2〜図6のシステムおよび方法から生成された前記データセットは、特定のアプリケーションに関係する活動を監視および解析するように解析エンジン737をチューニングするのに用いられてもよい。このインフラストラクチャは、スマートフォン、タブレット、ラップトップ及びデスクトップからハイエンドサーバにわたるコンピュータ装置を含む、各種ハードウェアで構成されてもよい。図7Aに示すように、監視エージェント702により実行されるデータ収集は、解析エンジン737により実行される解析から切り離されてもよく、これにより前記アプリケーションがオーバーヘッドとなってその性能が低下するのを抑制する。前記インフラストラクチャは、マルウェア攻撃に対する防御をハッカーが破るのを阻止することを可能にする。監視エージェント702は、ロードタイム及び実行時にデータを収集するようにアプリケーションと相互作用する。一部の実施形態では、監視エージェント702が、前記アプリケーションのフレームワークで受信されて処理されるデータストリームを捕捉する図4および図5の前記パケットキャプチャツールおよびプロファイラであってもよい。また、監視エージェント702は、捕捉された前記データストリームからデータセットを生成するために、パターンマッチング/機械学習エンジンと通信してもよい。
アプリケーション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からのメモリ、ファイル入出力などのシステムリソースを利用してもよい。前記アプリケーション、ライブラリおよび前記カーネルからのこれらの一連の命令は、一つの時間順のシーケンス上に編成されて、所与のユーザが所望するアプリケーション機能を送り出す。
前記アプリケーションのコードのメモリへのロードが開始すると、計測エンジン705は複数の異なるロードタイム動作を実行する。全てのモジュールがロードされると、前記アプリケーションの計測された命令がランタイムデータを生成する。クライアントデーモン708は、構成データベース709からの1つ以上の構成ファイルを読み出すことにより、CPU736において、計測・解析エンジン705のプロセス、ストリーミングエンジン710のプロセス、およびGUI711のプロセスを初期化する。クライアントデーモン708は、さらに、前記計測エンジン、ストリーミングエンジン、GUI、解析エンジン737、当該クライアントデーモン708間の相互通信パイプを初期化する。当該クライアントデーモンは、さらに、当該クライアントデーモン自身も含め、監視エージェント702のいずれかのプロセスが応答しなくなったり停止したりした場合に、当該プロセスが再生されることを確実にする。これによって、監視エージェント702は、企業向け製品としての利用が保証される。
計測・解析エンジン737は、前記アプリケーションから収集されたロード及びランタイムデータを前記ストリーミングエンジンに収める。計測・解析エンジン737は、図4および図5の前記パターンマッチング/機械学習エンジンにより生成された前記データセットに基づいてデータを収めてもよい。前記ストリーミングエンジンは、監視エージェント702からの生データをPDUにパッケージ化する。そして、前記ストリーミングエンジンは、当該PDUを、高帯域幅・低レイテンシ通信チャネル712を介して解析エンジン737に収める。監視エージェント702と解析エンジン737とが同じマシンに配置されている場合、このチャネルはメモリバスで実現できる。これらのエンティティが異なるハードウェアに配置されているものの物理的に近接している場合、当該チャネルは、インターネットを介して前記ロード及びランタイムデータを伝送するためのリモートコネクションが当該エンティティ間に確立されることを可能にするイーサネット又はファイバベースのトランスポートで実現できる。
解析エンジン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を含む。
PDUは、プロトコルヘッダと共に、ネットワークインターフェースカード713でインターセプトされて、当該ネットワークインターフェースカード713から前記PDUが取り出されて、パケットプール714に収められる。当該PDUのタイムスタンプフィールドが、タイムスタンプエンジン715により充填される。これにより、パケットが前記パケットプールバッファ内に過度に長時間留まらないことが確実となる。
プロセッサファブリック716が前記パケットバッファからパケットを取出し、アドレスフィールドがハッシュ化されて当該パケット内の適切な位置に戻される。この処理は、ハッシングエンジン717により実行される。そして、前記プロセッサファブリックが前記パケットバッファからパケットを、当該パケットが到達した順に取り除き始める。ロードタイムフェーズからの情報を有するパケットは、関係するデータが抽出されてアプリケーションマップデータベース719に記憶されるように処理される。ランタイムフェーズからの情報を有するパケットは、図6に従って処理される。解析エンジン737の効率は、前記プロセッサファブリック内のプロセッサの数に基づいて上昇または下降し得る。
遷移の対象であるデータは、スレッドごとにテーブルを有するスレッドコンテキストデータベース720に保存される。また、前記プロセッサファブリックは、TCAMエンジン718を用いて遷移及びメモリ領域の探索を実行する。前記プロセッサファブリックはハッシュを用いてルックアップを実行するので、実際に費やされる時間は予測可能で且つ極めて短い。前記ファブリック内のプロセッサの数を慎重に選択することにより、パケット当たりのスループットを適宜変更可能である。
解析エンジン737が探索を実行すると、当該解析エンジン737は、有効でない遷移、重要/管理者機能もしくはシステムコールの有効でない処理を、見つける場合があり、または適切でない箇所へのメモリ書込みを見つける場合がある。これらの場合のいずれにおいても、解析エンジン737はイベント・イベントチェーンデータベース722に記憶されたポリシーで記述されている、プログラムされた深刻度のイベントを、イベント管理エンジン723にディスパッチする。生イベントログは、イベントログデータベース724に記憶される。また、前記ダッシュボードが、当該イベントログにアクセスしてアプリケーション状態を表示することができる。
また、イベント・イベントチェーンデータベース722における各イベントには、救済動作が対応付けられている。ユーザはこの救済動作を、「イベントを無視する」から「スレッドを終了する」までの両極端な動作の間に存在する様々な動作から設定することが可能である。推奨される救済動作が、イベントアップデートクライアント734およびイベントアップグレードサーバ735を用いて解析者に提案されることができる。そのような推奨される動作を変更するために解析者は、そのためにダッシュボード728を使用することが可能である。当該ダッシュボードは、監視中の各アプリケーションの状態を表示してセキュリティ解析者が当該アプリケーションをある程度操作する(例えば、当該アプリケーションを開始する、停止させる等)ことを可能にするGUIインターフェースを提供する。イベントが生成されると、前記イベントチェーンが通常状態から次の状態へと移行する。この新しい状態に対応付けられた救済動作が取られることができる。この救済動作が「無視」以外の動作を伴うものである場合には、SMS又はSMTPサーバ729を用いてセキュリティ解析者に通知が送信される。当該セキュリティ解析者のSMS/SMTPアドレスは、LDAP又は他のディレクトリプロトコルを用いて突き止められ得る。前記ダッシュボードからアプリケーションを開始又は停止させるには管理者権限が必要であり、セキュリティ解析者はOTPサーバ730を用いた本人証明が必要である。
また、新たなイベントが作成されてイベント・イベントチェーンデータベース722に、深刻度および解析者に提案される救済動作と共にリンクされ得る。これにより、ある装置における新たな攻撃についての固有のイベント及びイベントチェーンが、他の装置にディスパッチされることが可能となる。この目的のために、新たなイベント及びイベントチェーンは全てイベントアップグレードサーバ735にロードされる。イベントアップデートクライアント734は、イベントアップグレードサーバ735に定期的に接続し、新たなイベント及びイベントチェーンを取り出すために当該イベントアップグレードサーバ735に対して本物証明を行う。そして、前記イベントアップデートクライアントは、これらの新たなイベント及びイベントチェーンをイベント・イベントチェーンデータベース722にロードする。コンテンツ解析エンジン721は前記アプリケーションを、当該新たなイベントチェーン内にカプセル化されている新たな攻撃に関して追跡し始めることができる。
前記クライアントデーモンと同様に、アプライアンスデーモン725は、解析エンジン737上で実行する各種プロセスを開始する役割を果たす。この目的のために、アプライアンスデーモン725は、解析エンジン構成データベース726から構成情報を読み出す必要がある。当該デーモンは、さらに、解析エンジン737における全てのプロセスのためのハートビートポールを実行する役割を果たす。これは、解析エンジン737エコシステムにおける全ての装置が常に最良の動作状態にあることを確実にする。連続するハートビートが3回欠けると、対象のプロセスが応答していないことを示唆する。任意のプロセスが早まって終了した場合には、前記デーモンが当該プロセスを、当該デーモン自身も含めて復活させる。
ソフトウェアが、当該ソフトウェアのエラーを修正するなどの目的で、アプライアンスホスト、解析エンジン737またはクライアントにおいてアップグレードされることがある。この目的のために、アップグレードクライアント731は、最新のソフトウェアが入手可能となるソフトウェアアップグレードサーバ732を常に確認する。当該クライアントは、解析エンジン737又は当該クライアントにおけるエンティティが古いイメージを動作させていることを発見した場合、解析者が当該古いイメージをソフトウェアアップグレードサーバ732からの新しいイメージによってアップグレードさせることを可能にする。新しいイメージは、システムイメージ733としてまとめられている。これにより、アプライアンスまたはホストにテスト済みの互換イメージを用意しておくことが可能となる。解析エンジン737又は監視エージェント702におけるサブシステムについての所与のイメージが前記システムイメージのうちの同じ構成要素についてのイメージと合致しない場合には、全てのイメージが以前の既知の良好なシステムイメージにロールバックされる。
<ARMAS通信用のPDU>
図7Bに、図7Aの監視エージェント702と解析エンジン737との間でデータを伝送するのに用いられる例示的なプロトコルデータユニット(PDU)を示す。監視エージェント702と解析エンジン737とは、互いに効果的に協働するために、前記PDUを用いて互いに通信する。具体的に述べると、前記PDUは監視エージェント702により、前記アプリケーションの抽出されたモデルおよび/または収集されたランタイムデータをパッケージ化して解析エンジン737に伝送するために使用され得る。前記PDUは、監視エージェント702と解析エンジン737との間で伝送される情報の種類ごとにフィールドを備える。前記PDUは、アプリケーション提供データセクションと、生成HW/CAEセクションと、コンテンツ解析エンジン又は生データセクションとに分けられる。
前記アプリケーション提供データセクションは、各種レジスタからのデータ、ならびに当該セクションの別個のフィールドに配置される発信元アドレス及び宛先アドレスを含む。プロトコルバージョン752は、前記PDUのバージョン番号を有する。発信元と宛先は、長期的にプロトコルバージョンが変化しても互いに通信することが可能である必要がある。この8ビットのフィールドは、ソースエンティティにより生成されたパケットのバージョン番号を記述する。当該プロトコルバージョンフィールドの後には、現在未使用の予備フィールド756が続く。
前記アプリケーション提供データセクションにおける次のフィールドは、メッセージ発信元/宛先識別子757,753,754であり、図7Aに示す解析エンジンインフラストラクチャ内でトラフィックを交換するために使用される。図7に示す各種エンティティは、当該エンティティ間でトラフィックを交換する場合がある。これらの全ての装置がIPアドレスを有したり必要としたりするわけではなく、そのため(ハードウェアとホストとの)2つのクエリルータエンジンが、前記メッセージ発信元フィールド及び宛先フィールドを用いて内的にトラフィックをルーティングする。一部のメッセージは、解析エンジン737内のエンティティにネットワークを介して移動する必要がある。この目的のために、前記エンティティには次のようなIDが振り当てられる。所与の解析エンジンアプライアンスは、複数のアクセラレータカードを備える可能性がある。各カードが固有のIPアドレスを有するので、各種エンティティは固有のIDを有する。また、前述したインフラストラクチャは、複数のアプリケーションを実行する可能性がある。各アプリケーションサーバが固有のIPアドレスを有するので、対応する監視エージェント側のエンティティも固有のIDを有する。
[監視エージェント側のエンティティ]
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が、クエリを発行するアプリケーションを特定するのに使用される。)
前記アプリケーション提供データセクションにおける他のフィールドは、伝送されるデータの種類を示すメッセージタイプフィールド755である。最上位レベルで言えば、メッセージの種類には、各種ローカル監視エージェント側エンティティ間で流れるものと、解析エンジンアプライアンス側エンティティ間で流れるものと、クライアント側エンティティとアプライアンス側エンティティとの間で流れるものとの、3つの異なる種類のものがある。また、ネットワークを介して移動する必要のあるメッセージは、OSIモデル及び他のプロトコルに準拠する必要がある。
前記アプリケーション提供データセクションにおける次のフィールドは、パケットのシーケンス識別子を含むパケットシーケンス番号フィールドである。前記ストリーミングエンジンは、失われたパケットについてエラー復元を実行する。この目的のために前記ストリーミングエンジンは、パケットを一意的に識別する必要がある。インクリメントする符号付き64ビットパケットシーケンス番号が前記ストリーミングエンジンにより挿入されて、残りの解析エンジンインフラストラクチャに単に渡される。当該シーケンス番号は、64ビット限度に達すると0から再び開始してもよい。ハートビート、ログメッセージなどのアプリケーション非関連のパケットの場合には、当該シーケンス番号が−1とされてもよい。
前記アプリケーション提供データセクションは、さらに、暗号化目的のために用いられるカナリアを有するカナリアメッセージフィールドを含む。監視エージェント702および解析エンジン737にとって、共通の(ただし、アプリケーション立上り時間、PID、ライセンス文字列、認証されたユーザ名などの非一定の)情報からどのようにして前記カナリアを算出するかは既知である。
前記アプリケーション提供データセクションは、さらに、全てのメッセージで使用される汎用フィールドを含む。アプリケーションソース命令アドレスフィールド780、アプリケーション宛先命令アドレスフィールド758、メモリ開始アドレスポインタフィールド759、メモリ終了アドレスポインタフィールド760、アプリケーションPIDフィールド762、スレッドIDフィールド763、解析エンジン到達タイムスタンプフィールド764、および解析エンジン出発タイムスタンプフィールド765は、汎用的なアプリケーションデータを保持する。
前記PDUは、さらに、生成HW/CAEセクションを備える。解析を容易にし且つ一定のタイムバジェットを維持するために解析エンジン737は、前記発信元・宛先アドレスフィールドをハッシュ化して前記PDUを処理に先立って更新する。前記PDUの前記生成HW/CAEセクションは、そのハッシュ化されたデータが後で利用されるために配されるセクションである。このセクションは、ハッシュ化アプリケーション発信元命令アドレスフィールド766、ハッシュ化アプリケーション宛先命令アドレスフィールド767、ハッシュ化メモリ開始アドレスフィールド768、およびハッシュ化メモリ終了アドレスフィールド769を含む。前記生成HW/CAEセクションは、さらに、ハードコード化コンテンツ開始マジックヘッダ、API名マジックヘッダ、コールコンテキストマジックヘッダ及びコール生データマジックヘッダを含む、前記カナリアに関係する他のフィールド771を含み、これらは全てのPDUパケットに存在している。
前記生成HW/CAEセクションは、さらに、他の構成及びエラーデータ(結果、コンフィギュレーションビット、動作モード、エラーコード及び動作モードデータを含む)を特定するためのフィールド770を含む。当該フィールドのうちの「結果」部分は、様々な解析エンジンクエリ(遷移プレイブッククエリ、コードレイアウトクエリ、メモリ(スタック又はヒープ)オーバーランクエリ、およびディープ検査クエリ)のブーリアン結果を返すようにセグメント化されている。当該フィールドのうちの「コンフィギュレーションビット」部分は、圧縮フラグ、デモフラグまたはコロケーテッドフラグがセットされていることを示す。当該フィールド内に圧縮フラグが存在していると、パケットが圧縮モードで返されるべきであることを解析エンジン737に示している。デモフラグは、システムの有効なライセンスが存在していないので当該システムがデモモードであることを示す。このモードでは、ログやイベントの全てが利用可能なわけではない。コロケーテッドフラグは、前記アプリケーションが解析エンジン737で実行されているため、当該アプリケーションに返す必要のあるパケットをどこに送信すべきかを、ホストクエリルータエンジンが決定可能であるということを示す。このフラグがセットされているとパケットはPCIブリッジを介して送信され、そうでなければPCIカードのイーサネットインターフェースで送信される。当該フィールドのうちの「動作モード」部分は、システムがパラノイド、監視および学習モードのどのモードであるのかを示す。これらのモードについては、本セクションにおいて後述する。最後に、当該フィールドのうちの「エラーコード」部分は、システムにおけるエラーを示す。当該エラーコードの最初の8ビットは、メッセージ発信元に対応する。残りの12ビットは、各サブシステムにより報告された実際のエラーに対応する。
前記PDUは、さらに、コンテンツ解析エンジン又は生データセクションを備える。PDUにおけるこのセクションには、OSライブラリコール及びシステムコールの引数、戻り値などの全ての可変データが配置される。このセクションにおけるデータは、前記アプリケーションから収集されたデータのコンテンツを含み、主にコンテンツ解析エンジン721に向けられている。このセクションは、可変サイズのAPI名又は番号フィールド772、コールコンテンツマジックヘッダフィールド777、可変サイズのコールコンテンツフィールド774、コール生データマジックヘッダフィールド778、可変サイズの生データコンテンツフィールド776、および2つの予備フィールド773,775を含む。また、これらのフィールドは、管理メッセージのためにオーバーロードされ得る。
<デジタル処理環境>
図8に、本発明の実施形態が実現可能なコンピュータネットワーク又は同様のデジタル処理環境を示す。
少なくとも1つのクライアントコンピュータ/装置50および少なくとも1つのサーバコンピュータ60が、アプリケーションプログラムなどを実行する処理装置、記憶装置および入出力装置を提供する。少なくとも1つのクライアントコンピュータ/装置50は、さらに、他のコンピューティングデバイス(他のクライアント装置/プロセス50および1つ以上の他のサーバコンピュータ60を含む)に通信ネットワーク70を介して接続され得る。通信ネットワーク70は、リモートアクセスネットワーク、グローバルネットワーク(例えば、インターネット等)、世界中のコンピュータの集まり、ローカルエリア又はワイドエリアネットワーク、およびプロトコル(例えば、TCP/IP、Bluetooth(登録商標)等)を現在用いて互いに通信するゲートウェイの一部であり得る。これら以外の電子デバイス/コンピュータネットワークアーキテクチャも好適である。
クライアントコンピュータ/装置50が、データパケットおよび/またはウェブフェーシングアプリケーションフレームワークにおいて前記処理パイプラインによって起動される関数および/またはデータベースクエリを捕捉する、パケットキャプチャツール又はプロファイラとして構成されてもよい。サーバコンピュータ60が、クライアントコンピュータ/装置50により捕捉された前記データパケット、関数およびデータベースクエリを少なくとも1つのデータセット内でマッチおよび相関させる、パターンマッチング/機械学習エンジンとして構成されてもよい。サーバコンピュータ60は、個別のサーバコンピュータではなくクラウドネットワーク70の一部であってもよい。また、一部の実施形態では、サーバコンピュータ60が前記少なくとも1つのデータセットを、アナライザ(解析エンジン)として構成された第2のサーバコンピュータ60に送信してもよい。第2のサーバコンピュータ60は前記アナライザを、セキュリティイベントを検知するために特定のウェブフェーシングアプリケーションに関係する処理活動(受信したデータパケット、起動される関数、および起動されるデータベースクエリ)を待ち受けるように、前記少なくとも1つのデータセットに基づいてチューニングする。一部の実施形態では、クライアント50およびサーバ60が、前述した捕捉、相関およびチューニングを実行するために当該クライアントおよび当該サーバで実行される、クライアントアプリケーション又はコンポーネントを含んでもよい。
図9は、図8のコンピュータシステムにおけるコンピュータ(例えば、クライアントプロセッサ/装置50、サーバコンピュータ60等)の例示的な内部構造を示す図である。各コンピュータ50,60は、コンピュータ又は処理システムの構成要素間でのデータ伝送に利用される一連のハードウェアラインであるシステムバス79を備える。システムバス79は、基本的に、コンピュータシステムの異なる構成要素(例えば、プロセッサ、ディスクストレージ、メモリ、入出力ポート、ネットワークポート等)同士を接続して当該構成要素間での情報の伝送を可能にする共有のコンジットである。システムバス79には、様々な入出力装置(例えば、キーボード、マウス、ディスプレイ、プリンタ、スピーカ等)をコンピュータ50,60に接続する入出力装置インターフェース82が取り付けられている。ネットワークインターフェース86は、ネットワーク(例えば、図8のネットワーク70等)に取り付けられた様々な他の装置にコンピュータが接続することを可能にする。メモリ90は、本発明の実施形態(例えば、本明細書で説明したセキュリティ監視エージェントの構成要素、計測エンジンの構成要素、解析エンジンの構成要素等)を実現するように用いられるコンピュータソフトウェア命令92およびデータ94を記憶する揮発性の記憶装置である。ディスクストレージ95は、本発明の実施形態を実現するように用いられるコンピュータソフトウェア命令92およびデータ94を記憶する不揮発性の記憶装置である。システムバス79には、さらに、コンピュータ命令を実行する中央演算処理装置84が取り付けられている。
本発明の実施形態又は態様は、ハードウェア、ファームウェア又はソフトウェアの形態で実現されてもよい。ソフトウェアで実現された場合、当該ソフトウェアは、当該ソフトウェア又は当該ソフトウェアの命令のサブセットをプロセッサがロードすることを可能にするように構成された任意の非過渡的なコンピュータ読取り可能媒体に記憶されてもよい。そして、プロセッサが当該命令を実行し、当該プロセッサは、本明細書で説明した様式によって装置が動作するように又はそのような様式によって装置を動作させるように構成されている。
また、本明細書では、ファームウェア、ソフトウェア、ルーチン又は命令が、データプロセッサの所与の動作および/または機能を実行するように説明しているかもしれない。しかし、本明細書に含まれたこのような説明は便宜上のものに過ぎず、実際にはそのような動作が、ファームウェア、ソフトウェア、ルーチン、命令などを実行するコンピューティングデバイス、プロセッサ、コントローラまたは他の装置により生じることを理解されたい。
フローチャート、ブロック図およびネットワーク図は、構成要素の数がより多くても又はより少なくされてもよく、異なる配置構成にされてもよく、異なって表現されてもよいことを理解されたい。ただし、適用例によっては、実施形態の実行を示すブロック図、ネットワーク図、ならびにブロック図及びネットワーク図の数が、特定のものでなければならない場合もあることを理解されたい。
つまり、さらなる実施形態が、多種多様なコンピュータアーキテクチャおよび/または物理的コンピュータおよび/または仮想的コンピュータおよび/またはクラウドコンピュータおよび/または幾つかのこれらの組合せによっても実現されてもよい。したがって、本明細書で説明したデータプロセッサは例示に過ぎず、実施形態を限定するものではない。
本発明を例示的な実施形態を参照しながら具体的に図示・説明してきたが、当業者であれば、特許請求の範囲に包含される本発明の範囲を逸脱することなく形態や細部に様々な変更が施されてもよいことを理解するであろう。
なお、本発明は、実施の態様として以下の内容を含む。
〔態様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のプロファイラが、さらに、前記フレームワークにおける前記データストリームの処理の間に各メモリアクセスのコンテンツを捕捉するように構成され、
前記パターンマッチングエンジンが、さらに、
捕捉された前記関数の命令であって、ユーザデータを処理するのに用いられる命令を特定するように、抽出された前記データセットを捕捉された各メモリアクセスと比較し、かつ、
特定された前記命令のチェーンを作成するように構成されており、
作成された前記チェーンは、前記ウェブフェーシングアプリケーションにおける脆弱性を表すように前記データセットに抽出され、
前記プローブが、さらに、前記作成されたチェーンを実行時に監視することにより、前記ウェブフェーシングアプリケーションの前記活動を監視するように構成され、当該監視が、捕捉された各関数の出力にユーザコンテンツを付加すること、捕捉された各関数の入力からコンテキストを除去すること、およびこれら付加および除去を解析エンジンに報告することを含む、システム。
Figure 0006902037
Figure 0006902037
Figure 0006902037
Figure 0006902037

Claims (22)

  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のプロファイラが、さらに、前記フレームワークにおける前記データストリームの処理の間に各メモリアクセスのコンテンツを捕捉するように構成され、
    前記パターン照合エンジンが、さらに、
    捕捉された前記関数の命令であって、ユーザデータを処理するのに用いられる命令を特定するように、抽出された前記データセットを捕捉された各メモリアクセスと比較し、かつ、
    特定された前記命令のチェーンを作成するように構成されており、
    作成された前記チェーンは、前記ウェブフェーシングアプリケーションにおける脆弱性を表すように前記データセットに抽出され、
    前記プローブが、さらに、前記作成されたチェーンを実行時に監視することにより、前記ウェブフェーシングアプリケーションの前記活動を監視するように構成され、当該監視が、捕捉された各関数の出力にユーザコンテンツを付加すること、捕捉された各関数の入力からコンテキストを除去すること、およびこれら付加および除去を解析エンジンに報告することを含む、システム。
JP2018538236A 2016-01-22 2017-01-20 パターンマッチングベースのデータセット抽出 Active JP6902037B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201662286282P 2016-01-22 2016-01-22
US62/286,282 2016-01-22
PCT/US2017/014354 WO2017127691A1 (en) 2016-01-22 2017-01-20 Pattern matching based dataset extraction

Publications (3)

Publication Number Publication Date
JP2019506674A JP2019506674A (ja) 2019-03-07
JP2019506674A5 JP2019506674A5 (ja) 2020-02-27
JP6902037B2 true JP6902037B2 (ja) 2021-07-14

Family

ID=58191561

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018538236A Active JP6902037B2 (ja) 2016-01-22 2017-01-20 パターンマッチングベースのデータセット抽出

Country Status (9)

Country Link
US (1) US10382465B2 (ja)
EP (1) EP3405902B1 (ja)
JP (1) JP6902037B2 (ja)
KR (1) KR20180120157A (ja)
CN (1) CN108780485B (ja)
AU (1) AU2017210221B2 (ja)
CA (1) CA3012193A1 (ja)
DK (1) DK3405902T3 (ja)
WO (1) WO2017127691A1 (ja)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10200369B1 (en) * 2016-02-16 2019-02-05 Symantec Corporation Systems and methods for dynamically validating remote requests within enterprise networks
US11068453B2 (en) * 2017-03-09 2021-07-20 data.world, Inc Determining a degree of similarity of a subset of tabular data arrangements to subsets of graph data arrangements at ingestion into a data-driven collaborative dataset platform
US10606502B2 (en) * 2017-07-05 2020-03-31 Sap Se Data aging infrastructure for automatically determining aging temperature
US10698752B2 (en) 2017-10-26 2020-06-30 Bank Of America Corporation Preventing unauthorized access to secure enterprise information systems using a multi-intercept system
US10628591B2 (en) * 2017-11-20 2020-04-21 Forcepoint Llc Method for fast and efficient discovery of data assets
US11025638B2 (en) 2018-07-19 2021-06-01 Forcepoint, LLC System and method providing security friction for atypical resource access requests
US11134087B2 (en) 2018-08-31 2021-09-28 Forcepoint, LLC System identifying ingress of protected data to mitigate security breaches
US11171980B2 (en) 2018-11-02 2021-11-09 Forcepoint Llc Contagion risk detection, analysis and protection
US11245723B2 (en) 2018-11-02 2022-02-08 Forcepoint, LLC Detection of potentially deceptive URI (uniform resource identifier) of a homograph attack
US11295026B2 (en) 2018-11-20 2022-04-05 Forcepoint, LLC Scan, detect, and alert when a user takes a photo of a computer monitor with a mobile phone
US11297099B2 (en) 2018-11-29 2022-04-05 Forcepoint, LLC Redisplay computing with integrated data filtering
US11050767B2 (en) 2018-12-17 2021-06-29 Forcepoint, LLC System for identifying and handling electronic communications from a potentially untrustworthy sending entity
US10984113B1 (en) * 2018-12-18 2021-04-20 NortonLifeLock Inc. Identifying and protecting against a computer security threat while preserving privacy of individual client devices using differential privacy machine learning for streaming data
US11379426B2 (en) 2019-02-05 2022-07-05 Forcepoint, LLC Media transfer protocol file copy detection
US11562093B2 (en) 2019-03-06 2023-01-24 Forcepoint Llc System for generating an electronic security policy for a file format type
US10868892B1 (en) 2019-05-31 2020-12-15 Micro Focus Llc Replacement code implementing full-duplex communication channel protocol for message interception
CN112688793B (zh) * 2019-10-18 2023-01-03 北京字节跳动网络技术有限公司 数据包获取方法、装置及电子设备
US11588829B2 (en) * 2020-05-07 2023-02-21 Mcafee, Llc Methods and apparatus for network detection of malicious data streams inside binary files
US20220075877A1 (en) 2020-09-09 2022-03-10 Self Financial, Inc. Interface and system for updating isolated repositories
US11641665B2 (en) 2020-09-09 2023-05-02 Self Financial, Inc. Resource utilization retrieval and modification
US11475010B2 (en) * 2020-09-09 2022-10-18 Self Financial, Inc. Asynchronous database caching
US11470037B2 (en) 2020-09-09 2022-10-11 Self Financial, Inc. Navigation pathway generation
CN115129687A (zh) * 2022-03-16 2022-09-30 希望知舟技术(深圳)有限公司 基于异常工况数据库管理的方法、相关装置及介质和程序
CN115688071B (zh) * 2022-12-29 2023-03-17 深圳市光速时代科技有限公司 一种防止智能手表信息篡改的处理方法及系统

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6782478B1 (en) 1999-04-28 2004-08-24 Thomas Probert Techniques for encoding information in computer code
US20110238855A1 (en) * 2000-09-25 2011-09-29 Yevgeny Korsunsky Processing data flows with a data flow processor
US7941849B2 (en) 2003-03-21 2011-05-10 Imprivata, Inc. System and method for audit tracking
US20080229415A1 (en) 2005-07-01 2008-09-18 Harsh Kapoor Systems and methods for processing data flows
JP2007334536A (ja) * 2006-06-14 2007-12-27 Securebrain Corp マルウェアの挙動解析システム
US8249350B2 (en) * 2006-06-30 2012-08-21 University Of Geneva Brand protection and product autentication using portable devices
JP4995170B2 (ja) * 2008-10-06 2012-08-08 日本電信電話株式会社 不正検知方法、不正検知装置、不正検知プログラムおよび情報処理システム
US9230455B2 (en) 2009-12-11 2016-01-05 Digital Immunity Llc Steganographic embedding of executable code
WO2011139302A2 (en) 2009-12-11 2011-11-10 Probert Thomas H Steganographic messaging system using code invariants
US8578487B2 (en) * 2010-11-04 2013-11-05 Cylance Inc. System and method for internet security
US20130238548A1 (en) * 2011-01-25 2013-09-12 Muthian George Analytical data processing
US20130160130A1 (en) * 2011-12-20 2013-06-20 Kirill Mendelev Application security testing

Also Published As

Publication number Publication date
WO2017127691A1 (en) 2017-07-27
EP3405902B1 (en) 2021-12-15
AU2017210221A1 (en) 2018-08-16
CN108780485B (zh) 2022-03-04
KR20180120157A (ko) 2018-11-05
US10382465B2 (en) 2019-08-13
AU2017210221B2 (en) 2020-02-06
US20170214705A1 (en) 2017-07-27
CA3012193A1 (en) 2017-07-27
EP3405902A1 (en) 2018-11-28
DK3405902T3 (da) 2022-03-21
CN108780485A (zh) 2018-11-09
JP2019506674A (ja) 2019-03-07

Similar Documents

Publication Publication Date Title
JP6902037B2 (ja) パターンマッチングベースのデータセット抽出
US10447730B2 (en) Detection of SQL injection attacks
JP7046111B2 (ja) マルウェアのランタイム中の自動検出
US10509906B2 (en) Automated code lockdown to reduce attack surface for software
US9973519B2 (en) Protecting a server computer by detecting the identity of a browser on a client computer

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200117

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200117

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210216

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210511

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210525

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210618

R150 Certificate of patent or registration of utility model

Ref document number: 6902037

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250