JP2009521737A - Javascriptプログラムの不安全動作安を検出するため、及び防止するための方法及び装置 - Google Patents

Javascriptプログラムの不安全動作安を検出するため、及び防止するための方法及び装置 Download PDF

Info

Publication number
JP2009521737A
JP2009521737A JP2008540189A JP2008540189A JP2009521737A JP 2009521737 A JP2009521737 A JP 2009521737A JP 2008540189 A JP2008540189 A JP 2008540189A JP 2008540189 A JP2008540189 A JP 2008540189A JP 2009521737 A JP2009521737 A JP 2009521737A
Authority
JP
Japan
Prior art keywords
code
javascript
arg
script program
window
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.)
Pending
Application number
JP2008540189A
Other languages
English (en)
Other versions
JP2009521737A5 (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.)
NTT Docomo Inc
Original Assignee
NTT Docomo 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 NTT Docomo Inc filed Critical NTT Docomo Inc
Publication of JP2009521737A publication Critical patent/JP2009521737A/ja
Publication of JP2009521737A5 publication Critical patent/JP2009521737A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • 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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs

Abstract

スクリプトプログラムの不安全動作を検出するため、及び防止するための方法及び装置が、本明細書で開示される。一実施形態において、その方法は、第1の安全ポリシーに基づくスクリプトプログラムの静的解析を実行して、そのスクリプトプログラムの不安全動作を検出する工程、及びそのスクリプトプログラムが実行された際に、その安全ポリシーに対する違反が生じた場合、そのスクリプトプログラムの実行を防止する工程を含む。
【選択図】 なし

Description

優先権
[0001]本特許出願は、2005年11月10日に出願した「A Method and Apparatus for Detecting and Preventing Unsafe Behavior of JavaScript Programs」という名称の対応する特許仮出願第60/735772号、及び2005年11月10日に出願した「A Method and Apparatus for Policy−Guided Transformation of JavaScript Programs to Guarantee Safety」という名称の特許仮出願第60/735513号の優先権を主張し、これらの出願を参照により組み込む。
発明の分野
[0002]本発明は、コンピュータプログラミングの分野に関し、より詳細には、本発明は、プログラムの不安全動作を検出すること、及び防止することに関する。
発明の背景
[0003]Webブラウザセキュリティには、深刻な問題が存在する。多数の攻撃が、クライアント側ブラウザに対して行われて、機微なユーザ情報(パスワード、オンラインID)の保全性を危うくし、クライアントマシンのパフォーマンスを極度に低下させている。これらの攻撃は、しばしば、JavaScriptのような普及しているクライアント側のスクリプト言語に見られる計算機能を濫用し、ブラウザ及びスクリプトインタープリタ(解釈プログラム)の実装エラーを濫用する。セキュリティ状況は、さらに多様な移動体ブラウザ(及び潜在的なセキュリティ上の欠陥)、及び悪意のあるスクリプトがデバイスリソースを濫用する機会を有する携帯電話デバイス上で、潜在的にさらに悪化している。
[0004]一般的で、有害な攻撃のいくつかの例には、以下に詳しく説明されるとおり、クロスサイトスクリプティング、フィッシング、サービス拒否、及びAPI濫用が含まれる。
[0005]XSS(クロスサイトスクリプティング)は、Webベースのアプリケーションにおいてよく見られる最も重大なセキュリティ脆弱性の1つである。そのような脆弱性は、攻撃者が、信頼されるWebサーバによって生成されたWebページに或るスクリプト(例えば、JavaScript)を挿入することを可能にする。ブラウザは、その挿入されたスクリプトを、そのスクリプトがサーバによって提供されたかのように実行する。ブラウザのセキュリティ規制は、Webページの出所に基づくので、そのスクリプトは、セキュリティ規制を回避して、そのWebアプリケーションのドメインと同一の許可のもとでブラウザによって実行される。この状況が、図2に示される。一般に、XSS脆弱性は、利用するのが非常に容易である。XSS脆弱性の利用は、無知なユーザが、電子メール又はインスタントメッセージからのリンクをクリックすること、又は単に、Webフォーラムを読むことから始まる可能性がある。XSS脆弱性を利用して、悪意のある人々が、迷惑な動作(例えば、ブラウザホームページの変更)から、偽情報の提示(例えば、ホスティングHTMLを動的に変更することによる)、アカウント乗っ取り(例えば、クッキーからユーザのログイン及びパスワードを盗むことによる)までに及ぶ様々な攻撃を仕掛けることが可能である。ブラウザの実装上の欠陥(セキュリティホール)の利用と相俟って、攻撃者が、ユーザファイルを読み取ることや、悪意のあるプログラムを実行することなどの、さらに大きな被害をもたらすことが可能である。
[0006]JavaScriptは、DOM(ドキュメントオブジェクトモデル)を介して、又はネットワークアクセスを提供する様々なAPIを介して、いくつかのハンドセットリソース(handset resources)へのアクセスを提供するため、悪意のあるJavaScriptコードが、これらのリソースを濫用する可能性が存在する。対象となるリソースには、以下が含まれる。すなわち、JavaScriptが、DOMの一部分であるクッキーへの書込みアクセスを許されていることから、ディスクスペース、JavaScriptが、そのJavaScriptが出所であるサイトとの接続を開くことができることから、ネットワーク使用(特に、そのような使用は、ユーザの注意を引いているウインドウから生成されるウインドウの内側に隠され、そのため、意図していないネットワーク使用をもたらす可能性がある)、ウインドウサイズ、ウインドウ位置付けなどのユーザインターフェース要素(JavaScriptは、JavaScriptが開くウインドウに関するこれらの属性を、DOMを介して変更する能力を有する)、及び「戻るボタン」などのブラウザ要素の見込まれる機能(悪意のあるJavaScriptは、制御スレッドが、戻るボタンを介して、又は異なるリンクをクリックすることにより、或る特定のページを離れようと試みた際に生じるイベントを再プログラミングすることができる)である。
[0007]フィッシング(別名、スプーフィング)は、社会工学に基づく或る形態の攻撃である。フィッシングは、信頼される相手(例えば、銀行Webサイト)を装って被害者を騙して、機微な情報(例えば、パスワード及びクレジットカード番号)を明かさせる。ますます多くのフィッシング攻撃が行われており、標的は、通常、銀行及びオンライン支払いサービスの顧客である。これらの攻撃によってもたらされる被害は、相当な金銭的損失や身元情報の盗難という深刻なものであることが可能である。
[0008]IEなどのブラウザにおいて、JavaScriptは、clipboardDataという名称のオブジェクトを介して、ユーザのクリップボードへのアクセスを有する。このオブジェクトは、3つのクリップボード活動、すなわち、クリアすること、読み取ること、及び書き込むことのためのAPIを提供する。例えば、以下の単純化なスクリプトが、クリップボードからテキストを読み取り、そのテキストをブラウザにおいて表示する。
document.write(window.clipboardData.getData(’Text’));
[0009]クリップボードが、潜在的に、現在のWebページと、システムの他の部分との間で共有されるリソースの役割をすることが可能であることを見て取ることは、難しくない。これにより、同一の出所のポリシーを回避するためのチャネルがもたらされることが可能である。オブジェクト「ClipboardData」は、異なるドメインを出所とするページの間でデータを転送することを意図していない。残念ながら、上記の一行の単純なスクリプトが、クリップボードデータを取得することに、そのデータが現在のドメインからのページによってあらかじめ設定されていない場合でも成功する。
[0010]JavaScript APIの一部の悪意のある使用は、迷惑な影響をもたらす、又は他の攻撃を仕掛けることを容易にする可能性がある。1つのよくあるそのようなエクスプロイト(セキュリティ上の弱点)が、ポップアップ(及びポップアンダ)の使用である。今日、多くのポップアップブロッカが利用可能である。
[0011]スクリプティング攻撃に対する一部の既存の解決策は、場当たり的であり、かなり限られている。第1に、実装上の抜け穴が、パッチを適用することによってふさがれることが可能であるが、過去15年間のパーソナルコンピューティング経験は、そのような事前対応の動作を頼りにすることができないことを示している。第2に、ポップアップなどの迷惑行為から保護し、フィッシング攻撃を検出するヒューリスティック(発見的教授法)を提供するブラウザプラグインツールが存在する。しかし、これらのツールによって暗黙に使用される安全ポリシーは、ユーザ又は操作者によって拡張可能ではなく、攻撃カテゴリ自体全部ではなく、或る特定の攻撃カテゴリの非常に特殊な事例だけを捕捉する。例えば、ポップアップブロッカは、JavaScriptによって開かれるウインドウの数、又はそれらのウインドウの位置、或いはそのようなウインドウが、意図されないネットワーク通信を実行するかどうかを制限しない。
発明の概要
[0012]スクリプトプログラムの不安全動作を検出するため、及び防止するための方法及び装置が、本明細書で開示される。一実施形態では、方法は、第1の安全ポリシーに基づくスクリプトプログラムの静的解析を実行して、そのスクリプトプログラムの不安全動作を検出する工程、及びそのスクリプトプログラムが実行された際に、その安全ポリシーの違反が生じた場合、そのスクリプトプログラムの実行を防止する工程を含む。
[0013]本発明は、後段で与えられる詳細な説明、及び本発明の様々な実施形態の添付の図面から、より完全に理解されるが、説明及び図面は、本発明をそれらの特定の実施形態に限定するものと解釈されてはならず、単に説明及び理解を目的とする。
発明の詳細な説明
[0026]スクリプト(例えば、JavaScript)プログラムによる所与の安全ポリシーに対する違反を検出し、防止する様々な技術が提示される。本明細書で説明される技術は、クロスサイトスクリプティング攻撃、サービス拒否攻撃、及びブラウザ及び/又はJavaScriptインタープリタの実装上の欠陥を悪用する他の攻撃から保護するのに使用されることが可能である。一実施形態では、これらの技術は、静的解析と動的監視の両方を使用して、入ってくるスクリプトをフィルタ処理する。フィルタを通過したスクリプトは、安全ポリシーに関して証明できる形で安全である、又は実行時において安全違反の直前に実行を停止するように計装される。これらの技術の一特徴は、スクリプトセマンティクス(script semantics)が変更されず、その結果、スクリプトのいずれの有用な機能も、誤って変更されないことが確実にされる。
[0027]また、所与の安全ポリシーに基づいて、信頼できないスクリプトの動作を制限する様々な技術も提示される。本明細書で説明される技術は、フィッシング、共有されるリソースの濫用、悪意のあるAPI使用、予期されない動作、サービス拒否攻撃から保護するのに使用されることが可能である。一実施形態では、これらの技術は、ターゲットスクリプトに対してコード書き換えを使用する。潜在的に悪意のあるスクリプトを停止する代わりに、コードが、実行するのが安全であるように変更される。したがって、一実施形態では、もたらされるスクリプトは、実行時エラーをまったく有さないことが保証される。これらの技術の1つの際立った特徴は、スクリプトセマンティクスが、解析中に変更されて、悪意のないスクリプトの早計な終了が防止される(偽陽性が少なくなる)ことである。このことは、静的解析及び動的監視によってポリシーについての違反を許さない前段で説明される技術に対して補完的である。
[0028]一実施形態では、安全特性は、様々な攻撃を範囲に含むことができる拡張可能なポリシー指定言語で表現され、例えば、JavaScriptのようなスクリプティング言語における前後関係において、これらの技術を展開するのに使用されることが可能なアーキテクチャが提示される。一実施形態では、ポリシー言語は、多くの異なる種類の攻撃からの保護のためのフィルタ及びインスツルメンタ(instrumentors)のプログラムを書くために使用される。後段で、以上が、どのように、XSS、フィッシング、DOS、並びに検証されていない入力及び引数から保護するのに役立つかについての例が与えられる。また、以上は、セキュリティパッチ又はウイルス定義が開発されるよりも前に、迅速なパッチ前フィルタを展開するのに役立つことも可能である。
[0029]以下の説明において、本発明のより完全な説明を提供する多数の詳細が示される。しかし、本発明は、これらの特定の詳細なしに実施されることも可能であることが、当業者には明白であろう。その他、よく知られている構造及びデバイスは、本発明を不明瞭にするのを避けるため、詳細にではなく、ブロック図の形態で示される。
[0030]以下の詳細な説明のいくつかの部分は、コンピュータメモリ内のデータビットに対する操作のアルゴリズム及び記号表現に関して提示される。これらのアルゴリズム記述及びアルゴリズム表現は、当業者によって、当業者の作業の内容を他の当業者に最も効率的に伝えるのに使用される手段である。アルゴリズムは、本明細書において、さらに一般的にも、所望される結果をもたらす自己矛盾のない一連のステップであると考えられる。これらのステップは、物理量の物理的操作を要求するステップである。通常、ただし、必然的にではなく、これらの量は、格納される、転送される、組み合わされる、比較される、又はそれ以外で操作されることが可能な電気信号又は磁気信号の形態をとる。ときとして、主に一般的な用法の理由で、これらの信号をビット、値、要素、シンボル、文字、項、数などと呼ぶことが好都合であることが分かっている。
[0031]しかし、これら、及び類似する用語のすべては、適切な物理量に関連付けられるべきであり、単に、これらの量に付けられる便利なラベルに過ぎないことに留意されたい。特に明記しない限り、以下の説明から明らかなとおり、この説明の全体で、「処理すること」又は「計算すること」又は「算出すること」又は「決定すること」又は「表示すること」などの用語を利用する説明は、コンピュータシステムのレジスタ内及びメモリ内の物理(電子)量として表されるデータを操作して、コンピュータシステムメモリ内又はコンピュータシステムレジスタ内、或いは他のそのような情報記憶デバイス内、情報伝送デバイス内、又は情報表示デバイス内の物理量として同様に表される他のデータに変換する、コンピュータシステム、又は類似した電子コンピューティングデバイスのアクション及びプロセスを指すものと理解される。
[0032]また、本発明は、本明細書における動作を実行するための装置にも関する。この装置は、要求される目的のために特別に構築されてもよく、或いはコンピュータの中に格納されたコンピュータプログラムによって選択的に活性化される、又は再構成される汎用コンピュータを含んでもよい。そのようなコンピュータプログラムは、フロッピーディスク、光ディスク、CD−ROM、及び光磁気ディスクを含む任意のタイプのディスク、コンピュータシステムバスにそれぞれが結合される、ROM(読み取り専用メモリ)、RAM(ランダムアクセスメモリ)、EPROM、EEPROM、磁気カード又は光カード、或いは電子命令を格納するのに適した任意のタイプの媒体などの、ただし、以上には限定されないコンピュータ可読媒体の中に格納されることが可能である。
[0033]本明細書で提示されるアルゴリズム及び表示は、いずれの特定のコンピュータ又は他の装置とも本来的に関係していない。様々な汎用システムが、本発明の教示によるプログラムで使用されることが可能であり、或いは要求された方法ステップを実行する、より特化された装置を構築することが好都合であると判明する可能性もある。様々なこれらのシステムに関する要求される構造は、以下の説明から現れる。さらに、本発明は、いずれか特定のプログラミング言語に関連して説明されることはない。様々なプログラミング言語を使用して、本明細書で説明される本発明の教示が実施されることが可能であることが理解されよう。
[0034]マシン可読媒体には、マシン(例えば、コンピュータ)によって読み取り可能な形態で情報を格納するため、又は伝送するための任意の機構が含まれる。例えば、マシン可読媒体には、「ROM」(読み取り専用メモリ)、「RAM」(ランダムアクセスメモリ)、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイス、電気形態、光形態、音響形態、又は他の形態の伝搬される信号(例えば、搬送波、赤外線信号、デジタル信号など)などが含まれる。
静的解析に基づく技術の概要
[0035]クロスサイトスクリプティング、サービス拒否攻撃、APIの濫用を含め、様々な攻撃を防止するのに使用されることが可能であり、一般的な、拡張可能なポリシーベースのフレームワークに合う静的解析技術が、本明細書で説明される。図1は、そのような技術を展開するための一般的なフレームワークを示すブロック図である。図1を参照すると、プログラムコード101(例えば、JavaScriptコード)が、静的アナライザ(静的解析手段)102に入力される。安全ポリシー103に基づき、静的アナライザ102は、コード101を実行することなしにコード101の安全性を静的に判定しようとして、プログラムコード101を検査する。安全でないコードの場合、静的アナライザ102は、このコードを完全に拒否する。それ以外の場合、このプログラムコードは、実行時違反エラーがまったく生じないことを確実にする0又は1つ以上の動的検査でプログラムコード101を計装する動的アノテータ(annotator)104に入力される。一実施形態では、動的アノテータ104は、実行時の結果が静的に判定されることが可能でない位置だけに、これらの検査を配置する。これらの検査は、実行時に違反が間もなく生じる場合、プログラムの実行を停止するのに使用される。一実施形態では、ポリシー言語、及び関連する技術は、多くの異なる種類の攻撃から保護するためのコードフィルタを書くために提供される。
クロスサイトスクリプティング攻撃からの保護
[0036]一実施形態では、クライアント側ソリューションが提供される。このアプローチは、いずれのスクリプトに悪意があるかを識別し、それらの悪意のあるスクリプトをフィルタ処理することではなく、ユーザセキュリティに影響を及ぼすクリティカルな(決定的な)動作に的を絞ることによる、クリティカルなユーザリソースの保護に基づく。そのようにする際に、このアプローチは、ユーザの自由裁量のために警報を発する。
[0037]本明細書では、すべてのクリティカルなリソースは、一様に扱われ、secret(解決の鍵)と呼ばれる。このsecretは、例えば、以下のエンティティ(構成要素)のいずれかであることが可能である。すなわち、クッキーファイル、パスワードフィールド(又は「password」という型を有するテキストボックス)、ブラウザ設定、初期化されていないクリップボードからのデータ、及び履歴エントリである。本明細書では、URLに対するすべてのネットワーク要求は、load(URL)として一様に扱われる。loadは、例えば、以下のエンティティのいずれかであることが可能である。すなわち、現在のページを読み込むため(例えば、location.href=URL)、フォームのため(例えば、action=URL)、イメージのため(例えば、img src=URL)、フレームのため(例えば、iframe src=URL)、及びレイヤオブジェクトのため、つまり、load(URL,width)である。
[0038]ユーザリソースの前述の一様な扱いに基づき、図3は、XSSと関係のあるJavaScript及びDOM APIの本質的な要素の抽象化を示す。ドメイン名D、URL U、及び値Vはすべて、文字列(ストリング)である。ブール(ブーリアン)bは、0又は1である。環境Ψが、変数xを型Tに位置付け(マップ)する。型Tは、ドメイン名のリストである。式は、secret、部分式に対する演算op、値V、又は変数Xである。コマンドは、割り当て、条件、ネットワーク要求、又は終了である。
フローベースの計装
[0039]一実施形態では、クリティカルなユーザリソースが、静的アナライザによって、それらのリソースの所有者(同一の出所のポリシーによって使用されるドメイン名)でタグが付けられ、それらのリソースの情報フローが、静的アナライザによって解析され、実行時検査(警報)が、動的アノテータ(注釈付け手段)によって、クリティカルな情報が、現在のHTMLの出所とは異なるドメインに間もなく送信されるプログラムポイントに挿入される。図4は、静的解析に基づく、開示される汎用の技術の特化された事例であるフローベースの計装のためのプロセスの一実施形態のブロック図である。図4を参照すると、JavaScriptコード401が、入力されて、フローアナライザ402によって受け取られ、アナライザ402は、情報フローポリシー403に従って、そのコードの様々なリソース(例えば、URL、クッキーなど)にタグを付ける。結果のタグ付けされたコードは、動的アノテータ404に入力されて、フローアナライザ402によって特定されたプログラムポイントに検査が挿入される。一実施形態では、もたらされるコードは、違反が間もなく生じる場合、これらの挿入された検査が、プログラム実行を停止するため、実行時に常に安全に実行される。
[0040]図5は、どのようにタグに注釈が付けられ、どのように検査が挿入されるかを明確に表現するJavaScript計装の例である。このJavaScript計装は、静的環境Ψの助けを借りて実行される。この環境は、式のsecretを決定するのに役立つ。式は、以下のいずれか1つが成立する場合、現在のドメインのsecret情報を含む。すなわち、その式が、secretである。その式が、引数として部分式を含む。その式が、現在のドメイン名でタグが付けられている変数である。
[0041]計装システムは、プログラムコードを検査し、必要な場合に、そのプログラムコードに対する変更を実行する。割り当てに関して、システムは、割り当てのターゲットに対応するsecretでタグが付けられるように、環境を更新する。URLを読み込むことに関して、システムは、そのURLが、そのURLに書かれたとおりのターゲットドメインに属さないsecret情報を含む場合、ユーザの自由裁量のために警報を挿入する。システムは、計装中、他のコマンドは変更せず、これらの規則は、自明であり、省かれる。
緩い計装
[0042]代替の実施形態では、いくつかの緩いアプローチが、より容易に展開されることが可能であるが(より少ない規則)、正確さが劣る(潜在的に、より多くのユーザ対話)。以下の代替の実施形態の組合せが、使用されることが可能である。
[0043]1つの代替の実施形態では、secretを読み取った後のload(URL)を防止するのに、以下の計装が実行される。プログラムの開始時に、グローバルフラグ変数が、ユーザリソースのために使用される。secretエンティティが読み取られると、このフラグが、設定される。これらのリソースを漏らすことが可能なAPI呼び出しの前に、コードが挿入されて、このフラグが設定されているかどうかを確認する。APIは、このフラグが設定されていない場合、通常どおりに進む。設定されている場合、挿入されたコードは、ユーザに警報を発し、先に進むかどうかを尋ねる。この計装を誘導する規則は、以下のとおり与えられる。
Figure 2009521737
[0044]別の代替の実施形態において、load(URL)に埋め込まれたsecretを防止し、その一方で、loadの引数における変数の使用を許さないようにするのに、以下の計装が、実行される。具体的には、URLが、loadの引数として解析されて、そのURLが、secret又は変数を含むかどうかを判定する検査が行われる。
Figure 2009521737
[0045]一実施形態では、現在のHTMLの出所とは異なるドメインからのスクリプトへのポインタを許さないようにするのに、以下の計装が、実行される。URLを読み込む際、そのURLのドメイン、及びそのURLのターゲットが、検査される。そのドメインが、現在のドメインではなく、ターゲットが、JavaScriptファイルである場合、警報が、挿入されて、ユーザは、先に進むかどうかを尋ねられる。それ以外の場合、読み込みは、通常どおり進む。
Figure 2009521737
[0046]一実施形態では、計装は、他の補足的な技術と一緒に適用されて、偽陽性の数を減らすことが可能である。例えば、ホワイトリスト(ブラックリスト)が、知られている安全な(脆弱な)サイトを許す(ブロックする)のに役立つ。
サービス拒否攻撃から保護すること
[0047]一実施形態では、サービス拒否攻撃を検出し、防止するため、リソース濫用と関係するAPI呼び出しに制限が課せられる。そのような制限を表現するように定義された指定言語が、以下に与えられる。
[0048] Policy := (FunctionSpec,InstrumentationSpec)
FunctionSpec := (FunctionName, Arglist)
Arglist := Arg *
Arg := Var | Const
InstrumentationSpec := Instrumentation *
Instrumentation := Pred(Arg) | StaticPred(Arg)
Pred(Arg) := Compare(Arg, Arg) |
Pred(Arg) AND Pred(Arg) |
Pred(Arg) OR Pred(Arg) |
NOT Pred(Arg) |
Fun(Arg)
StaticPred(Arg) := Compare(Arg, Const) |
StaticPred(Arg) AND StaticPred(Arg) |
StaticPred(Arg) OR StaticPred(Arg) |
NOT StaticPred(Arg)
Fun(Arg) := Arg IN Arg*
Compare(x, y) := x = y | x < y | x > y |
Compare (x, y) AND Compare (x, y)
[0049]安全ポリシーは、前述の言語で表現される。所与のJavaScriptコードが、ポリシーにおける関数呼び出しと合致する場合はいつでも、対応する動的検査が、その呼び出しの直前に挿入される。図6は、計装を実行するシステムのブロック図である。図6を参照すると、プログラムコード601(例えば、JavaScriptコード)が、安全フィルタを含むポリシー603の中で指定された関数呼び出しと合致する動的計装ユニット602に入力されて、ユニット602よって受け取られる。合致が見つかった場合、動的計装ユニット602は、その関数呼び出しより前に動的検査を追加する。終了すると、動的計装ユニット602は、安全に実行される形態で、そのコードを出力する。
[0050]一実施形態では、挿入された動的計装のさらなる静的最適化が、実行される。このことは、前述の言語においてStaticPred計装を介して表現される。所与のJavaScriptコードとの安全ポリシーの合致が、計装の一環としていくらかのStaticPredを含む場合、それらの述語(predicates)が成立するか否かについての静的判定が行われる。これにより、動的計装のいくつかが排除されることが可能であり、その結果、最終的なコードの効率が高められるとともに、場合により、StaticPredの1つに障害が生じる場合に、コード全体の実行が先回りして阻止される。図7は、この計装を実行するシステムのブロック図である。図7を参照すると、プログラムコード701(例えば、JavaScriptコード)が、安全フィルタを含むポリシー703の中で指定された関数呼び出しと合致する動的計装ユニット702に入力されて、ユニット702よって受け取られる。合致が見つかった場合、動的計装ユニット702は、その関数呼び出しより前に動的検査を追加する。終了すると、動的計装ユニット702は、計装されたコード704を出力する。その後、計装されたコード704は、StaticPred述語が成立するか否かを判定する静的最適化ユニット705に入力される。静的に成立する述語に関して、動的計装ユニット702によって追加された対応する動的検査が、計装されたコード704から除去される。その後、結果のコードが出力される。
コード書き換えに基づく技術の概要
[0051]フィッシング、クリップボードなどの共有リソースの濫用、悪意のあるAPI使用、予期されない動作(behavior)、及びサービス拒否攻撃を含め、様々な攻撃に対抗するのに使用されることが可能なコード書き換え技術が、以下に示される。図8は、これらの技術の一実施形態の一般的なフレームワークのブロック図である。図8を参照すると、プログラムコード801(例えば、JavaScriptコード)が、コード書き換えユニット802によって受け取られる。安全な変換を指定する安全ポリシー803に基づき、コード書き換えユニット802は、プログラムコード801の中の潜在的に悪意のある(JavaScript)コードを、同一の機能を実行するコードの安全なバージョンで置き換える。一実施形態では、JavaScriptコードは、安全ポリシーによって指定される変換が、安全を保証するようにコードのセマンティクスを注意深く変更するので、実行時エラーなしに、常に安全に実行されることが可能である。
[0052]一実施形態では、これらの技術には、詳細が以下に与えられる、多くの異なる種類の攻撃から保護するためのコードリライタ(code rewriters)を指定するためのポリシー言語、及び関連する技術が含まれる。
フィッシングから保護すること
[0053]フィッシングから保護するのに、一実施形態では、ユーザに、Webサイトの実際の情報が提示され、そのため、攻撃者が、何者かになりすますことが、より困難になる。
Webページの出所
[0054]Webページの出所に関して、ブラウザのロケーションバーは、現在のWebページが読み込まれたURLを表示する。そのURLのコンテンツは、JavaScriptの制御から外れている。しかし、JavaScriptは、新たなウインドウ(例えば、ポップアップ)を開く際、ロケーションバーを完全に隠す能力を有する。このことは、現在のWebページの出所を隠すためにフィッシング攻撃によって、しばしば、使用される。ブラウザの関係するナビゲーションコントロールは、ステータスバーである。JavaScriptは、このステータスバーのコンテンツを恣意的なテキストで更新することができる。また、JavaScriptは、ステータスバーを表示しないことを選択することもできる。
[0055]一実施形態では、計装ユニットは、ロケーションバー及びステータスバーが、ブラウザユーザによってカスタマイズ可能なポリシーに基づいて適切に表示されるように、Webページのコンテンツを計装する。これは、新たなウインドウを開くための、そのWebページのAPI使用を検査すること、及び有用なナビゲーションコントロールを隠すコードを書き換えることによって達せられることが可能である。
[0056]以下は、新たなウインドウの作成のための例示的な計装を示す。この実施形態では、ロケーションフラグ及びステータスフラグを偽、いいえ、又は0に設定すること、或いは単にロケーションフラグ及びステータスフラグを除外することを含め、ロケーションフラグ及びステータスフラグを偽に設定する方法が、検査される。
open(URL, windowName, location=false, status=false)
⇒ open(URL,windowName, location=true, status=true)
[0057]スクリプトが新たなウインドウを開く他の方法(API)が、存在する。例えば、クロムレスポップアップウインドウ(chromeless pop-up windows)が、特殊なAPI createPopupを使用して作成されることが可能である。一実施形態では、計装ユニットは、ユーザのポリシーに基づいてコードを計装する。このポリシーが、クロムレスポップアップを許すことである場合(このオプションを選択することは、ユーザが、クロムレスポップアップウインドウ内のフィッシング攻撃に、例えば、これらのウインドウ内のリンクを決してクリックしないことにより、引っ掛からないだけ十分に自らに知識と経験があると信じていることを示唆する)、このAPIに対する呼び出しは、そのままにされる。ポリシーが、クロムレスポップアップを許さないことである場合、計装ユニットは、このAPIに対する呼び出しを基本的なオープンAPIを使用してプログラムを書く。
ステータスバーを更新すること
[0058]これらの技術の一実施形態では、ステータスバーを更新することに関して、入ってくるコードは、そのページの出所が、ステータスバー内に表示されるように書き換えられる。単純には、このことは、以下のスクリプトをすべてのウインドウ内に挿入することによって行われることが可能である。すなわち、
window.status=location.href.
[0059]実際には、Webページは、ステータスバーを利用して、様々な情報を表示する。一実施形態では、コード計装ユニットは、所与のテキスト情報と、ページの出所との連結を表示するように、ステータスバーへのアクセスを計装する。
window.status="Welcome to DoCoMo USA Labs!"
⇒window.status=location.href + " | " + "Welcome to DoCoMo USALabs!"
[0060]一実施形態では、HTMLの動的フィーチャ(dynamicfeatures)を使用して、ページの出所と、所与のテキスト情報とが交互に表示される。そのようにすることの例は、タイマAPIなどの高度なJavaScriptフィーチャの使用を要求する。一実施形態では、出所(ドメイン名)の他に、現在のWebページについてのさらなる情報が、明らかにされる。いくつかの例には、その出所が、どこでホストされているか、及びその出所が、いつ作成されたかが含まれる。また、そのような情報を、ブラウザウインドウの別の領域内、又は「バルーン(balloon)」内で表示することも可能である。
[0061]要約として、プログラム(例えば、JavaScript)コードを計装することにより、そのWebページのホスティングドメインについての情報が、明確に表示される。このことは、ユーザが、詐欺的なURLを評価するのに役立つ(例えば、curious.comが、CitibankのWebサイトである可能性は低く、或いはBank of Americaが、日本においてホストされている可能性は低い)。
欺きのURL
[0062]攻撃者は、URLにおいて特殊な文字を使用して、ユーザを欺く。そのWebページのコンテンツを検査することにより、そのような疑わしいURLを識別することができる。
[0063]シンボル@が、ときとして、URLにおいて使用される。元々の意図は、このシンボルの前にユーザ名フィールド及び/又はパスワードフィールドを含めることを許すことである。URLの実際の目的は以下のドメイン名である。例えば、http://docomo.com@curious.comは、docomo.comではなく、curious.comを参照する。そのようなURLは、ユーザを騙して、そのページの偽の出所を信じ込ませる可能性がある。そのようなURLを識別すると、前述の技術を使用して、実際のドメイン名をユーザに提示することが可能である。
[0064]同様に、http://www.docomo.com.curious.com/も、欺いている。さらに、パーセンテージ記号(percentage sign)の後に続く数字の使用(エスケープシーケンス、escape sequences)は、通常、欺くこと以外、実際的な用途をまったく有さない。一実施形態では、これらすべての疑わしいURLは、ユーザに提示される前に適切に解析され、解析(パース)される。
[0065]前述した技術を補完して一般的な既存の方法が、使用されることが可能である。一方で、知られているフィッシングドメインのブラックリスト知識ベースを保持することができる。他方で、大きい金融組織のドメイン名のホワイトリストを保持し、パターンマッチングを使用して、欺きのURL(例えば、DOCOMO.COM対D0C0M0.COM)を検索することができる。こうすることは、攻撃者が、誰かがその攻撃に引っ掛かる可能性が高いように、多数のユーザを有する組織を、通常、標的にするため、有効である可能性が高い。
共有リソースの濫用から保護すること
[0066]IEなどのブラウザにおいて、JavaScriptは、clipboardDataという名称のオブジェクトを介して、ユーザのクリップボードへのアクセスを有する。このオブジェクトは、3つのクリップボード活動、すなわちクリアすること、読み取ること、及び書き込むことのためのAPIを提供する。例えば以下の単純なスクリプトが、クリップボードからテキストを読み取り、そのテキストをブラウザにおいて表示する。
document.write(window.clipboardData.getData(’Text’));
[0067]クリップボードが、潜在的に、現在のWebページと、システムの他の部分との間で共有されるリソースの役割をすることが可能であることを見て取ることは、難しくない。これにより、同一の出所のポリシーを回避するためのチャネルがもたらされることが可能である。オブジェクト、ClipboardDataは、異なるドメインを出所とするページの間でデータを転送することを意図していない。残念ながら、上記の一行の単純なスクリプトが、クリップボードデータを取得することに、そのデータが現在のドメインからのページによってあらかじめ設定されていない場合でも、成功する。
[0068]前述したクリップボードの例は、このカテゴリの攻撃に関する標準的な例として本明細書で使用される。一実施形態では、Webページのいずれかの部分が、クリップボードを読み取ろうと試みる場合、そのページが読み込まれる際に、クリップボードデータをクリアすることが強制される。一実施形態では、そうすることは、Webページの先頭に以下のスクリプトを挿入することによって行われる。クリップボード読み取りがページ内で行われるかどうかを判定する単純な静的解析が、必要とされる。
document.write(window.clipboardData.clearData(’Text’,’URL’,’File’,’HTML’,’Image’))
[0069]一般に、この技術は、現在のWebページと、システムの他の部分との間の潜在的に共有される任意のリソースに適用されることが可能である。
悪意のあるAPI使用から保護すること
[0070]一実施形態では、既存のブラウザの限られた制限が、カスタマイズされたポリシーによって許される方法で、いくつかのAPI呼び出しを書き換えることによって強化される。一実施形態では、関係のあるウインドウAPI呼び出しに対する位置引数及びサイズ引数は、それらのウインドウが予期される範囲内に入るように変更される。
window.moveto(x,y) =>
window.moveto(x % screen.availWidth, y %
screen.availHeight)

window.resizeTo(x,y) =>
window.resizeTo(((x>screen.availWidth) ?
screen.availWidth : x),
((y>screen.availHeight) ?
screen.availHeight : y))
[0071]正しい計装が実行履歴についての情報を要求するため、一部のAPI呼び出しは、このように直接的に計装されることができない。API「moveBy(deltaX,deltaY)及びresizeBy(deltaX,deltaY)」は、2つのそのような例であり、これらのAPIは、絶対値によってではなく、オフセット(offsets)によってウインドウの位置及びサイズを変更する。この事例では、計装はより高度であり、計装ユニットはウインドウについての情報をまず獲得し、次に、ターゲット引数を計算し、それらの呼び出しを異なる呼び出しで置き換える。このことが、以下に例示される。
window.moveBy(dx,dy) =>
window.moveto((window.screenX+dx)% screen.availWidth,
(window.screenX+dx) % screen.availWidth)

window.resizeBy(dx,dy) =>
window.resizeTo(((window.outerWidth+dx>
screen.availWidth) ?
screen.availWidth :
(window.outerWidth+dx)),
((window.outerHeight+dy >
screen.availHeight) ?
screen.availHeight :
(window.outerHeight+dy)))
これらの特定の書き換え規則は、実際に攻撃のためのしばしば、不当に利用される手段である、いくつかの「乱暴な(wild)」ウインドウを防止する。例えば、目に見えないウインドウ(境界外の、又は背景の)は、Webサーバにひそかに接続することが可能である。他の攻撃と組み合わさって、このウインドウは、貴方のシステムにキー操作を記録するためのコード(keystroke-logging code)をダウンロードする、或いはリモートPCにファイル又はパスワードをアップロードすることが可能である。匿名のプロキシサイトの使用とともに、被害者は、そのリモートコンピュータのロケーションをたどることさえできない。
予期されない振舞いからの保護
[0072]JavaScriptは、事件(events)が起きた際に、情報のデータ又はプロンプトの有用な処理のために、様々なイベントハンドラ(事件処理部)を作成することが可能である。例えば、Webページは、ブラウザの現在のコンテンツをアンロードする前に、ユーザの入力を保存するか、又は破棄するかについて、ユーザに確認することが可能である。このことは、ユーザがフォームデータをサブミットすること、又は保存することなしに、ウインドウを誤って閉じる場合に役立つ。悪意のある人々によって利用された場合、同一の能力が、ユーザによって容易に閉じられることが可能でない「しつこい(persistent)」ウインドウなどの、迷惑な動作を展開するのに使用されることが可能である。以下は、onunloadイベントハンドラを利用して、現在のウインドウが閉じられる直前に新たなウインドウを再生成する単純な攻撃である。
<html>
<head>
<title>PersistentWindow</title>
<scripttype="text/javascript">
function respawn() {
window.open(URL)
}
</script>
</head>
<body onunload="respawn()">
Content of the webpage loaded from URL.
</body>
</html>
[0073]悪意のあるハンドラスクリプトのセマンティクスと、ハンドラの意図される用途との間の相違に注目されたい。一実施形態では、クライアントは、アンロードハンドラ内にある場合、API window.open()に対する呼び出しを無視することにより、この攻撃から保護される。何らかの静的解析を使用して、ハンドラのコードが検査され、つまり、open()API呼び出しは、ハンドラの最高レベルコードの中に直接に存在しないことが可能であり、別個に定義された関数の中に密閉されることも可能である。
[0074]一般に、他の多数のイベントハンドラが、同様の方法で利用されることが可能である。より具体的には、ウインドウオブジェクトに関して、一実施形態では、
・ ハンドラ「onbeforeunload」及び「onload」内から新たなウインドウを開く、
・ ハンドラ「onmove」、「onresize」、「onresizeend」、及び「onresizestart」内からウインドウを移動し、サイズ変更する、
・ ハンドラ「onblur」、「onbeforedeactivate」、「ondeactivate」、「onfocus」、及び「onactivate」内からフォーカスを変更する
API呼び出しは、無視される
[0075]この技術は、例えば、「document」及び「form」などの他のブラウザオブジェクトにも適用可能であることに留意されたい。
サービス拒否攻撃から保護すること
[0076]静的解析に基づくサービス拒否攻撃からの保護については、前段で説明された。以下に、コード書き換えに基づくサービス拒否攻撃からの別の保護について説明する。
[0077]サービス拒否攻撃を抑制するために、一実施形態では、そのようなリソース濫用と関係があるAPI呼び出しに関する安全動作が提供される。以下に、そのような安全動作を表現することが可能な指定言語が、定義される。
[0078]安全ポリシーが、以下の言語で表現される。
Policy := (FunctionSpec, SafeFunctionSpec)
FunctionSpec := (FunctionName, Arglist)
Arglist := Arg *
Arg := Var | Const
SafeFunctionSpec := (FunctionName,SafeArgList)
SafeArgList := SafeArg *
SafeArg := IF Safe(Arg) THEN Arg ELSEMakeSafe(Arg)
Safe(Arg) := Pred(Arg) | StaticPred(Arg)
Pred(Arg) := Compare(Arg, Arg) |
Pred(Arg) AND Pred(Arg) |
Pred(Arg) OR Pred(Arg) |
NOT Pred(Arg) |
Fun(Arg)
StaticPred(Arg) := Compare(Arg, Const) |
StaticPred(Arg) AND StaticPred(Arg) |
StaticPred(Arg) OR StaticPred(Arg) |
NOT StaticPred(Arg)
Fun(Arg) := Arg IN Arg*
Compare(x, y) := x = y | x < y | x >y |
Compare (x, y) AND Compare (x, y)
[0079]所与のJavaScriptコードが、ポリシーの中の関数呼び出しと合致する場合はいつでも、対応する呼び出しが、安全なバージョンで置き換えられる。図9は、書き換えを実行するシステムの一実施形態のブロック図である。図9を参照すると、プログラムコード901(例えば、JavaScriptコード)が、濫用可能なAPIに対する安全な変換を含むポリシー903の中で指定された関数呼び出しと合致するコードリライタ902に入力され、リライタ902によって受け取られる。合致が見つかった場合、コード書き換えユニット902は、その関数呼び出しを、ポリシー1003によって指定された安全なバージョンで置き換える。終了すると、動的計装ユニット902は、安全に実行される濫用可能なAPIの安全なバージョンを有するコード904を出力する。
[0080]前述の指定システムにおける基本的な考えは、関数呼び出しが、その呼び出しの安全なバージョンとペアにされることである。安全なバージョンにおいて、一実施形態では、SafeArg構文によって表現されるガードが、各引数の前に置かれる。このガードは、一般的に言って、引数に対する述語であり、関数呼び出しを、元の関数の本文の直前の対応するコードで書き換えることによって実施される。
[0081]一実施形態では、書き換えられたコードのさらなる静的最適化が実行される。このことは、この言語におけるStaticPredを介して表現される。所与のJavaScriptコードとの安全ポリシー合致が、書き換えの一環としてStaticPredを含む場合、これらの述語が成立するか否かを静的に判定することが、ときとして、可能である。このことは、書き換えのいくつかを最適化する可能性をもたらし、その結果、最終的なコードの効率を高めるとともに、場合により、StaticPredに障害が生じる場合に、コード全体の実行を先回りして阻止する。図10は、計装を実行するシステムの代替の実施形態のブロック図である。図10を参照すると、プログラムコード1001(例えば、JavaScriptコード)が、濫用可能なAPIに対する安全な変換を含むポリシー1003の中で指定された関数呼び出しと合致するコードリライタ1002に入力され、リライタ1002によって受け取られる。合致が見つかった場合、コードリライタ1002は、その関数呼び出しを、ポリシー1003によって指定された安全なバージョンで置き換える。終了すると、コードリライタ1002は、濫用可能なAPIの安全なバージョンを有するコード1004を出力する。静的オプティマイザ(最適化手段)1005が、コード1004の静的な最適化を実行し、その後、コード1004は、安全に実行される。
状態追跡
[0082]一実施形態では、或る特定のAPIが呼び出される回数に限度を課すことによってサービス拒否攻撃から保護するため、このカウントを追跡するグローバル変数が使用される。これを行うため、一実施形態では、前述の安全変換言語を使用して、問題のAPIが、元のAPIを包むだけでなく、元のAPIが呼び出されるたびに内部変数をインクリメントする安全なバージョンで置き換えられる。このため、この技術を使用して、例えば、JavaScriptによって生成されるウインドウの数が制限されることが可能である。
展開アーキテクチャの例
[0083]図11は、前述した技術の展開のための一般的なアーキテクチャの一実施形態のブロック図である。図11を参照すると、セキュアな(安全な)プロキシ1101が、クライアントブラウザ1102を実行するクライアントデバイスと、インターネット1103のそれ以外の部分との間のネットワーク上に存在する。このクライアントへのすべてのトラフィック、及びこのクライアントからのすべてのトラフィックは、プロキシ1101を通過し、プロキシ1101において、このトラフィックが、解析されることが可能であり、セキュリティ上の欠陥を利用するコンテンツが、潜在的にフィルタ処理されることが可能である。一実施形態では、プロキシ1101は、HTTPヘッダコンテンツ(例えば、URL)やHTTP応答コンテンツ(JavaScriptなどの)などの、クライアントがインターネット1103から取得(fetch)する様々な種類のコンテンツを扱うためのフィルタを有する。より具体的には、クライアントブラウザ1102は、ユーザ入力1106を受け取ることができる。クライアントブラウザ1102は、ページ要求1151を生成する。プロキシ1101は、ページ要求1151を受信し、URLフィルタ処理1161を使用してURLをフィルタ処理し、HTTP要求ヘッダフィルタ1162を使用してHTTP要求ヘッダをフィルタ処理する。フィルタ処理の後、プロキシ1101は、ページ要求1151をインターネット1103に転送する。ページ要求1151に対するインターネット1103からの応答が、プロキシ1101によって受信され、プロキシ1101は、HTTP応答ヘッダフィルタ1164を使用して、ヘッダをフィルタ処理する。HTTP応答ヘッダフィルタ1164によるフィルタ処理の後、プロキシ1101は、HTMLコンテンツフィルタ1163及び/又はJavaScriptフィルタ−インスツルメンタ1110を使用して、コンテンツをフィルタ処理する。HTMLコンテンツフィルタ1163とJavaScriptフィルタ−インスツルメンタ1110のいずれか、又は両方の出力を表すフィルタ処理されたコンテンツ1152が、プロキシ1101から出力され、クライアントブラウザ1102に送信される。また、HTMLコンテンツフィルタ1163及びJavaScriptフィルタ−インスツルメンタ1110の出力は、フィルタ処理されたコンテンツの攻撃プロファイリングに基づくブラウザ開発を円滑にするのに使用されることも可能である。
[0084]前述した技術は、JavaScriptフィルタ−インスツルメンタユニット1110において実行される。
[0085]セキュリティディスクリプタ(記述子)ファイル1120は、前述した技術によって実施されるポリシー指定のいずれかに対応する。
コンピュータシステムの例
[0086]図12は、本明細書で説明される動作の1つ又は複数を実行することが可能な例示的なコンピュータシステムのブロック図である。図12を参照すると、コンピュータシステム1200が、例示的なクライアントコンピュータシステム又はサーバコンピュータシステムを備えることが可能である。コンピュータシステム1200は、情報を通信するための通信機構又はバス1211と、情報を処理するためにバス1211に結合されたプロセッサ1212とを備える。プロセッサ1212は、マイクロプロセッサを含むが、例えば、Pentium(商標)、PowerPC(商標)、Alpha(商標)などのマイクロプロセッサに限定されない。
[0087]システム1200は、情報、及びプロセッサ1212によって実行されるべき命令を格納するためのRAM(ランダムアクセスメモリ)、又は他の動的記憶デバイス1204(メインメモリと呼ばれる)をさらに備える。また、メインメモリ1204は、プロセッサ1212による命令の実行中に、一時的変数、又は他の中間情報を格納するために使用されることも可能である。
[0088]また、コンピュータシステム1200は、プロセッサ1212のための静的情報及び命令を格納するためにバス1211に結合されたROM(読み取り専用メモリ)及び/又は他の静的記憶デバイス1206、並びに磁気ディスク又は光ディスク、及び対応するディスクドライブなどのデータ記憶デバイス1207も備える。データ記憶デバイス1207は、情報及び命令を格納するためにバス1211に結合される。
[0089]コンピュータシステム1200は、コンピュータユーザに情報を表示するためにバス1211に結合された、CRT(陰極線管)又はLCD(液晶ディスプレイ)などのディスプレイデバイス1221にさらに結合されることが可能である。また、英数字キー又は他のキーを含む英数字入力デバイス1222が、情報及びコマンド選択をプロセッサ1212に通信するために、バス1211に結合されることも可能である。さらなるユーザ入力デバイスは、方向情報及びコマンド選択をプロセッサ1212に通信するため、及びディスプレイ1221上でカーソルの動きを制御するために、バス1211に結合される、マウス、トラックボール、トラックパッド、スタイラス、又はカーソル方向キーなどの、カーソルコントロール1223である。
[0090]バス1211に結合されることが可能な別のデバイスは、紙、フィルム、又は類似したタイプの媒体などの媒体上に情報を記録するために使用されることが可能なハードコピーデバイス1224である。バス1211に結合されることが可能な別のデバイスは、電話デバイス又はハンドヘルドパームデバイスに通信する有線/無線通信能力1225である。
[0091]システム1200の構成要素、及び関連するハードウェアのいずれか、又はすべてが、本発明において使用されることが可能であることに留意されたい。しかし、コンピュータシステムの他の構成は、これらのデバイスのいくつか、又はすべてを含むことが可能であること理解することができよう。
[0092]本発明の多くの代替形態及び変形形態が、以上の説明を読んだ後、間違いなく、当業者には明白となろうが、例示として示され、説明されるいずれの特定の実施形態も、限定するものと考えられることはまったく意図していないものと理解されたい。したがって、様々な実施形態の詳細への言及は、それ自体、本発明に不可欠であると見なされる特徴だけを記載する特許請求の範囲を限定することは意図していない。
静的解析に基づく、開示される技術を展開するための一般的なフレームワークを示すブロック図である。 クロスサイトスクリプティングの例を示す図である。 XSSと関係のあるJavaScript及びDOM APIの本質的な要素の抽象化を示す図である。 フローベースの計装に関するプロセスの一実施形態を示すブロック図である。 フローベースの計装を示すJavaScript計装の例を示す図である。 計装を実行するシステムを示すブロック図である。 計装及び最適化を実行するシステムを示すブロック図である。 コード書き換えに基づく、開示される技術を展開する一般的なフレームワークを示すブロック図である。 濫用可能なAPIのコンテキストにおいてコード書き換えを実行するシステムの一実施形態を示すブロック図である。 濫用可能なAPIのコンテキストにおいてコード書き換えを実行するシステムの代替の実施形態を示すブロック図である。 開示される技術の展開のための一般的なアーキテクチャの一実施形態を示すブロック図である。 コンピュータシステムの一実施形態を示すブロック図である。

Claims (4)

  1. 第1の安全ポリシーに基づくスクリプトプログラムの静的解析を実行して、前記スクリプトプログラムの不安全動作を検出する工程と、及び
    前記スクリプトプログラムが実行される際に、前記安全ポリシーについての違反が生じる場合、前記スクリプトプログラムの実行を防止する工程とを含む方法。
  2. システムによって実行されると、
    第1の安全ポリシーに基づくスクリプトプログラムの静的解析を実行して、前記スクリプトプログラムの不安全動作を検出する工程と、及び
    前記スクリプトプログラムが実行される際に、前記安全ポリシーについての違反が生じる場合、前記スクリプトプログラムの実行を防止する工程とを含む方法を、前記システムに実行させる命令が格納された1つ又は複数のコンピュータ可読媒体を有する製造品。
  3. 第1の安全ポリシーに基づいてスクリプトプログラムを解析する工程と、及び
    前記スクリプトプログラムの安全な実行を確実にするように前記スクリプトプログラムを変更する工程とを含む方法。
  4. システムによって実行されると、
    第1の安全ポリシーに基づいてスクリプトプログラムを解析する工程と、及び
    前記スクリプトプログラムの安全な実行を確実にするように前記スクリプトプログラムを変更する工程とを含む方法を、前記システムに実行させる命令が格納された1つ又は複数のコンピュータ可読媒体を有する製造品。
JP2008540189A 2005-11-10 2006-11-08 Javascriptプログラムの不安全動作安を検出するため、及び防止するための方法及び装置 Pending JP2009521737A (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US73551305P 2005-11-10 2005-11-10
US73577205P 2005-11-10 2005-11-10
US11/594,524 US20070107057A1 (en) 2005-11-10 2006-11-07 Method and apparatus for detecting and preventing unsafe behavior of javascript programs
PCT/US2006/043627 WO2007058882A2 (en) 2005-11-10 2006-11-08 A method and apparatus for detecting and preventing unsafe behavior of javascript programs

Publications (2)

Publication Number Publication Date
JP2009521737A true JP2009521737A (ja) 2009-06-04
JP2009521737A5 JP2009521737A5 (ja) 2010-01-14

Family

ID=37946322

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008540189A Pending JP2009521737A (ja) 2005-11-10 2006-11-08 Javascriptプログラムの不安全動作安を検出するため、及び防止するための方法及び装置

Country Status (5)

Country Link
US (2) US20070107057A1 (ja)
EP (2) EP1962220A1 (ja)
JP (1) JP2009521737A (ja)
CN (1) CN101356535B (ja)
WO (1) WO2007058882A2 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010536107A (ja) * 2007-08-15 2010-11-25 インターナショナル・ビジネス・マシーンズ・コーポレーション データ発信源の追跡及びデータ伝送の制御
JP2011501278A (ja) * 2007-10-15 2011-01-06 ベイジン ライジング インフォメーション テクノロジー カンパニー、リミテッド コンピュータにおける悪意プログラム自動保護方法及び装置
JP2015501961A (ja) * 2011-11-07 2015-01-19 クアルコム,インコーポレイテッド 情報の流れを把握するための値内のラベルの符号化
US9501646B2 (en) 2012-09-26 2016-11-22 Mitsubishi Electric Corporation Program verification apparatus, program verification method, and computer readable medium
WO2020021686A1 (ja) * 2018-07-26 2020-01-30 日本電気株式会社 解析支援装置、解析支援方法、及びコンピュータ読み取り可能な記録媒体
US11409886B2 (en) 2017-07-31 2022-08-09 Nec Corporation Program verification system, method, and program

Families Citing this family (146)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8245049B2 (en) * 2004-06-14 2012-08-14 Microsoft Corporation Method and system for validating access to a group of related elements
US8078740B2 (en) 2005-06-03 2011-12-13 Microsoft Corporation Running internet applications with low rights
US20060282830A1 (en) * 2005-06-13 2006-12-14 Microsoft Corporation Analysis of the impact of application programs on resources stored in data stores
JP2007287124A (ja) * 2006-04-18 2007-11-01 Softrun Inc インターネット接続サイトの分析を通じたフィッシング防止方法及びその方法を実現するためのコンピュータプログラムを記録した記録媒体
US8185737B2 (en) 2006-06-23 2012-05-22 Microsoft Corporation Communication across domains
US20080083012A1 (en) * 2006-06-26 2008-04-03 Dachuan Yu Program instrumentation method and apparatus for constraining the behavior of embedded script in documents
JP4908131B2 (ja) * 2006-09-28 2012-04-04 富士通株式会社 非即時処理存在可能性の表示処理プログラム,装置,および方法
US8938773B2 (en) 2007-02-02 2015-01-20 Websense, Inc. System and method for adding context to prevent data leakage over a computer network
US20080234998A1 (en) * 2007-03-22 2008-09-25 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Coordinating instances of a thread or other service in emulation
US9378108B2 (en) * 2007-03-22 2016-06-28 Invention Science Fund I, Llc Implementing performance-dependent transfer or execution decisions from service emulation indications
US8874425B2 (en) * 2007-03-22 2014-10-28 The Invention Science Fund I, Llc Implementing performance-dependent transfer or execution decisions from service emulation indications
US8495708B2 (en) * 2007-03-22 2013-07-23 The Invention Science Fund I, Llc Resource authorizations dependent on emulation environment isolation policies
US8438609B2 (en) * 2007-03-22 2013-05-07 The Invention Science Fund I, Llc Resource authorizations dependent on emulation environment isolation policies
US20080235001A1 (en) * 2007-03-22 2008-09-25 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Implementing emulation decisions in response to software evaluations or the like
US20080235000A1 (en) * 2007-03-22 2008-09-25 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Implementing security control practice omission decisions from service emulation indications
US9558019B2 (en) * 2007-03-22 2017-01-31 Invention Science Fund I, Llc Coordinating instances of a thread or other service in emulation
US8438653B2 (en) * 2007-04-10 2013-05-07 Microsoft Corporation Strategies for controlling use of a resource that is shared between trusted and untrusted environments
US20080295164A1 (en) * 2007-05-24 2008-11-27 International Business Machines Corporation Mashup component isolation via server-side analysis and instrumentation
US10019570B2 (en) 2007-06-14 2018-07-10 Microsoft Technology Licensing, Llc Protection and communication abstractions for web browsers
US8181246B2 (en) 2007-06-20 2012-05-15 Imperva, Inc. System and method for preventing web frauds committed using client-scripting attacks
US20090125977A1 (en) * 2007-10-31 2009-05-14 Docomo Communications Laboratories Usa, Inc. Language framework and infrastructure for safe and composable applications
US20090119769A1 (en) * 2007-11-05 2009-05-07 Microsoft Corporation Cross-site scripting filter
US8914774B1 (en) 2007-11-15 2014-12-16 Appcelerator, Inc. System and method for tagging code to determine where the code runs
US8954989B1 (en) 2007-11-19 2015-02-10 Appcelerator, Inc. Flexible, event-driven JavaScript server architecture
US8260845B1 (en) 2007-11-21 2012-09-04 Appcelerator, Inc. System and method for auto-generating JavaScript proxies and meta-proxies
US8719451B1 (en) 2007-11-23 2014-05-06 Appcelerator, Inc. System and method for on-the-fly, post-processing document object model manipulation
US8566807B1 (en) 2007-11-23 2013-10-22 Appcelerator, Inc. System and method for accessibility of document object model and JavaScript by other platforms
EP2065824A1 (en) * 2007-11-30 2009-06-03 Fox Entertainment Group HTML filter for prevention of cross site scripting attacks
US8819539B1 (en) 2007-12-03 2014-08-26 Appcelerator, Inc. On-the-fly rewriting of uniform resource locators in a web-page
US8806431B1 (en) 2007-12-03 2014-08-12 Appecelerator, Inc. Aspect oriented programming
US8756579B1 (en) 2007-12-03 2014-06-17 Appcelerator, Inc. Client-side and server-side unified validation
US8938491B1 (en) 2007-12-04 2015-01-20 Appcelerator, Inc. System and method for secure binding of client calls and server functions
US8527860B1 (en) 2007-12-04 2013-09-03 Appcelerator, Inc. System and method for exposing the dynamic web server-side
US8285813B1 (en) 2007-12-05 2012-10-09 Appcelerator, Inc. System and method for emulating different user agents on a server
US8335982B1 (en) 2007-12-05 2012-12-18 Appcelerator, Inc. System and method for binding a document object model through JavaScript callbacks
US8639743B1 (en) * 2007-12-05 2014-01-28 Appcelerator, Inc. System and method for on-the-fly rewriting of JavaScript
US9172707B2 (en) * 2007-12-19 2015-10-27 Microsoft Technology Licensing, Llc Reducing cross-site scripting attacks by segregating HTTP resources by subdomain
US8438636B2 (en) * 2008-01-11 2013-05-07 Microsoft Corporation Secure and extensible policy-driven application platform
US8621495B2 (en) * 2008-01-18 2013-12-31 Microsoft Corporation Methods and apparatus for securing frames from other frames
US9686288B2 (en) * 2008-01-25 2017-06-20 Ntt Docomo, Inc. Method and apparatus for constructing security policies for web content instrumentation against browser-based attacks
US8387139B2 (en) * 2008-02-04 2013-02-26 Microsoft Corporation Thread scanning and patching to disable injected malware threats
US10395187B2 (en) 2008-02-11 2019-08-27 Clearshift Corporation Multilevel assignment of jobs and tasks in online work management system
US9130986B2 (en) 2008-03-19 2015-09-08 Websense, Inc. Method and system for protection against information stealing software
US9015842B2 (en) 2008-03-19 2015-04-21 Websense, Inc. Method and system for protection against information stealing software
US8806618B2 (en) * 2008-03-31 2014-08-12 Microsoft Corporation Security by construction for distributed applications
US8424082B2 (en) 2008-05-08 2013-04-16 Google Inc. Safely executing an untrusted native code module on a computing device
US9058483B2 (en) 2008-05-08 2015-06-16 Google Inc. Method for validating an untrusted native code module
US9524344B2 (en) * 2008-06-03 2016-12-20 Microsoft Corporation User interface for online ads
US20090299862A1 (en) * 2008-06-03 2009-12-03 Microsoft Corporation Online ad serving
US8291079B1 (en) 2008-06-04 2012-10-16 Appcelerator, Inc. System and method for developing, deploying, managing and monitoring a web application in a single environment
US8880678B1 (en) 2008-06-05 2014-11-04 Appcelerator, Inc. System and method for managing and monitoring a web application using multiple cloud providers
US20090327869A1 (en) * 2008-06-27 2009-12-31 Microsoft Corporation Online ad serving
US8640244B2 (en) * 2008-06-27 2014-01-28 Microsoft Corporation Declared origin policy
US8245200B2 (en) * 2008-07-11 2012-08-14 International Business Machines Corporation Method, system, and apparatus for dynamically injecting logging statements into web 2.0 javascript applications
US8230506B1 (en) * 2008-07-15 2012-07-24 Zscaler, Inc. Proxy communication detection
US9176754B2 (en) 2008-07-16 2015-11-03 Google Inc. Method and system for executing applications using native code modules
US8782797B2 (en) * 2008-07-17 2014-07-15 Microsoft Corporation Lockbox for mitigating same origin policy failures
US7596620B1 (en) 2008-11-04 2009-09-29 Aptana, Inc. System and method for developing, deploying, managing and monitoring a web application in a single environment
US8522200B2 (en) 2008-08-28 2013-08-27 Microsoft Corporation Detouring in scripting systems
US8931084B1 (en) * 2008-09-11 2015-01-06 Google Inc. Methods and systems for scripting defense
US8990116B2 (en) * 2008-10-07 2015-03-24 Mocana Corporation Preventing execution of tampered application code in a computer system
JP2010092376A (ja) * 2008-10-10 2010-04-22 Softbank Mobile Corp 情報処理装置、情報処理方法及び情報処理プログラム
US8701185B2 (en) * 2008-10-14 2014-04-15 At&T Intellectual Property I, L.P. Method for locating fraudulent replicas of web sites
US8510713B1 (en) 2008-10-31 2013-08-13 Google Inc. Method and system for validating a disassembler
GB2478098B (en) * 2008-11-19 2013-07-10 Secure Works Inc System and method for run-time attack prevention
EP2392114B1 (en) 2009-01-30 2021-01-20 British Telecommunications public limited company Secure web-based service provision
US8413239B2 (en) * 2009-02-22 2013-04-02 Zscaler, Inc. Web security via response injection
DE102009011679A1 (de) * 2009-02-23 2010-08-26 Pilz Gmbh & Co. Kg Verfahren und Vorrichtung zum Erstellen eines Anwenderprogrammes für eine Sicherheitssteuerung
CN101895516B (zh) * 2009-05-19 2014-08-06 北京启明星辰信息技术股份有限公司 一种跨站脚本攻击源的定位方法及装置
US8621613B1 (en) * 2009-05-26 2013-12-31 Amazon Technologies, Inc. Detecting malware in content items
US8797337B1 (en) 2009-07-02 2014-08-05 Google Inc. Graphics scenegraph rendering for web applications using native code modules
CN101964025B (zh) * 2009-07-23 2016-02-03 北京神州绿盟信息安全科技股份有限公司 Xss检测方法和设备
JP5526654B2 (ja) * 2009-08-20 2014-06-18 富士通株式会社 データ送信プログラム、データ送信装置および操作手順書編集方法
US8214903B2 (en) 2009-10-02 2012-07-03 International Business Machines Corporation Analysis of scripts
US20120089481A1 (en) * 2009-11-24 2012-04-12 Chain Reaction Ecommerce, Inc. Securing sensitive information with a trusted proxy frame
US8387143B2 (en) * 2009-11-30 2013-02-26 Citrix Systems, Inc. Systems and methods for aggressive window probing
US9210184B2 (en) * 2009-12-29 2015-12-08 International Business Machines Corporation Determining the vulnerability of computer software applications to attacks
US9058489B2 (en) * 2010-01-25 2015-06-16 Samsung Electronics Co., Ltd. Marking documents with executable text for processing by computing systems
US8997217B2 (en) * 2010-01-25 2015-03-31 Samsung Electronics Co., Ltd. Safely processing and presenting documents with executable text
US8473925B2 (en) 2010-05-11 2013-06-25 Ca, Inc. Conditional dynamic instrumentation of software in a specified transaction context
US8782612B2 (en) * 2010-05-11 2014-07-15 Ca, Inc. Failsafe mechanism for dynamic instrumentation of software using callbacks
US8566800B2 (en) 2010-05-11 2013-10-22 Ca, Inc. Detection of method calls to streamline diagnosis of custom code through dynamic instrumentation
US8826444B1 (en) * 2010-07-09 2014-09-02 Symantec Corporation Systems and methods for using client reputation data to classify web domains
US10372899B2 (en) * 2010-07-22 2019-08-06 International Business Machines Corporation Method and apparatus for context-aware output escaping using dynamic content marking
US10375107B2 (en) * 2010-07-22 2019-08-06 International Business Machines Corporation Method and apparatus for dynamic content marking to facilitate context-aware output escaping
EP2413257B1 (en) * 2010-07-26 2017-04-26 Sony DADC Austria AG Method for replacing an illegitimate copy of a software program with legitimate copy and corresponding system
CA2711855A1 (en) 2010-08-25 2010-11-03 Ibm Canada Limited - Ibm Canada Limitee Secure third party scripting environment
US8938729B2 (en) 2010-10-12 2015-01-20 Ca, Inc. Two pass automated application instrumentation
TWI435235B (zh) * 2010-11-04 2014-04-21 Inst Information Industry 電腦蠕蟲治療系統以及方法以及儲存電腦蠕蟲治療方法之電腦可讀取記錄媒體
US8788884B2 (en) * 2010-12-07 2014-07-22 Massachusetts Institute Of Technology Automatic correction of program logic
US9342274B2 (en) 2011-05-19 2016-05-17 Microsoft Technology Licensing, Llc Dynamic code generation and memory management for component object model data constructs
US8881101B2 (en) 2011-05-24 2014-11-04 Microsoft Corporation Binding between a layout engine and a scripting engine
US20120303453A1 (en) * 2011-05-26 2012-11-29 Yahoo! Inc. Methods and systems for securely targeting advertisements on login pages
US8949992B2 (en) 2011-05-31 2015-02-03 International Business Machines Corporation Detecting persistent vulnerabilities in web applications
US9224010B2 (en) 2011-09-01 2015-12-29 International Business Machines Corporation Secure document creation from potentially unsecure source templates
US10445528B2 (en) * 2011-09-07 2019-10-15 Microsoft Technology Licensing, Llc Content handling for applications
US9223976B2 (en) * 2011-09-08 2015-12-29 Microsoft Technology Licensing, Llc Content inspection
US8572750B2 (en) * 2011-09-30 2013-10-29 International Business Machines Corporation Web application exploit mitigation in an information technology environment
US10157049B2 (en) * 2011-10-26 2018-12-18 International Business Machines Corporation Static analysis with input reduction
US8752015B2 (en) 2011-12-05 2014-06-10 Ca, Inc. Metadata merging in agent configuration files
US9411616B2 (en) 2011-12-09 2016-08-09 Ca, Inc. Classloader/instrumentation approach for invoking non-bound libraries
US20130185623A1 (en) * 2012-01-12 2013-07-18 International Business Machines Corporation Instructing web clients to ignore scripts in specified portions of web pages
US9049222B1 (en) * 2012-02-02 2015-06-02 Trend Micro Inc. Preventing cross-site scripting in web-based e-mail
CN103679018B (zh) * 2012-09-06 2018-06-12 百度在线网络技术(北京)有限公司 一种检测csrf漏洞的方法和装置
BR112015006653A2 (pt) * 2012-09-28 2017-07-04 Hewlett Packard Development Co sistema de computação, meio de armazenamento legível por máquina não transitório e método
CN103729287B (zh) * 2012-10-16 2018-01-05 百度在线网络技术(北京)有限公司 一种前端javascript组件的测试方法和装置
US9241259B2 (en) 2012-11-30 2016-01-19 Websense, Inc. Method and apparatus for managing the transfer of sensitive information to mobile devices
US10032659B2 (en) * 2012-12-28 2018-07-24 Sunedison Semiconductor Limited (Uen201334164H) Methods and systems for preventing unsafe operations
US9098722B2 (en) * 2013-03-15 2015-08-04 Prevoty, Inc. Systems and methods for parsing user-generated content to prevent attacks
US9313223B2 (en) 2013-03-15 2016-04-12 Prevoty, Inc. Systems and methods for tokenizing user-generated content to enable the prevention of attacks
US9904541B2 (en) * 2013-05-09 2018-02-27 Microsoft Technology Licensing, Llc Semantic baselining
CN103258163B (zh) * 2013-05-15 2015-08-26 腾讯科技(深圳)有限公司 一种脚本病毒识别方法、装置及系统
US9430452B2 (en) 2013-06-06 2016-08-30 Microsoft Technology Licensing, Llc Memory model for a layout engine and scripting engine
US9158935B2 (en) * 2013-06-07 2015-10-13 Microsoft Technology Licensing, Llc Automatic mediation of resource access in mobile applications
US9152694B1 (en) * 2013-06-17 2015-10-06 Appthority, Inc. Automated classification of applications for mobile devices
US9774620B2 (en) * 2013-06-18 2017-09-26 Microsoft Technology Licensing, Llc Automatic code and data separation of web application
CN103413073B (zh) * 2013-07-09 2016-01-20 北京深思数盾科技有限公司 一种保护java可执行程序的方法及设备
US9798981B2 (en) 2013-07-31 2017-10-24 Entit Software Llc Determining malware based on signal tokens
CN105431859A (zh) * 2013-07-31 2016-03-23 惠普发展公司,有限责任合伙企业 指示恶意软件的信号标记
CN104519007A (zh) * 2013-09-26 2015-04-15 深圳市腾讯计算机系统有限公司 一种漏洞检测的方法及服务器
US9154492B2 (en) * 2013-09-27 2015-10-06 The University Of North Carolina At Charlotte Moving target defense against cross-site scripting
US9922131B2 (en) 2013-11-06 2018-03-20 Hipmunk, Inc. Graphical user interface machine to present a window
US9390177B2 (en) 2014-03-27 2016-07-12 International Business Machines Corporation Optimizing web crawling through web page pruning
KR102192479B1 (ko) * 2014-04-23 2020-12-17 삼성전자주식회사 전자 장치의 프로그램 코드 분석 방법 및 전자 장치
CN105282096A (zh) * 2014-06-18 2016-01-27 腾讯科技(深圳)有限公司 Xss 漏洞检测方法和装置
US10419483B1 (en) * 2014-09-17 2019-09-17 Amazon Technologies, Inc. Time-bounded execution for privileged code
US9781145B2 (en) * 2014-11-25 2017-10-03 International Business Machines Corporation Persistent cross-site scripting vulnerability detection
CN104468546B (zh) * 2014-11-27 2018-01-09 微梦创科网络科技(中国)有限公司 一种网络信息处理方法及防火墙装置、系统
CN104462985A (zh) * 2014-11-28 2015-03-25 北京奇虎科技有限公司 bat漏洞的检测方法以及装置
US9953158B1 (en) * 2015-04-21 2018-04-24 Symantec Corporation Systems and methods for enforcing secure software execution
US10769351B2 (en) * 2015-05-08 2020-09-08 Citrix Systems, Inc. Rendering based on a document object model
US10574631B2 (en) 2015-05-11 2020-02-25 Finjan Mobile, Inc. Secure and private mobile web browser
US9684788B2 (en) * 2015-06-29 2017-06-20 International Business Machines Corporation Self-repair and distributed-repair of applications
CN106156616B (zh) * 2016-06-24 2019-08-23 武汉斗鱼网络科技有限公司 一种网站脚本攻击的防御方法及防御系统
US11062019B2 (en) 2016-07-04 2021-07-13 Traffic Guard Dg Ltd. System and method for webpages scripts validation
US11194914B2 (en) * 2016-07-04 2021-12-07 Mcafee, Llc Method and apparatus to detect security vulnerabilities in a web application
US10462145B2 (en) * 2016-07-15 2019-10-29 The Directv Group, Inc. Method and apparatus for controlling access to custom browser functionality
US10728274B2 (en) * 2016-09-22 2020-07-28 Check Point Software Technologies Ltd. Method and system for injecting javascript into a web page
WO2018080819A1 (en) * 2016-10-24 2018-05-03 Finjan Mobile, Inc. Secure and private mobile web browser
CN106789959A (zh) * 2016-12-01 2017-05-31 北京锐安科技有限公司 一种数据安全处理器和处理方法
US10275596B1 (en) * 2016-12-15 2019-04-30 Symantec Corporation Activating malicious actions within electronic documents
US20190188384A1 (en) * 2017-12-19 2019-06-20 Crowdstrike, Inc. Detecting script-based malware
US20190294780A1 (en) * 2018-03-26 2019-09-26 International Business Machines Corporation System and method for executing operating system level virtualization software objects
CN112685314A (zh) * 2021-01-05 2021-04-20 广州知图科技有限公司 一种JavaScript引擎安全测试方法及测试系统
CN112799753B (zh) * 2021-01-08 2023-04-25 杭州雾联科技有限公司 一种全屏独占屏蔽方法、装置、设备及介质
CN114430339A (zh) * 2021-12-25 2022-05-03 深圳太极云软技术有限公司 一种网络请求的过滤方法、装置、终端和可读存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04259036A (ja) * 1991-02-13 1992-09-14 Nec Corp プログラム変換方式及びプログラム不正動作検出機構
JPH10187434A (ja) * 1996-12-20 1998-07-21 Nec Corp セキュリティ確保方式
JP2002514326A (ja) * 1996-11-08 2002-05-14 フィンジャン ソフトウェア,リミテッド 悪意のあるダウンローダブルからコンピュータおよびネットワークを保護するためのシステムおよび方法
JP2002513961A (ja) * 1998-05-01 2002-05-14 マイクロソフト コーポレイション インテリジェントトラストマネジメントの方法およびシステム
JP2003067210A (ja) * 2001-08-22 2003-03-07 Just Syst Corp プログラム実行防止装置、プログラム実行防止方法、その方法をコンピュータに実行させるプログラムおよびそのプログラムを記録したコンピュータ読み取り可能な記録媒体
JP2004287810A (ja) * 2003-03-20 2004-10-14 Nec Corp 不正アクセス防止システム、不正アクセス防止方法、および不正アクセス防止プログラム
JP2004318816A (ja) * 2003-03-31 2004-11-11 Toshiba Corp 通信中継装置、通信中継方法及びプログラム
JP2005267605A (ja) * 2004-02-16 2005-09-29 Hitachi Ltd Web表示方法、装置及びプログラム

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5812850A (en) * 1995-11-13 1998-09-22 Object Technology Licensing Corp. Object-oriented symbolic debugger using a compiler driven database and state modeling to control program execution
US5745738A (en) * 1996-05-29 1998-04-28 Microsoft Corporation Method and engine for automating the creation of simulations for demonstrating use of software
WO1998003920A1 (fr) * 1996-07-22 1998-01-29 Sony Corporation Changeur de supports, procedes de verrouillage et deverrouillage, procede d'execution de commandes d'execution et ordinateur adressant de telles commandes au changeur
US6760903B1 (en) * 1996-08-27 2004-07-06 Compuware Corporation Coordinated application monitoring in a distributed computing environment
US6154844A (en) * 1996-11-08 2000-11-28 Finjan Software, Ltd. System and method for attaching a downloadable security profile to a downloadable
US5983348A (en) * 1997-09-10 1999-11-09 Trend Micro Incorporated Computer network malicious code scanner
US8225408B2 (en) * 1997-11-06 2012-07-17 Finjan, Inc. Method and system for adaptive rule-based content scanners
US7975305B2 (en) * 1997-11-06 2011-07-05 Finjan, Inc. Method and system for adaptive rule-based content scanners for desktop computers
US20020112049A1 (en) * 2000-12-14 2002-08-15 International Business Machines Corporation Measuring response time for a computer accessing information from a network
US7243267B2 (en) * 2002-03-01 2007-07-10 Avaya Technology Llc Automatic failure detection and recovery of applications
CN1412714A (zh) * 2002-09-12 2003-04-23 福建榕基软件开发有限公司 网络隐患扫描系统
US7150008B2 (en) * 2002-10-25 2006-12-12 Microsoft Corporation Non-invasive rule-based binary analysis of software assemblies

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04259036A (ja) * 1991-02-13 1992-09-14 Nec Corp プログラム変換方式及びプログラム不正動作検出機構
JP2002514326A (ja) * 1996-11-08 2002-05-14 フィンジャン ソフトウェア,リミテッド 悪意のあるダウンローダブルからコンピュータおよびネットワークを保護するためのシステムおよび方法
JPH10187434A (ja) * 1996-12-20 1998-07-21 Nec Corp セキュリティ確保方式
JP2002513961A (ja) * 1998-05-01 2002-05-14 マイクロソフト コーポレイション インテリジェントトラストマネジメントの方法およびシステム
JP2003067210A (ja) * 2001-08-22 2003-03-07 Just Syst Corp プログラム実行防止装置、プログラム実行防止方法、その方法をコンピュータに実行させるプログラムおよびそのプログラムを記録したコンピュータ読み取り可能な記録媒体
JP2004287810A (ja) * 2003-03-20 2004-10-14 Nec Corp 不正アクセス防止システム、不正アクセス防止方法、および不正アクセス防止プログラム
JP2004318816A (ja) * 2003-03-31 2004-11-11 Toshiba Corp 通信中継装置、通信中継方法及びプログラム
JP2005267605A (ja) * 2004-02-16 2005-09-29 Hitachi Ltd Web表示方法、装置及びプログラム

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010536107A (ja) * 2007-08-15 2010-11-25 インターナショナル・ビジネス・マシーンズ・コーポレーション データ発信源の追跡及びデータ伝送の制御
JP2011501278A (ja) * 2007-10-15 2011-01-06 ベイジン ライジング インフォメーション テクノロジー カンパニー、リミテッド コンピュータにおける悪意プログラム自動保護方法及び装置
JP2015501961A (ja) * 2011-11-07 2015-01-19 クアルコム,インコーポレイテッド 情報の流れを把握するための値内のラベルの符号化
US9501646B2 (en) 2012-09-26 2016-11-22 Mitsubishi Electric Corporation Program verification apparatus, program verification method, and computer readable medium
US11409886B2 (en) 2017-07-31 2022-08-09 Nec Corporation Program verification system, method, and program
WO2020021686A1 (ja) * 2018-07-26 2020-01-30 日本電気株式会社 解析支援装置、解析支援方法、及びコンピュータ読み取り可能な記録媒体
JPWO2020021686A1 (ja) * 2018-07-26 2021-08-02 日本電気株式会社 解析支援装置、解析支援方法、及びプログラム
JP7040618B2 (ja) 2018-07-26 2022-03-23 日本電気株式会社 解析支援装置、解析支援方法、及びプログラム
US11860604B2 (en) 2018-07-26 2024-01-02 Nec Corporation Analysis assistance apparatus, analysis assistance method, and computer-readable recording medium

Also Published As

Publication number Publication date
WO2007058882A3 (en) 2007-07-05
CN101356535B (zh) 2011-08-24
US20070107057A1 (en) 2007-05-10
US20100257603A1 (en) 2010-10-07
CN101356535A (zh) 2009-01-28
EP1962220A1 (en) 2008-08-27
WO2007058882A2 (en) 2007-05-24
EP1955249A2 (en) 2008-08-13

Similar Documents

Publication Publication Date Title
JP2009521737A (ja) Javascriptプログラムの不安全動作安を検出するため、及び防止するための方法及び装置
US8266700B2 (en) Secure web application development environment
US8800042B2 (en) Secure web application development and execution environment
Stock et al. Precise client-side protection against {DOM-based}{Cross-Site} scripting
Lu et al. Blade: an attack-agnostic approach for preventing drive-by malware infections
KR101442654B1 (ko) 동작 샌드박싱용 시스템 및 방법
US9058489B2 (en) Marking documents with executable text for processing by computing systems
Kirda et al. Client-side cross-site scripting protection
US20100037317A1 (en) Mehtod and system for security monitoring of the interface between a browser and an external browser module
US11586726B2 (en) Secure web framework
Shalini et al. Prevention of cross-site scripting attacks (xss) on web applications in the client side
Yang et al. {Iframes/Popups} Are Dangerous in Mobile {WebView}: Studying and Mitigating Differential Context Vulnerabilities
Onarlioglu et al. Sentinel: Securing legacy firefox extensions
Satish et al. Web browser security: different attacks detection and prevention techniques
Saini et al. The darker side of firefox extension
Saini et al. Colluding browser extension attack on user privacy and its implication for web browsers
Hadpawat et al. Analysis of prevention of XSS attacks at client side
Raman JaSPIn: JavaScript based Anomaly Detection of Cross-site scripting attacks
Telikicherla et al. CORP: a browser policy to mitigate web infiltration attacks
Xuan et al. DroidPill: Pwn Your Daily-Use Apps
Jansen et al. Guidelines on active content and mobile code
Afonso et al. A hybrid framework to analyze web and os malware
Nayak et al. Exposing and Addressing Security Vulnerabilities in Browser Text Input Fields
Jain Survey on Web Browser and Their Extensions
Wu et al. Detection of Android Malware Behavior in Browser Downloads

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091104

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091104

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111213

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120410