JP4629291B2 - Method and system for verifying client requests - Google Patents
Method and system for verifying client requests Download PDFInfo
- Publication number
- JP4629291B2 JP4629291B2 JP2001533487A JP2001533487A JP4629291B2 JP 4629291 B2 JP4629291 B2 JP 4629291B2 JP 2001533487 A JP2001533487 A JP 2001533487A JP 2001533487 A JP2001533487 A JP 2001533487A JP 4629291 B2 JP4629291 B2 JP 4629291B2
- Authority
- JP
- Japan
- Prior art keywords
- client
- actions
- input
- execution
- action
- 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.)
- Expired - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0227—Filtering policies
- H04L63/0245—Filtering by information in the payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0281—Proxies
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/16—Implementing security features at a particular protocol layer
- H04L63/168—Implementing security features at a particular protocol layer above the transport layer
Abstract
Description
【0001】
(著作権の注意)
本出願ドキュメントの部分は、著作権保護を受ける内容を含む。著作権の所有者は、特許事務所または商標事務所の特許ファイルまたは記録にあるように、誰もが出願ドキュメントまたは出願の開示をファクシミリで再生することに異存はないが、そうでない場合、すべての著作権を保有する。
【0002】
(関連する出願)
本出願は、以下の同時係属中の出願に関連する。
・1999年10月25日に出願された、弁理士整理番号第3269/8号であるMETHOD AND SYSTEM FOR VERIFYING A CLIENT REQUESTという名称の米国仮特許出願第60/161,473号
・1999年7月1日に出願された、弁理士整理番号第3269/6号であるMETHOD AND SYSTEM FOR EXTRACTING APPLICATION PROTOCOL CHARACTERISTICSという名称の米国特許出願番号第09/345,920号
・1998年9月9日に出願された、弁理士整理番号第3269/3号であるMETHOD AND SYSTEM FOR PROTECTING OPERATIONS OF TRUSTED INTERNAL NETWORKSという名称の米国特許出願番号第09/149,911号
・1998年9月9日に出願された、弁理士整理番号第3269/4号であるMETHOD AND SYSTEM FOR MAITAINING RESTRICTED OPERATING ENVIRONMENTS FOR APPLICATION PROGRAMS OR OPERATING SYSTEMSという名称の米国特許出願番号第09/150,112号
・PCT出願PCT/IL98/3269/4
・PCT出願PCT/IL98/00443
・PCT出願PCT/IL00/00378
これらの出願の開示は、参照することによって、完全に本明細書に組み込まれている。
【0003】
(発明の背景)
本発明は、一般に、プライバシおよびセキュリティのシステムに関し、より詳細には、データ処理システム内において、クライアント装置とホスト装置との間で送信された要求、データ、情報内容、アプリケーション、および他の情報を認可する方法およびシステムに関する。
【0004】
(従来の技術)
クライアント/サーバ・データ処理システムでは、いくつかのパーソナル・コンピュータ、ワーク・ステーション、携帯式および/または手持ち式装置など(「クライアント」)は、1つまたは複数のホスト・コンピュータ(「サーバ」)と連結され、かつ通信している。サーバは、ネットワーク上でクライアントによって共有されている情報および/またはアプリケーション・プログラムに対するクライアントからの要求を処理する。ますます、クライアント/サーバ・ネットワークは、例えば、それ自体がワールド・ワイド・ネットワークの一部である、すなわち、インターネットのワールド・ワイド・ウェブの一部(「ウェブ」)であることが可能であるイントラネットおよびエキストラネットなど、より広範な「ネットワークのネットワーク」を形成するために、連結されるようになってきた。ネットワークを連結することにより、クライアントは、ネットワークにわたって、リソース(例えば、情報およびアプリケーション・プログラム)を供給することが可能になる。
【0005】
潜在的にワールド・ワイド・ネットワーク上で、共有されている情報およびアプリケーション・プログラムの利用可能性が増大するにつれ、個々のクライアント/サーバ・ネットワークの各々の脆弱性が増大している。例えば、ネットワークの1つに記憶されている所有権を主張できる情報およびアプリケーション・プログラムを検索および/または損傷しようとする不謹慎な個人は、所有権を主張できる情報およびアプリケーション・プログラムにアクセスして、無認可の方式で、それを使用する可能性がある。そのような無認可の使用を防止する努力では、多くのネットワークは、「ファイアウォール」を通して、他のネットワークに接続されている。従来のファイアウォールは、内部ネットワーク・リソース(例えば、特有のウェブ・サーバまたはフォルダ)へのアクセス制御に対処し、ネットワークの部分へのアクセスを制限し、および、それに記憶されている所有権を主張できる情報およびアプリケーション・プログラムに対する無認可の検索または損傷を防止するように設計されたハードウェアおよび/またはソフトウェア・システムを含む。
【0006】
しかし、多くの従来のファイアウォール・システムは、アプリケーション・レベルでは認可に対処せず、認可されたクライアントであると偽った不謹慎な個人によって機能しなくなる可能性がある。例えば、多くのウェブ・アプリケーションは、アプリケーションのユーザは、実際に彼/彼女のブラウザ上でアプリケーションのモバイル・エージェントを実行していると想定している。しかし、悪意のあるユーザは規格のウェブ・ブラウザ・ソフトウェアを使用せずにウェブ・サーバに接続することができ、したがって、そのユーザはブラウザ側で強化することが可能である制限になんら束縛されず、悪意のあるユーザは、標準的なクライアントであると偽って、ウェブ・サーバに破壊的なまたは捏造したデータを送信することができる。
【0007】
共通して譲受された米国特許出願第09/345,920号には、標準的なHTMLドキュメントのユーザからの要求を確認するための解決法が記載されている。その解決法は、HTMLドキュメントの内容(「認可されたアクション」)に基づいて、ブラウザ・ソフトウェアが取ることが可能であるアクションのセットまたはパターン(HTTP要求)を抽出することに基づいている。次いで、この認可されたアクションのセットは、クライアントのアプリケーションによって送信された要求に対して整合される。ユーザが、規格のブラウザの1つを使用していない場合であっても、アクションの法的または認可されたセット内からの要求のみが、ウェブ・サーバに渡されることになる。
【0008】
以上の内容を考慮して、本発明の発明者は、上述した確認技術を、ウェブ・サーバの代わりにクライアント・システム上で実行する論理(例えば、HTMLページに埋め込まれたJavaScript(TM)プログラム)に拡張する必要性を認識した。特に、本発明者は、外部データとその上で起きている事象を入手および確認するために、クライアント・サイドの論理の実行をシミュレーションする必要性を認識した。
【0009】
(発明の簡単な概要)
本発明の目的は、サーバ・システムの代わりに、クライアント・システム上で実行する論理のための確認技術を提供することである。
【0010】
本発明の他の目的は、クライアント・サイドの論理(例えば、HTMLページに埋め込まれたJavaScriptプログラム)のための確認技術を提供することである。この技術は、外部データとそこで起きている事象を入手および確認するために、論理の実行をシミュレーションする。
【0011】
本発明のさらに他の目的は、外部データと事象とに対する認可された要求のみが、クライアントから保護されたサーバに渡されるように、論理の実行をシミュレーションするクライアント・サイドの論理のための確認技術を提供することである。
【0012】
本発明の他の目的および利点は、図面とそれに続く記載を考慮することから、より明らかになるであろう。
【0013】
以上および他の問題点は、克服され、目的は、システムおよび方法が、クライアントとデータ処理システムのサーバとの間で送信された要求されたアクションの実行を認可するために提示されている、本発明の実施形態による方法および装置によって実現される。該方法は、アクションのセットまたはプログラム(例えば、HTMLページに埋め込まれたJavaScriptプログラム)を含んでいるメッセージを受信することと、アクションのセットの実行をシミュレーションすることとを含む。リストは、実行されたアクションと、実行されたアクションへのユーザが定義可能な入力とを表すように定義される。次いで、実行されたアクションと、実行されたアクションへのユーザが定義可能な入力のリストとは、許容可能なアクションと入力のリストと比較される。実行リスト内の要素が許容可能なアクションと入力のリストに含まれているとき、メッセージとアクションの含まれていたセットは認可される。
【0014】
本発明は、例示的であり、限定的でないことを意図している添付の図面の図に示されている。図では、同じ参照符号は、同じまたは対応する部分を指すことを意図している。
【0015】
(好ましい実施形態の詳細な説明)
図1Aは、本発明の一実施形態により構成されかつ動作するクライアント/サーバ・データ処理ネットワーク10を示す。データ処理ネットワーク10は、1つまたは複数のホスト/サーバ・コンピュータと連結され、かつ通信している、パーソナル・コンピュータ、ワーク・ステーション、携帯式および/または手持ち式装置など、複数のクライアント・システムを含む。図示を明瞭にするために、複数のクライアントは、クライアント・システム12によって表し、1つまたは複数のサーバは、サーバ14によって表している。クライアント12とサーバ14は、例えばインターネットのワールド・ワイド・ウェブの部分(「ウェブ」)、イントラネット、エキストラネット、または他の個人的なネットワークなど、通信ネットワーク16に有線接続または無線接続を介して結合された、遠隔装置および/または局所装置とすることが可能であることを理解されたい。
【0016】
本発明によれば、認可プロキシ・システム18は、クライアント12とサーバ14の間で結合されており、クライアント12とサーバ14の間でセキュリティ・ポリシ・プロトコルを強化する。例えば、認可プロキシ・システム18は、認可されたアクション(以下で定義)のみが、クライアント12とサーバ14との間で送信された要求、メッセージ、データ、情報内容、アプリケーション、および他の情報などの内部において実施されることを保証する。認可プロキシ・システム18は、クライアント12とサーバ14との間で送信された要求、メッセージ、データ、情報内容、およびアプリケーションの内部にあるコマンド、フィールド、ユーザ選択可能入力オプション、HTTP要求など(例えば、「要求されたアクション」)の実行をシミュレーションし、要求されたアクションが、許容可能なアクション(例えば、「認可されたアクション」)のセット内において定義されることを保証する。許容可能なアクションのセット内に存在しないあらゆるアクションは、アクションの標的(例えば、サーバ14またはクライアント12)に到達し、おそらくはそれを破壊する前に、認可プロキシ18によって拒否される。
【0017】
認可プロキシの実装戦略を変更することは、本発明の範囲内にあることを理解されたい。例えば、図1Aは、サーバ14とは分離した別個のネットワーク10のハードウェア構成要素18として認可プロキシを示す。図1Bでは、認可プロキシは、サーバ20上で実行するアプリケーション・プログラミング論理(「プラグイン」論理26)として実装されている。また、サーバ20は、例えばデータ・ストア28に含まれている、またはウェブ・ページ30の上に含まれている、サーバ20にあるアプリケーション・プログラム、情報内容、およびデータを、要求のあり次第クライアント12に提供するためのプラグイン論理22および24を含む。本発明によれば、認可プラグイン論理26は、送信する前に、クライアント12に提供されるプログラム、内容、およびデータを確認するために、サーバ20の上で実行される。
【0018】
別法として、図1Cは、ネットワーク10’上のルータまたはハブ42に結合されたスニファ装置40内において侵入検出システムとして動作する認可プロキシを示す。一般に知られているように、ハブ42は、ネットワーク10’内において通信を向ける。図1Cに示したように、ハブ42は、ネットワーク10’上の直接通信から、ウェブ・サーバ44を隔離する。スニファ40は、ウェブ・サーバ40を標的にした送信を検出し、遮断する。スニファ40は、遮断した送信を評価し、送信内において要求されたアクションを、例えば、記憶装置46内に含まれている認可されたアクションのリストと比較するために、以下で詳述する方法を実行する。受容可能でない場合、スニファ40は、メッセージを変更するか、または、ネットワーク上の他のシステムにメッセージを渡す。
【0019】
本発明の実施形態について、ウェブをベースとするアプリケーションとして特定のアプリケーションを有するように記載しているが、本明細書に記載されているシステムおよび方法が、任意のクライアント/サーバ通信システム、特に、無認可の要求、データ、およびアプリケーションからサーバを保護するのが望ましい通信システム内において適用可能であることは、本発明の範囲内にあることを理解されたい。
【0020】
以下で詳述するように、本発明の認可プロキシは、サーバ・システムの代わりに、クライアント・システム上で実行される論理を確認するために、2つの技術を使用する。第1の技術では、認可プロキシは、クライアント・サイドの論理の実行をシミュレーションし、各可能なコマンド、フィールド、ユーザが選択可能な入力オプション、およびHTTP要求を呼び出すおよび/またはトリガする。その結果、許容可能なブラウザ・アクションの完全なセットが識別され、実際のクライアント・セッションからの後の要求を確認するために使用される。第2の技術では、プロキシは、実際のクライアント・セッション中に、クライアントサイドの論理の実行を追跡する。追跡の結果は、サーバ・リソースに対する要求内において、認可プロキシに送信される。応答して、認可プロキシは、クライアント・サイドの論理の実行をシミュレーションし、シミュレーション中に入力オプションまたは外部データに対する他の要求に遭遇するとき、追跡結果が使用される。成功したシミュレーションは、サーバ・リソースに対するクライアント要求の承認となり、認可プロキシは、実際の処理のために、要求を適切なサーバに渡す。
【0021】
2つの確認技術は、技術が未知のデータとユーザ介入事象とに関するクライアント論理の問合わせに応答する方法の点で異なっている。これらの技術については、以下で詳述する。
【0022】
本発明の第1の態様では、認可プロキシ(例えば、プロキシ18、「プラグイン」論理26、およびスニファ40)は、クライアントとサーバとの間の送信を評価する方法を呼び出し、サーバから発信されたメッセージ(例えば、JavaScriptオブジェクト)に組み込まれているクライアント・サイドの論理をシミュレーションし、可能な要求されたアクションのリストを抽出する方法を呼び出す。クライアントが、要求を送信する場合、要求されたアクションは、認可されたアクションのリストに対して確認される。アクションが許容可能である場合、送信は、意図した標的の上に渡され、したがって、意図したアプリケーションに矛盾しない要求のみが実施される。
【0023】
図2は、データ処理システムのクライアントとサーバとの間における伝送を確認するためのプロセス(例えば、前述した評価プロセス、シミュレートするプロセス、および抽出プロセス)を示す流れ図である。例えば、図2は、ウェブ・サーバからクライアント(例えば、図1のサーバ14およびクライアント12)への伝送(例えば、HTMLウェブ・ページ102)を描いている。ブロック100で、サーバ14が、HTMLウェブ・ページ102をクライアント12に伝送する。伝送は、図2において線104Aおよび104Bで表されている。図1A〜1Cおよび図2に示すとおり、クライアント12に対するどの伝送も、それぞれ、認可プロキシ18、26、40によって代行受信される。これに応答して、認可プロキシは、確認プロセス(その詳細を破線106内に示す)を呼び出す。
【0024】
ブロック108で、評価プロセスが呼び出される。評価プロセスには、例えば、HTMLページ102を構文解析して、内容およびHTMLタグ、ならびにその中に組み込まれたクライアント側論理(例えば、JavaScriptコード)を識別することが含まれる。HTMLページ102中に存在する構成要素が識別されると、認可プロキシは、ページ102の構成要素の実行をシミュレートして(例えば、シミュレートされたブラウザ環境)、可能なすべての要求された処理を伝送の中で識別することができ、認可された処理のリストに提供できるようにする。
【0025】
シミュレートされたブラウザ環境には、シミュレートされたブラウザのDocument Object Model(「DOM」)およびブラウザ・オブジェクトが再現される、それぞれ、ブロック110および112、JavaScriptランタイム環境が含まれる。JavaScript標準オブジェクトのいくつかは、以下にさらに詳細に説明するとおり、置き換える必要がある。認可プロキシが、シミュレートされた環境内でHTMLページ102の構成要素を実行する。環境内のフックが、あらゆるトリガされたブラウザ処理、例えば、WEBサーバからドキュメントを検索する処理、またはWEBサーバに書式をサブミットする処理を認可プロキシに知らせる。シミュレーションが完了すると、これらの処理は、以下に説明するとおり、クライアントの実際の要求(ブロック120における)に対してマッチされた認可された処理のリストを補足する。
【0026】
前述したとおり、オブジェクトのいくつかおよびそのメソッドは、クライアント・ブラウザ環境を表すようにシミュレートされる必要がある。その第1に来るのは、HTMLドキュメント102から作成されるDOMである。さらに、Navigatorなどのブラウザ・オブジェクトが存在し、このオブジェクトは、Netscapeにおいて、ブラウザ・コンテキストおよぶブラウザ・ウインドウに関する情報を提供する。列挙エンジン(ブロック114における)が、DOM構成要素およびJavaScript構成要素のシミュレーションを調整する。また、時間オブジェクト、ランダム関数などのオブジェクトも、列挙エンジンによってシミュレートされる。これらのオブジェクトすべては、スクリプトがクライアントの環境内、例えば、クライアント・ブラウザ122上でそれらにアクセスした場合、スクリプトが獲得するものと整合性を有していなければならない。例えば、DOMのテキスト領域は、ユーザがブラウザ122に入力した値を返さなければならず、ランダム関数は、クライアント・スクリプトがユーザのブラウザ122内で獲得したのと同じ値を返さなければならず、またnavigator.userAgentは、クライアント・ブラウザ122の名前を戻さなければならない。
【0027】
理解されるとおり、ブラウザ・オブジェクトに入力されるデータのいくつかは、エンベロープ・データから推論され、例えば、navigator.userAgentは、クライアント12から送信されたHTTPヘッダから獲得することができる(例えば、HTMLページ102のオリジナルの要求の中で)。ただし、いくつかのデータは、クライアント側で辿られる実際のシナリオに依存する。JavaScript中に存在するイベント・ハンドラ(例えば、ユーザの行動に応答して実行されるコード)にさらなる複雑さが導入される。JavaScriptのHTMLスクリプト・タグは、ロードされると実行されるが、ある種のコード(例えば、イベント・ハンドラ)は、ユーザの介入があったときにだけ実行される。例えば、HTML言語の入力コントロールの多くに関するonClickイベント・ハンドラが存在する。対応するイベント・ハンドラは、ユーザがコントロールを選択した(例えば、「クリックした」)ときだけ実行される。
【0028】
列挙エンジン(ブロック114)が、カバレッジ・メソッドを行う。例えば、エンジンは、HTMLページ102中のすべのてイベントをトリガすることにより、またユーザによる可能な様々な入力に対する複数のシミュレートされた実行を行うことにより、ブラウザ122による可能なすべての処理をカバーするものと想定する。理解されるとおり、この環境の実行時間は、多くの入力コントロールに依存するスクリプトの場合、指数関数的に増大する。また、この環境内でランダム関数を扱うのが困難である可能性がある。シミュレートされた実行は、その実行がユーザ入力を要求するまで進行する。要求の時点で、様々な可能な入力値でさらなる実行を記録し、シミュレートするのにユーザの行動が必要とされる。シミュレーション・メソッドのこの態様は、図3を参照して以下により詳細に述べる。
【0029】
シミュレーションが完了すると、サーバから発信されたHTMLページ(および関連するクライアント側論理)と整合性を有する可能なすべてのブラウザ処理のリストが提供される。これらの可能な処理は、ブロック118で集約され、「正規の処理」として識別される。正規の処理は、認可プロキシによって利用されて、クライアント・ブラウザ122におけるHTMLページ102の特定の実行から受信される要求の処理を確認する。ブロック120で、クライアントの要求の処理が認可プロキシに戻され、認可プロキシによってHTMLページ102のシミュレーションから生成された正規の処理のリスト118と比較される。したがって、認可プロキシは、正規の処理のリスト118中にその要求および有効なユーザ入力が存在するか、存在しないかに応じてクライアントの要求を受け入れるか、または拒否する(例えば、対応する正規の処理が認可プロキシによって識別されなかった場合、要求の処理は拒否される)。正規の処理のリスト118は、クライアント・ブラウザ122からの要求の処理の受信における遅延に対応するように記憶するのが可能である(例えば、データ・ストア30(図1B)または46(図1C)に)ことを理解されたい。
【0030】
図3を参照して、以下に、HTMLページ102のシミュレートされた実行のなかでユーザ入力の要求および複数の可能な入力された値を扱うオプションを説明する。前述したとおり、ブロック150で、認可プロキシが、HTMLページ102中に含まれるブラウザ・コマンドおよびクライアント論理の実行をシミュレートする。シミュレートされた実行は、入力コントロールが現れるまで(ブロック155で)続くか、または他のユーザ入力の要求が行われる(ブロック165で)。ブロック155で、例えば、<TEXT>、<PASSWORD>&<TEXTAREA>のHTMLタグなどのフリー・テキスト入力コマンドが、HTMLページ102中で検出される。フリー・テキスト入力コマンドが現れた場合、コントロールは、ブロック160に進み、クライアントから受信した入力を表す固有プレース・ホルダが割り当てられる。ブロック160で割り当てられるプレース・ホルダは、例えば、ユーザの行動に応答してフリー・テキスト入力コマンドから生成された入力として生成されたURL内で後に認識されるフィールドである。この後の段階で、認可プロキシは、受信したクライアント要求とのパターン照合を行う(図2のブロック120)。パターン照合は、「安全な」表現だけを許可するように実施する。好ましいパターン照合の技法は、本出願の出願人に共通で譲渡された米国特許出願第09/345920号(弁理士整理番号3269/6)に記載されるHTMLリンク抽出器からもたらされる。プレース・ホルダを含む文字列に基づいて分岐判定(文の場合)を認識するフックが、JavaScript環境の中に組み込まれる。そのような場合、これは、入力がスクリプトの論理進行に影響を与えることを意味するので、実行が無効にされる。システムは、プレース・ホルダが、生成されたURL中に直接に現れることにより、またはプログラムの実行フローに影響を与えることにより間接に、生成されたURLに影響を与える場合、リンクを有効にすることができる。
【0031】
制御は、ブロック160からブロック165に進むか、またはフリー・テキスト入力コマンドが全く現れない場合、ブロック155からブロック165に進む。ブロック165で、認可プロキシが、いくつかの可能な入力値の1つからのユーザによるコマンド要求入力の出現を検出する。そのようなコマンドが現れた場合、コントロールは、ブロック170に進み、現れなければ、コントロールは、ブロック180に進む。ブロック170で、列挙された入力コントロールに対する第1の入手可能な値が割り当てられる。他の可能な正規の入力値も入手可能であるので、制御は、ブロック175に進み、バックトラック・ログ116(図2)中にエントリが行われる。このエントリは、HTMLページ102中の現在の実行の相対位置(例えば、実行における深さ)、ならびに可能な正規のエントリの残りの数を記録する。ログ116は、制御が、前の実行のポイント(深さ)にループバックし、可能な正規の入力値の次の値を選択し、次の正規の入力値で実行を続けるのを可能にすることを理解されたい。ループバックして、HTMLページ102に対するすべての入力の実行をシミュレートすることにより、可能なすべてのブラウザ・コマンドおよびそれに対するユーザ入力が、前述した可能な正規の処理のリスト118中に収集される。
【0032】
提供された値をログ記録した後、ブロック180で実行が継続する。ブロック180で、シミュレータが、コードの終りを検出する。終りが検出された場合、制御は、可能なバックトラック処理のためにブロック185に進む。終りが現れない場合、制御は、ブロック150にループバックし、前述したとおり、シミュレーションが継続する。ブロック185で、バックトラック・ログ116を評価して、さらなる可能な入力値が、さらなる可能な正規の処理の検出を駆動するかどうかが判定される。エントリがバックトラック・ログ116中に残っている場合、深さ変数を利用して、現れた複数の入力コマンドのどれかのところに実行が再配置される。再配置された後、入力コマンドの次の値が割り当てられ、シミュレーションが、相対ロケーションから先にコードの終りまで進む。そのようなループバック実行は、バックトラック・ログ116中の各値が尽きるまで継続される。
【0033】
本発明者は、JavaScript環境におけるバックトラッキングの一実施形態は、バックトラッキング・ポイントまで同一の値で実行を再開することであるのを確認した。別の正規の入力がこの時点で提供され、ログ記録される。このプロセスは、列挙されるすべての値が処理されるまで繰り返される。
【0034】
前述したとおり、シミュレーション・プロセス中の可能なすべての入力およびイベントによってトリガされるすべてのブラウザ処理を集約することにより、認可プロキシは、WEBサーバで発信されるスクリプトと整合性を有する、クライアントからの実質的にすべてではないにしても、ほとんどの可能な要求のリストを獲得する。いくつかの実施形態では、このシステムは、以下に説明する追跡実施形態に対する補助として使用されて、より良好なパフォーマンスを得る。
【0035】
以下に、本発明のシミュレーション実施形態の例を説明する。
HTMLページ(例えば、HTMLページ102)が、3つの入力コントロールを含む。
・2つの国、米国&イスラエルのオプション・リスト(もちろん、完全なリストが可能である)
・性別、男性&女性のラジオ選択
・ユーザの名前に関するテキスト入力
【0036】
HTML中に組み込まれたJavaScriptが、以下のパターンに従ってURLを構成する。
http://site.country.perfectotech.com/gender/name.html
ここで、countryは、国別により「us」または「il」であり、genderは、「boys」または「girls」という値であり、またnameは、入力テキスト・フィールドである。
【0037】
以下が、HTMLページ・コードである。
【0038】
前述したシミュレーション・プロセスは、以下のとおりコードを扱う。
1.ドキュメントの検査により、JavaScriptを実行するイベントは、Get My Pageボタンの上でクリックすることだけであることが与えられる。このイベントがトリガされる。これが、バックトラック・ログ116中に記録され、これがトリガするイベントはこれだけであるという注釈が付けられ、これにより、このエントリが使い果たされる。使い果たしは、後続のステップでより詳細に説明する。
2.ブランチ Aに到達するまでコードが実行される。
3.selectedIndex内で国を表す値が供給され、可能な2つの値、0(米国を表す)および1(イスラエルを表す)が存在する。第1の値が供給され、0の値がブランチ Aで供給されたことが記録される。
4.実行が、ブランチ Bに進み、Genderラジオ・ボックスのチェックされた値がチェックされる。可能な2つの値、真(boys)および偽(girls)が存在する。真の値が供給されて、バックトラック・ログ116に記録される。
5.実行が、アクセス Cに到達するまで進み、テキスト・フィールドの値が必要とされる。プレース・ホルダが供給される。このプレース・ホルダは、通常の状況の下では現れる可能性のないUNICODE文字列である。このプレース・ホルダには、<PHname>というマークが付けられる。バックトラック・ログ116にこれをログ記録する必要はない。というのは、この値を対象とするバックトラッキングは、必要とされないからである。<PHname>のタイプが、最大長10のテキストとして記録される。
6.オブジェクトwindowのJavaScript関数openが、要求されたURLを記録する関数にシミュレートされた環境内でフックされる。構成されたURLは、次のようなものである。
http://site.us.perfectotech.com/boys/<PHname>.html.
7.ポリシー・エンフォーサが、最大長10の任意のテキストに対して<PHname>をマッチさせるのが可能であるという注釈とともに、この新しい可能な処理のことを通知される。
8.実行が再開する。値が次の可能な値、つまり偽で置き換えられた最も深いバックトラッキング・エントリ(ブランチ B)を例外として、同じステップが辿られる。ブランチ Bの可能なすべての値は、使い果たされているので、バックトラック・ログ116中で、使い果たされているというマークが付けられる。
9.したがって、「girls」の値がgenderフィールド内で提供され、生成されるリンクは、http://site.us.perfectotech.com/girls/<PHname>.htmlである。
10.実行が再開する。今度は、ブランチ Bが最も深い分岐であり、次に許可される値、つまりイスラエルを表す1が提供される。
11.再びブランチ Bに到達し、今度は、バックトラック・ログ116は存在せず、したがって、(再)更新されたエントリがログ記録され、第1の正規の処理、すなわち、真(boys)が提供される。
12.実行が、同じパターンで再開し、今度、獲得されるリンクは、次のとおりである。
http://site.il.perfectotech.com/boys/<PHname>.html
13.このプロセスは、すべてのバックトラック・ログが尽きるまで反復して(例えば、性別フィールドに対する「girls」の値を提供して、もう一度)続く。したがって、可能なさらなる実行パスは、存在しない。
【0039】
JavaScriptコードを検査する際、要求http://site.intl.pefectotech.com/...を生成する可能性がある理論上の実行パスが見られたが、DOMは、0または1以外の国に対するselectedIndexを提供しなかったので、このパスは辿られなかった。これは、どのようにJavaScriptコードとDOMの両方が、許可された要求に影響を与えるかの例である。国に関して可能な値は2つしか存在しなかったので、第3の実行パスは、正規のパスではない。
【0040】
本発明の第2の態様では、認可プロキシ(例えば、プロキシ18、「プラグイン」論理26、およびスニファ40)が、クライアントとサーバとの間の伝送を評価するためのメソッドを呼び出す。第1に、クライアント側論理が、コードに挿入されることによってインストルメント化され、クライアント・システム12上でクライアント側論理の実行を追跡する。クライアント・システム12上でユーザによって実行されると、サーバ・リソースの要求が、実際の実行の結果(追跡結果)とともに認可プロキシにおいて受信される。認可プロキシは、クライアント側論理の実行をシミュレートして、入力オプションまたは外部データの他の要求がシミュレーション中に現れたとき、追跡結果が利用される。成功したシミュレーションは、サーバ・リソースのクライアント要求の承認をもたらし、認可プロキシが、実際の処理のためにその要求を適切なサーバに渡す。例えば、受入れ可能な処理を有する伝送が、意図された目標に伝えられ、これにより、意図されたアプリケーションと整合性のある要求だけが実行される。
【0041】
図4は、データ処理システムのクライアントとサーバとの間の伝送を確認するためのプロセス(例えば、前述した追跡するプロセスおよびシミュレートするプロセス)を示す流れ図である。例えば、図4が、WEBサーバ200からクライアント250への伝送(例えば、HTMLウェブ・ページ202)を描いている。本発明によれば、認可プロキシ(例えば、それぞれ、図1A、1B、1Cのプロキシ18、26、40)が、伝送202を代行受信する。シミュレーション・プロセスに入る前に、認可プロキシは、クライアント・ブラウザ250上で生じる値およびイベントの追跡を可能にするコマンドを受信するための伝送を準備する。ブロック204で、伝送(例えば、HTMLページ202)が構文解析されて、内容およびHTMLタグならびにクライアント側論理(例えば、JavaScriptコード)を識別する。クライアント側論理は、ブロック206に進み、ブラウザ処理(例えば、入力値の要求、および実際の入力値、イベント等)を追跡するためのコードが追加される。次に、変更されたコード、つまりインストルメント化されたコードが、要求された伝送の中(例えば、HTMLページ中202)でクライアント・ブラウザ250に渡される。
【0042】
前述したとおり、インストルメント化されたコードは、ブラウザ処理を追跡して、追跡の結果を認可プロキシに戻す(さらなる処理の要求の中で、またはその要求に加えて)。クライアント・ブラウザ250が、サーバ・リソースを要求したとき、ブラウザ処理のトレース(例えば、クライアント・ブラウザ250上で行われた入力およびイベント)が、評価のために認可プロキシに戻される。この実施形態では、すべての入力を列挙する代りに(図2に概要を述べたシミュレーション・プロセスに関連して説明したとおり)、ブラウザが、その要求とともに、ブラウザ環境内で実際のユーザ・セッション中にスクリプトが獲得したすべての値のトレースを送信する。このトレースは、トレース・フィーダにおいて認可プロキシの中で保持される(ブロック212)。
【0043】
追跡の結果が受信されると、認可プロキシが、ブロック210で、オリジナルの伝送(例えば、HTMLページ202)の中のコードおよびDOM構成要素をシミュレートする。図4に示すとおり、シミュレーション・ステップに対する入力は、オリジナルのクライアント側コード(例えば、追跡サポート・コードを有さないクライアント側論理)、DOM構成要素(ブロック208からの)、およびトレース・フィーダ(ブロック212)からの追跡結果を含む。追跡されたオブジェクトが、シミュレートされた環境内で照会されたとき(ブロック210で)、認可プロキシは、(トレース・フィーダを介して)クライアントから受信された追跡された値に関して検査する。また、追跡された値は、オブジェクトの論理上の内容規則に照らしても検査され、例えば、テキスト・フィールド内に許容可能な文字の最大数、または可能な2つの値(真/偽)のどちらかだけでしかないチェックボックス値、他のどの値も不正である。シミュレーションの結果は、ブロック214に渡される受入れ可能な、つまり認可されたブラウザアクションのリストである。ただし、この実施形態では、認可されたブラウザアクションは、第1の確認プロセスに関連して前述したとおり、クライアント・ブラウザにおける特定の実行から決定された値(トレースの中からの入力およびイベント)に基づき、可能なすべてのブラウザ要求に基づくのではない。クライアントアクション(ブロック250から渡された)をブロック214で認可されたアクション(ブロック210から渡された)と比較して、特定のクライアント・ブラウザ実行(ブロック250)の要求の1つまたは複数のアクションが認可されるかどうかの判定を行うことができる。
【0044】
理解されるとおり、ブラウザは、デフォルトで追跡を行うこと、および/または追跡の結果を送信することはしない。したがって、ブラウザに送信されるコード(例えば、HTMLドキュメント202)が、シミュレーションに先立って、ブロック206で行われる前述したステップで変更されて(インストルメント化されて)、このコードが、ブラウザ環境内(ブロック250)のブラウザアクションのトレースを作成して戻す。コードに関する例としてのインストルメント化プロセスは、以下を含む。
・JavaScriptコードが、JavaScriptアセンブリにコンパイルされる。
・アセンブリが、検査され、すべてのget_property、set_property、および関数コールにマークが付けられる
・get_property命令が、関係のあるプロパティ名に照らして検査される。
・関数コールが、追跡された関数値(例えば、ランダム)およびアクション関数(例えば、新しいURLで新しいウインドウを開くwindow.open())に照らして検査される。
・関係のある命令のそれぞれが、オブジェクトが追跡に関係があるか否かを検査する前に関数コールが挿入される。
・get_propetyとして、追跡されるオブジェクトの値が、実行トレースに追加される。
・新しいURLをロードさせるオブジェクトのset_propertyとして、トレースがURLに付加される。
・新しいURLをロードする関数コールとして、トレースがURLに付加される。
・アセンブラが逆コンパイルされて(組み込まれた逆コンパイラを使用して)JavaScriptに戻る。
・変更されたJavaScriptコードが、オリジナルのJavaScriptコードの代りに送信される。
【0045】
以下は、ブラウザに送信されるコードおよび変更されたコードの例である。
【0046】
オリジナルのコードは、以下のとおりである。
HTMLドキュメントは、以下の書式を有する。
変更されたコードは、以下のとおりである。
HTML形式に対する変更は、以下のとおりである。
【0047】
変更されたコードは、document.form[0]のget_property上のas_.propを呼び出して、それが書式であることを検査し、次にelements.day.valueに関して検査する。as_.prop関数は、値が追跡されるべきかどうか(テキスト・フィールドの値の場合と同様に)を検査し、その値を追跡変数に追加する。set_propertyが、変更されてトレースが要求されたURLに追加される。as_.initが、スクリプトのヘッドとイベント・ハンドラの両方において追加される。イベント・ハンドラがトリガされたとき、イベントがトレースに追加される。トレースは、認可プロキシに送信されると、前述したとおり処理される。
【0048】
以下は、ユーザが月曜のチケットを購入するのを選択するプロセスの説明である。コードは、上記にリストしたとおりインストルメント化されている。ただし、ユーザは、コードがインストルメント化されていない場合に見るものと同一の非常に簡単な書式を自らのブラウザ内で見る。
・チケット購入の曜日を選択しなければならないことを明記するテキスト
・「sunday」というデフォルト値を有する簡単なテキスト・ボックス
・要求を送信するボタン
【0049】
ユーザが、「tuesday」を入力して、送信ボタンを選択することによって要求を送信するものと想定する。実際に行われるのは、以下のとおりである。ブラウザ内で、
・送信ボタンを選択することにより、my_send関数を呼び出すイベント・ハンドラが起動される。ただし、イベント・ハンドラを起動することは、追跡されるアクションであり、したがって、インストルメント化されたコード中のas_initによって実行トレースに追加される。
・JavaScript関数であるmy_sendが呼び出される。この関数は、曜日が、平日の1つの曜日にマッチすることを確認し、ページをマッチするページ、new_page?dayで置き換えるものとされる。
・my_send値で、document.forms[0].element.day.valueがアクセスされて、as_propによって追跡される値として識別される。したがって、値「document.forms[0].element.day.value=tuesday」が、トレースに追加される。
・コードであるwindow.location.href=「new_page?」+dayが、インストルメント化されたコード中で実行されたとき、as_setpropが、その変数を追跡されるイベント変数として識別する。通常、新しく設定されたURLに対して単一の要求が生成されていることになる。インストルメント化されたコードの中で、生成されたトレースを含む追加の要求がサーバに送信される。
【0050】
この時点で、サーバ内に、要求とトレースの両方がある。
・オリジナルのコードがシミュレートされた環境内で実行される。
・トレース・フィーダが、送信ボタンに関するイベント・ハンドラの起動を識別し、イベント・ハンドラがトリガされる。
・イベント・ハンドラが、my_sendを呼び出す
・my_sendが、追跡されるオブジェクトである変数「document.forms[0].elements.day.value」にアクセスしようと試みる。
・これにより、トレース・フィーダが、実行トレースから値「tuesday」を検索する。
・トレース・フィーダが、サイズ20のテキスト・ボックス内の正規の入力にマッチすることを確認する。
・値が、JavaScriptコードに提供される。
・JavaScriptコードが、「tuesday」は、実際に平日であることを確認し、window.location.href=「new_page?tuesday」に設定する。
・この属性を設定することにより、正しくマッチする実際の要求に対して「new_page?tuesday」のシミュレートされた要求をマッチさせるイベントが生じる。
【0051】
クライアント・システムのユーザ(例えば、ハッカー・オペレーティング・クライアント12)が、サイズ20のテキスト・フィールドに対する正規の入力を構成しない値(例えば、21文字の入力)を提供しようと試みた場合、トレース・フィーダは、その値に不正な入力としてマークを付け、その実行を停止することにより、その値をブロックすることになる。ユーザが、不正な要求を提供しようと試みた場合には、シミュレートされた環境処理を実際の要求とマッチさせることに失敗する。
【0052】
本発明を好ましい実施形態で説明し図示してきたが、当分野の技術者には明らかなとおり、本発明の趣旨および範囲を逸脱することなく、多くの変形および変更を加えることができ、したがって、そのような変形形態および変更形態も本発明の範囲に含まれるものとするので、本発明は、以上に記載した方法または構成の正確な詳細に限定されるべきものではない。
【図面の簡単な説明】
【図1A】 本発明の一実施形態により構成されかつ動作する、クライアント/サーバ・データ処理ネットワークのブロック図である。
【図1B】 本発明の他の実施形態により構成されかつ動作する、クライアント/サーバ・データ処理ネットワークのブロック図である。
【図1C】 本発明のさらに他の実施形態により構成されかつ動作する、クライアント/サーバ・データ処理ネットワークのブロック図である。
【図2】 本発明の一実施形態によるシミュレーション方法を使用して、クライアントとサーバの間で要求を確認する例示的なプロセスを示すフロー・チャートである。
【図3】 図2のシミュレーション方法へのユーザの入力を受け取る例示的なプロセスを示すフロー・チャートである。
【図4】 本発明の第2実施形態による追跡方法を使用して、クライアントとサーバとの間で要求を確認する例示的なプロセスを示すフロー・チャートである。[0001]
(Copyright notice)
The portion of this application document contains content that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction of the application document or the disclosure of the application, as in the patent file or record of the patent or trademark office. All rights reserved.
[0002]
(Related application)
This application is related to the following co-pending applications:
• US Provisional Patent Application No. 60 / 161,473, filed October 25, 1999, entitled “METHOD AND SYSTEM FOR VERIFYING A CLIENT REQUEST”, patent attorney number 3269/8.
・ US Patent Application No. 09 / 345,920, filed on July 1, 1999, named Patent and Practice for EXTRACTING APPLICATION PROTOCOL CHARACTISTISTS, Patent Attorney No. 3269/6
-US Patent Application No. 09 / 149,911, filed on September 9, 1998, patent attorney docket number 3269/3, named METHOD AND SYSTEM FOR PROTECTING OPERATIONS OF TRUSTED INTERNAL NETWORKS
-Patent Application No. 9 / Patent Application No. 0, US Patent Application No. 9 / METHOD AND SYSTEM FOR MAINTAINING RESTRICTED OPERATION ENVIRONMENTS FOR APPLICATION PROGRAM OR
・ PCT application PCT / IL98 / 3269/4
PCT application PCT / IL98 / 00443
・ PCT application PCT / IL00 / 00378
The disclosures of these applications are fully incorporated herein by reference.
[0003]
(Background of the Invention)
The present invention relates generally to privacy and security systems, and more particularly to requests, data, information content, applications, and other information transmitted between a client device and a host device within a data processing system. It relates to a method and system for authorizing.
[0004]
(Conventional technology)
In a client / server data processing system, several personal computers, work stations, portable and / or handheld devices (“clients”) and one or more host computers (“servers”) Connected and communicating. The server processes requests from clients for information and / or application programs shared by the clients over the network. Increasingly, a client / server network, for example, can itself be part of the World Wide Network, ie, part of the Internet's World Wide Web ("Web"). It has become concatenated to form a broader “network of networks” such as intranets and extranets. Linking networks allows clients to supply resources (eg, information and application programs) across the network.
[0005]
As the availability of shared information and application programs increases, potentially on the world wide network, the vulnerability of each individual client / server network increases. For example, an unscrupulous individual attempting to retrieve and / or damage information and application programs that can claim ownership that is stored in one of the networks has access to information and application programs that can claim ownership. May use it in an unauthorized manner. In an effort to prevent such unauthorized use, many networks are connected to other networks through “firewalls”. Traditional firewalls can handle access control to internal network resources (eg, specific web servers or folders), restrict access to parts of the network, and claim ownership stored in them Includes hardware and / or software systems designed to prevent unauthorized retrieval or damage to information and application programs.
[0006]
However, many conventional firewall systems do not deal with authorization at the application level and may fail by an unscrupulous individual who pretends to be an authorized client. For example, many web applications assume that the user of the application is actually running the application's mobile agent on his / her browser. However, a malicious user can connect to a web server without using standard web browser software, so the user is not bound by any restrictions that can be enforced on the browser side. A malicious user can send destructive or forged data to a web server, pretending to be a standard client.
[0007]
Commonly assigned U.S. patent application Ser. No. 09 / 345,920 describes a solution for confirming a user's request for a standard HTML document. The solution is based on extracting a set or pattern of actions (HTTP requests) that the browser software can take based on the content of the HTML document (“authorized actions”). This authorized set of actions is then matched to the request sent by the client application. Even if the user is not using one of the standard browsers, only requests from within the legal or authorized set of actions will be passed to the web server.
[0008]
In view of the above contents, the inventor of the present invention has a logic (for example, a JavaScript (TM) program embedded in an HTML page) for executing the above-described confirmation technique on a client system instead of a web server. Recognized the need to extend to. In particular, the inventor has recognized the need to simulate the execution of client-side logic in order to obtain and confirm external data and the events occurring thereon.
[0009]
(Summary of the invention)
It is an object of the present invention to provide a verification technique for logic executing on a client system instead of a server system.
[0010]
Another object of the present invention is to provide a verification technique for client side logic (eg, a JavaScript program embedded in an HTML page). This technique simulates the execution of logic to obtain and confirm external data and what is happening there.
[0011]
Yet another object of the present invention is a verification technique for client-side logic that simulates the execution of logic so that only authorized requests for external data and events are passed from the client to the protected server. Is to provide.
[0012]
Other objects and advantages of the present invention will become more apparent from consideration of the drawings and the following description.
[0013]
These and other problems have been overcome, and the objective is to present a system and method for authorizing execution of requested actions sent between a client and a server of a data processing system. Implemented by a method and apparatus according to embodiments of the invention. The method includes receiving a message that includes a set of actions or a program (eg, a JavaScript program embedded in an HTML page) and simulating the execution of the set of actions. The list is defined to represent performed actions and user definable inputs to the performed actions. The performed action and the list of user-definable inputs to the performed action are then compared to the list of acceptable actions and the input. When an element in the execution list is included in the list of acceptable actions and inputs, the included set of messages and actions is authorized.
[0014]
The present invention is illustrated in the figures of the accompanying drawings, which are intended to be illustrative and not limiting. In the figures, the same reference signs are intended to refer to the same or corresponding parts.
[0015]
Detailed Description of Preferred Embodiments
FIG. 1A illustrates a client / server
[0016]
In accordance with the present invention, the
[0017]
It should be understood that changing the authorization proxy implementation strategy is within the scope of the present invention. For example, FIG. 1A shows the authorization proxy as a
[0018]
Alternatively, FIG. 1C shows an authorization proxy operating as an intrusion detection system within a
[0019]
Although embodiments of the present invention have been described as having specific applications as web-based applications, the systems and methods described herein can be used in any client / server communication system, particularly It should be understood that it is within the scope of the present invention to be applicable in communication systems where it is desirable to protect the server from unauthorized requests, data, and applications.
[0020]
As will be described in detail below, the authorization proxy of the present invention uses two techniques to verify the logic executed on the client system instead of the server system. In the first technique, the authorization proxy simulates the execution of client-side logic and invokes and / or triggers each possible command, field, user-selectable input options, and HTTP request. As a result, a complete set of acceptable browser actions is identified and used to confirm subsequent requests from the actual client session. In the second technique, the proxy tracks the execution of client-side logic during the actual client session. The result of the tracking is sent to the authorization proxy in a request for server resources. In response, the authorization proxy simulates the execution of client-side logic, and the tracking results are used when encountering input options or other requests for external data during the simulation. A successful simulation results in the approval of the client request for the server resource, and the authorization proxy passes the request to the appropriate server for actual processing.
[0021]
The two verification techniques differ in how they respond to client logic queries regarding unknown data and user intervention events. These techniques are described in detail below.
[0022]
In a first aspect of the invention, an authorization proxy (eg,
[0023]
FIG. 2 is a flow diagram illustrating a process (eg, the evaluation process, the simulating process, and the extraction process described above) for confirming transmission between the client and server of the data processing system. For example, FIG. 2 depicts a transmission (eg, HTML web page 102) from a web server to a client (eg,
[0024]
At
[0025]
The simulated browser environment includes
[0026]
As mentioned above, some of the objects and their methods need to be simulated to represent the client browser environment. First comes a DOM created from the
[0027]
As will be appreciated, some of the data entered into the browser object is inferred from the envelope data, e.g., navigator. The userAgent can be obtained from the HTTP header sent from the client 12 (eg, in the original request for the HTML page 102). However, some data depends on the actual scenario followed on the client side. Additional complexity is introduced into event handlers that exist in JavaScript (eg, code that is executed in response to user actions). JavaScript HTML script tags are executed when loaded, but some code (eg, event handlers) is executed only upon user intervention. For example, there is an onClick event handler for many of the HTML language input controls. The corresponding event handler is executed only when the user selects a control (eg, “clicks”).
[0028]
The enumeration engine (block 114) performs the coverage method. For example, the engine does all possible processing by the
[0029]
When the simulation is complete, a list of all possible browser processes that are consistent with the HTML page (and associated client-side logic) originating from the server is provided. These possible processes are aggregated at
[0030]
With reference to FIG. 3, the following describes options for handling user input requests and multiple possible input values in the simulated execution of the
[0031]
Control proceeds from
[0032]
After logging the provided value, execution continues at
[0033]
The inventor has confirmed that one embodiment of backtracking in a JavaScript environment is to resume execution at the same value up to the backtracking point. Another legitimate input is provided at this point and logged. This process is repeated until all enumerated values have been processed.
[0034]
As described above, by aggregating all browser processing triggered by all possible inputs and events during the simulation process, the authorization proxy is sent from the client that is consistent with the script originating on the WEB server. Obtain a list of most, if not all, possible requests. In some embodiments, this system is used as an adjunct to the tracking embodiment described below to obtain better performance.
[0035]
Hereinafter, an example of the simulation embodiment of the present invention will be described.
An HTML page (eg, HTML page 102) includes three input controls.
• Options list of two countries, USA & Israel (of course a complete list is possible)
・ Gender, male & female radio selection
・ Text input about user's name
[0036]
JavaScript built into HTML constructs a URL according to the following pattern.
http: // site. country. perfectotech. com / gender / name. html
Here, country is “us” or “il” depending on the country, gender is a value of “boys” or “girls”, and name is an input text field.
[0037]
The following is the HTML page code.
[0038]
The simulation process described above handles code as follows:
1. Examining the document gives that the only event that executes JavaScript is to click on the Get My Page button. This event is triggered. This is recorded in the
2. The code is executed until branch A is reached.
3. A value representing the country is supplied in the selectedIndex, and there are two possible values, 0 (representing the United States) and 1 (representing Israel). The first value is supplied and it is recorded that a value of 0 was supplied in branch A.
4). Execution proceeds to branch B and the checked value of the Gender radio box is checked. There are two possible values: boys and girls. A true value is provided and recorded in the
5. Execution proceeds until access C is reached and the value of the text field is required. A place holder is supplied. This place holder is a UNICODE string that may not appear under normal circumstances. This place holder is marked <PHname>. There is no need to log this in the
6). The Javascript function open of the object window is hooked in a simulated environment to a function that records the requested URL. The constructed URL is as follows.
http: // site. us. perfectotech. com / boys / <PHname>. html.
7). The policy enforcer is informed of this new possible processing, with the annotation that <PHname> can be matched against any text of
8). Execution resumes. The same steps are followed with the exception of the deepest backtracking entry (branch B) whose value is replaced by the next possible value, ie false. All possible values for branch B have been used up, so they are marked in the
9. Thus, a value of “girls” is provided in the gender field and the generated link is http: // site. us. perfectotech. com / girls / <PHname>. html.
10. Execution resumes. This time, branch B is the deepest branch and the next allowed value is provided, ie 1 representing Israel.
11. Reaching branch B again, this time there is no
12 Execution resumes with the same pattern, and the links acquired this time are:
http: // site. il. perfectotech. com / boys / <PHname>. html
13. This process continues iteratively until all backtrack logs are exhausted (e.g., once again providing the value of "girls" for the gender field). Thus, there are no possible further execution paths.
[0039]
When inspecting the JavaScript code, request http: // site. intl. pefectotech. com /. . . There was a theoretical execution path that could generate DOM, but this path was not followed because DOM did not provide a selectedIndex for countries other than 0 or 1. This is an example of how both the JavaScript code and the DOM affect the granted request. Since there were only two possible values for the country, the third execution path is not a regular path.
[0040]
In a second aspect of the invention, an authorization proxy (eg,
[0041]
FIG. 4 is a flow diagram illustrating a process for verifying transmissions between a client and server of a data processing system (eg, the tracking process and the simulating process described above). For example, FIG. 4 depicts a transmission (eg, HTML web page 202) from the
[0042]
As previously mentioned, instrumented code tracks browser processing and returns the results of the tracking to the authorization proxy (in or in addition to the request for further processing). When the
[0043]
Once the tracking results are received, the authorization proxy simulates the code and DOM components in the original transmission (eg, HTML page 202) at
[0044]
As will be appreciated, the browser does not track by default and / or send tracking results. Accordingly, code sent to the browser (eg, HTML document 202) is modified (instrumented) in the above-described steps performed at
• The JavaScript code is compiled into a JavaScript assembly.
The assembly is inspected and all get_property, set_property, and function calls are marked
The get_property instruction is checked against the relevant property name.
Function calls are checked against the tracked function value (eg random) and action function (eg window.open () which opens a new window with a new URL).
A function call is inserted before each relevant instruction checks whether the object is relevant for tracking.
As get_property, the value of the tracked object is added to the execution trace.
A trace is appended to the URL as set_property of the object that loads the new URL.
A trace is appended to the URL as a function call that loads a new URL.
The assembler is decompiled (using the built-in decompiler) and returns to JavaScript.
-The modified JavaScript code is sent instead of the original JavaScript code.
[0045]
The following are examples of code sent to the browser and modified code.
[0046]
The original code is as follows:
The HTML document has the following format.
The changed code is as follows:
The changes to the HTML format are as follows.
[0047]
The changed code is document. as_. on get_property of form [0]. call prop to check that it is a format, then elements. day. Check for value. as_. The prop function checks whether a value is to be tracked (as is the case with a text field value) and adds that value to the tracking variable. set_property is modified and added to the URL for which tracing was requested. as_. init is added both in the head of the script and in the event handler. When the event handler is triggered, an event is added to the trace. When the trace is sent to the authorization proxy, it is processed as described above.
[0048]
The following is a description of the process by which the user chooses to purchase a Monday ticket. The code is instrumented as listed above. However, the user sees the same very simple form in his browser that he sees when the code is not instrumented.
-Text stating that the day of the week for ticket purchase must be selected
A simple text box with a default value of “sunday”
-Button to send request
[0049]
Assume that the user sends a request by entering “tuesday” and selecting a send button. What is actually done is as follows. In the browser
• Selecting the send button invokes an event handler that calls the my_send function. However, invoking an event handler is a tracked action and is therefore added to the execution trace by as_init in the instrumented code.
-My_send which is a JavaScript function is called. This function confirms that the day of the week matches one day of the week, and the page that matches the page, new_page? It shall be replaced with day.
-With my_send value, document. forms [0]. element. day. The value is accessed and identified as the value tracked by as_prop. Therefore, the value “document.forms [0] .element.day.value = tuesday” is added to the trace.
-Code window. location. When href = “new_page?” + day is executed in the instrumented code, as_setprop identifies the variable as a tracked event variable. Usually, a single request is generated for the newly set URL. Within the instrumented code, an additional request containing the generated trace is sent to the server.
[0050]
At this point, there are both requests and traces in the server.
• The original code is executed in a simulated environment.
The trace feeder identifies the event handler activation for the send button and the event handler is triggered.
Event handler calls my_send
My_send attempts to access the variable “document.forms [0] .elements.day.value” which is the object being tracked.
This causes the trace feeder to retrieve the value “tuesday” from the execution trace.
Verify that the trace feeder matches the regular input in a
A value is provided to the JavaScript code.
-The JavaScript code confirms that "tuesday" is actually a weekday, window. location. Set href = “new_page? tuesday”.
Setting this attribute causes an event to match the "new_page? Tuesday" simulated request to the actual request that matches correctly.
[0051]
If a client system user (eg, hacker operating client 12) attempts to provide a value (eg, 21 character input) that does not constitute legitimate input for a
[0052]
Although the present invention has been described and illustrated in preferred embodiments, it will be apparent to those skilled in the art that many variations and modifications can be made without departing from the spirit and scope of the invention. Since such variations and modifications are intended to be included within the scope of the present invention, the present invention should not be limited to the precise details of the method or construction described above.
[Brief description of the drawings]
FIG. 1A is a block diagram of a client / server data processing network constructed and operative in accordance with one embodiment of the present invention.
FIG. 1B is a block diagram of a client / server data processing network constructed and operative in accordance with another embodiment of the present invention.
FIG. 1C is a block diagram of a client / server data processing network constructed and operative in accordance with yet another embodiment of the invention.
FIG. 2 is a flow chart illustrating an exemplary process for confirming a request between a client and a server using a simulation method according to one embodiment of the present invention.
FIG. 3 is a flow chart illustrating an exemplary process for receiving user input to the simulation method of FIG.
FIG. 4 is a flow chart illustrating an exemplary process for confirming a request between a client and a server using a tracking method according to a second embodiment of the present invention.
Claims (8)
前記認可プロキシが、前記サーバから、アクションのセットを含んでいる第1メッセージを受信するステップと、
前記認可プロキシが、前記アクションのセットを実行する処理環境をシミュレーションし、前記処理環境内で前記アクションのセットを実行し、実行により生じたアクションと、該アクションに対する入力とのリストを構築するステップと、
前記認可プロキシが、前記クライアントから、前記第1メッセージを前記クライアントにおいて実際に実行して生じる前記サーバに対するアクションと、該アクションに対する前記クライアントのユーザによる入力とを第2メッセージとして受信するステップと、
前記認可プロキシが、前記リスト内の前記アクションと前記入力を、前記クライアントから受信した前記サーバに対するアクションと前記入力と比較するステップと、
前記リストが、前記クライアントから受信した前記アクションと前記入力とにそれぞれ対応するアクションと入力とを含むことを条件に、前記認可プロキシが、前記サーバに対するアクションを認可するステップと、
を含む方法。A method of authorizing execution of a requested action sent between a client and a server of a data processing system by an authorization proxy coupled to the client and the server, comprising:
The authorization proxy receiving a first message comprising a set of actions from the server;
Simulating a processing environment in which the authorization proxy executes the set of actions, executing the set of actions in the processing environment, and constructing a list of actions resulting from the execution and inputs to the actions; ,
The authorization proxy receiving, as a second message , an action on the server resulting from the actual execution of the first message at the client and an input by the user of the client for the action from the client;
The authorization proxy comparing the action and the input in the list with the action for the server received from the client and the input;
A step wherein the lists, on condition that includes an input and the corresponding action and the action received and the input from the client, the authorization proxy, to authorize action against the server,
Including methods.
前記認可プロキシが、比較のステップ中に、前記クライアントから受信した、前記文字列に対応する前記入力が、記録した前記条件を満たすか否かを判定するステップとを含む、請求項1に記載の方法。During the execution of the set of actions, the authorization proxy detects an input control requesting a data value entry , assigns a string to represent the data value, and records the condition that the string must satisfy And steps to
The authorization proxy comprising: determining whether the input corresponding to the string received from the client during the comparing step satisfies the recorded condition. Method.
複数の事前に定義されたデータ値の1つを選択することを要求する入力制御を検出するステップと、
複数の事前に定義されたデータ値の各々に対して実行中のアクションの実行を行い、前記データ値の各々と、該各々に対する前記アクションの実行より生じる各アクションを前記リストにリストするステップとを含む、請求項1に記載の方法。While the authorization proxy is executing the set of actions,
Detecting an input control requesting to select one of a plurality of predefined data values;
Performing an ongoing action on each of a plurality of predefined data values, and listing each of the data values and each action resulting from the execution of the action on each of the data values in the list The method of claim 1 comprising.
前記認可プロキシが、前記アクションのセットの実行中に、ユーザが選択可能な入力に応答して、前記アクションのセットの実行前に受信した前記入力を提供するステップとを含む、請求項1に記載の方法。The authorization proxy receives from the client input to the client made in actual execution of the first message at the client before performing the set of actions;
The authorization proxy providing the input received prior to execution of the set of actions in response to a user selectable input during execution of the set of actions. the method of.
前記クライアントとサーバとの間の送信を評価し、かつ、各送信内のドキュメントに含まれている情報内容とアクションのセットを識別するための評価部と、
前記アクションのセットを実行する処理環境をシミュレーションするシミュレータであって、前記処理環境内で前記アクションのセットを実行し、実行により生じたアクションと、該アクションに対する入力とのリストを構築する、前記シミュレータと、
前記クライアントから、前記ドキュメントを前記クライアントにおいて実際に実行して生じる前記サーバに対するアクションと、該アクションに対する前記クライアントのユーザによる入力とを含む送信を受信し、受信した前記アクションと前記入力とにそれぞれ対応するアクションと入力とが、前記リスト内に含まれることを条件に、前記送信を前記サーバへ渡す認可部とを備える、認可プロキシ・システム。An authorization proxy system coupled between a client and a server of a data processing system,
Evaluate the transmission between the client and the server, and an evaluation unit for identifying a set of information content and actions contained in the documents in the transmission,
A simulator for simulating a processing environment for executing the set of actions, wherein the simulator executes the set of actions in the processing environment and constructs a list of actions generated by the execution and inputs to the actions When,
Receives a transmission from the client that includes an action on the server that results from the actual execution of the document on the client and an input by a user of the client for the action, each corresponding to the received action and the input action that the input is, the condition that is included in said list, and a authorization unit passing said transmission to the front SL server, the authorization proxy system.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16147399P | 1999-10-25 | 1999-10-25 | |
US60/161,473 | 1999-10-25 | ||
PCT/IL2000/000677 WO2001031415A2 (en) | 1999-10-25 | 2000-10-25 | Method and system for verifying a client request |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2003513349A JP2003513349A (en) | 2003-04-08 |
JP2003513349A5 JP2003513349A5 (en) | 2007-12-20 |
JP4629291B2 true JP4629291B2 (en) | 2011-02-09 |
Family
ID=22581314
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001533487A Expired - Lifetime JP4629291B2 (en) | 1999-10-25 | 2000-10-25 | Method and system for verifying client requests |
Country Status (7)
Country | Link |
---|---|
EP (1) | EP1232425B1 (en) |
JP (1) | JP4629291B2 (en) |
AT (1) | ATE398798T1 (en) |
AU (1) | AU7944100A (en) |
DE (1) | DE60039248D1 (en) |
IL (1) | IL149322A0 (en) |
WO (1) | WO2001031415A2 (en) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6311278B1 (en) | 1998-09-09 | 2001-10-30 | Sanctum Ltd. | Method and system for extracting application protocol characteristics |
AU2001237696A1 (en) | 2000-03-03 | 2001-09-12 | Sanctum Ltd. | System for determining web application vulnerabilities |
US7549054B2 (en) * | 2004-08-17 | 2009-06-16 | International Business Machines Corporation | System, method, service method, and program product for managing entitlement with identity and privacy applications for electronic commerce |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5347578A (en) * | 1992-03-17 | 1994-09-13 | International Computers Limited | Computer system security |
US5559800A (en) * | 1994-01-19 | 1996-09-24 | Research In Motion Limited | Remote control of gateway functions in a wireless data communication network |
US5611048A (en) * | 1992-10-30 | 1997-03-11 | International Business Machines Corporation | Remote password administration for a computer network among a plurality of nodes sending a password update message to all nodes and updating on authorized nodes |
US5623601A (en) * | 1994-11-18 | 1997-04-22 | Milkway Networks Corporation | Apparatus and method for providing a secure gateway for communication and data exchanges between networks |
US5692124A (en) * | 1996-08-30 | 1997-11-25 | Itt Industries, Inc. | Support of limited write downs through trustworthy predictions in multilevel security of computer network communications |
US5752022A (en) * | 1995-08-07 | 1998-05-12 | International Business Machines Corp. | Method for creating a hypertext language for a distributed computer network |
US5870544A (en) * | 1997-10-20 | 1999-02-09 | International Business Machines Corporation | Method and apparatus for creating a secure connection between a java applet and a web server |
US5908469A (en) * | 1997-02-14 | 1999-06-01 | International Business Machines Corporation | Generic user authentication for network computers |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5606668A (en) * | 1993-12-15 | 1997-02-25 | Checkpoint Software Technologies Ltd. | System for securing inbound and outbound data packet flow in a computer network |
US5802320A (en) * | 1995-05-18 | 1998-09-01 | Sun Microsystems, Inc. | System for packet filtering of data packets at a computer network interface |
US6311278B1 (en) * | 1998-09-09 | 2001-10-30 | Sanctum Ltd. | Method and system for extracting application protocol characteristics |
-
2000
- 2000-10-25 JP JP2001533487A patent/JP4629291B2/en not_active Expired - Lifetime
- 2000-10-25 IL IL14932200A patent/IL149322A0/en active IP Right Grant
- 2000-10-25 AU AU79441/00A patent/AU7944100A/en not_active Abandoned
- 2000-10-25 DE DE60039248T patent/DE60039248D1/en not_active Expired - Lifetime
- 2000-10-25 AT AT00969795T patent/ATE398798T1/en not_active IP Right Cessation
- 2000-10-25 WO PCT/IL2000/000677 patent/WO2001031415A2/en active IP Right Grant
- 2000-10-25 EP EP00969795A patent/EP1232425B1/en not_active Expired - Lifetime
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5347578A (en) * | 1992-03-17 | 1994-09-13 | International Computers Limited | Computer system security |
US5611048A (en) * | 1992-10-30 | 1997-03-11 | International Business Machines Corporation | Remote password administration for a computer network among a plurality of nodes sending a password update message to all nodes and updating on authorized nodes |
US5559800A (en) * | 1994-01-19 | 1996-09-24 | Research In Motion Limited | Remote control of gateway functions in a wireless data communication network |
US5623601A (en) * | 1994-11-18 | 1997-04-22 | Milkway Networks Corporation | Apparatus and method for providing a secure gateway for communication and data exchanges between networks |
US5752022A (en) * | 1995-08-07 | 1998-05-12 | International Business Machines Corp. | Method for creating a hypertext language for a distributed computer network |
US5692124A (en) * | 1996-08-30 | 1997-11-25 | Itt Industries, Inc. | Support of limited write downs through trustworthy predictions in multilevel security of computer network communications |
US5908469A (en) * | 1997-02-14 | 1999-06-01 | International Business Machines Corporation | Generic user authentication for network computers |
US5870544A (en) * | 1997-10-20 | 1999-02-09 | International Business Machines Corporation | Method and apparatus for creating a secure connection between a java applet and a web server |
Also Published As
Publication number | Publication date |
---|---|
ATE398798T1 (en) | 2008-07-15 |
EP1232425A4 (en) | 2004-05-12 |
EP1232425A2 (en) | 2002-08-21 |
WO2001031415A2 (en) | 2001-05-03 |
EP1232425B1 (en) | 2008-06-18 |
AU7944100A (en) | 2001-05-08 |
IL149322A0 (en) | 2002-11-10 |
JP2003513349A (en) | 2003-04-08 |
WO2001031415A3 (en) | 2001-11-01 |
DE60039248D1 (en) | 2008-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7293281B1 (en) | Method and system for verifying a client request | |
JP4625246B2 (en) | Automatic detection of cross-site scripting vulnerabilities | |
Stuttard et al. | The web application hacker's handbook: Finding and exploiting security flaws | |
JP4405248B2 (en) | Communication relay device, communication relay method, and program | |
US7941856B2 (en) | Systems and methods for testing and evaluating an intrusion detection system | |
Shahriar et al. | Client-side detection of cross-site request forgery attacks | |
Hope et al. | Web security testing cookbook: systematic techniques to find problems fast | |
KR101672791B1 (en) | Method and system for detection of vulnerability on html5 mobile web application | |
Barua et al. | Server side detection of content sniffing attacks | |
Kapodistria et al. | An advanced web attack detection and prevention tool | |
CN116324766A (en) | Optimizing crawling requests by browsing profiles | |
US20080021904A1 (en) | Authenticating a site while protecting against security holes by handling common web server configurations | |
McDonald | Web security for developers: real threats, practical defense | |
KR100984639B1 (en) | Automatic security assessment system and its implementation method | |
Pauli | The basics of web hacking: tools and techniques to attack the web | |
Snyder et al. | Pro PHP security | |
Ravindran et al. | A Review on Web Application Vulnerability Assessment and Penetration Testing. | |
Parimala et al. | Efficient web vulnerability detection tool for sleeping giant-cross site request forgery | |
JP4629291B2 (en) | Method and system for verifying client requests | |
Sharif | Web Attacks Analysis and Mitigation Techniques | |
CN107294994A (en) | A kind of CSRF means of defences and system based on cloud platform | |
Jayaraman et al. | Enforcing request integrity in web applications | |
Yin et al. | Scanner++: Enhanced Vulnerability Detection of Web Applications with Attack Intent Synchronization | |
Izagirre | Deception strategies for web application security: application-layer approaches and a testing platform | |
Sharadqeh et al. | Review and measuring the efficiency of SQL injection method in preventing e-mail hacking |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20050422 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20071025 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071029 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20080409 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20080409 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100202 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100430 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100615 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20100824 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20100831 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20101014 |
|
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: 20101109 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20101111 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131119 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4629291 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
EXPY | Cancellation because of completion of term |