(57)【要約】      （修正有）【課題】悪意のあるスクリプトの実行をブロックするシステム及び方法を提供する。【解決手段】方法は、クライアントからサーバへのスクリプトの要求を傍受する工程と、傍受したスクリプトのバイトコードを生成する工程と、生成されたバイトコードのハッシュ値を計算する工程と、バイトコードのハッシュ値と、データベースに保存されている悪意ある及びクリーンなスクリプトにおける複数のハッシュ値との間の類似度を決定する工程と、データベースから類似のハッシュ値を識別する工程と、識別されたハッシュ値とバイトコードのハッシュ値との類似度は、類似性の閾値の範囲内になり、類似のハッシュ値の信頼係数を決定する工程と、要求されたスクリプトが、類似度及び類似のハッシュ値の信頼係数に基づいて、悪意があるかどうかを決定する工程、とクライアントでの悪意あるスクリプトの実行をブロックする工程、を含む。【選択図】図２
2019023918.tif 000002
【特許請求の範囲】
【請求項１】
悪意あるスクリプトの実行をブロックするための方法であって、
前記方法は、
ハードウェアプロセッサによって、クライアントからサーバへのスクリプトの要求を傍受する工程と、
前記ハードウェアプロセッサによって、前記傍受したスクリプトのバイトコードを生成する工程と、
前記ハードウェアプロセッサによって、前記生成されたバイトコードのハッシュ値を計算する工程と、
前記ハードウェアプロセッサによって、前記バイトコードのハッシュ値と、データベースに保存されている、悪意ある及びクリーンなスクリプトにおける複数のハッシュ値との間の類似度を決定する工程と、
前記ハードウェアプロセッサによって、前記データベースから類似のハッシュ値を識別する工程であって、前記識別されたハッシュ値と前記バイトコードのハッシュ値との類似度は、類似性の閾値内にある、工程と、
前記ハードウェアプロセッサによって、前記類似のハッシュ値の信頼係数を決定する工程と、
前記ハードウェアプロセッサによって、前記要求されたスクリプトが、前記類似度と前記類似のハッシュ値の信頼係数に基づいて、悪意があるかどうかを決定する工程と、
前記ハードウェアプロセッサによって、前記クライアントでの悪意あるスクリプトの実行をブロックする工程を
備える方法。
【請求項２】
スクリプトの要求を傍受する工程は、前記クライアントに、ネットワークのスクリプト要求を傍受するように構成されたドライバを提供する工程を含む、請求項1に記載の方法。
【請求項３】
前記バイトコードは、前記スクリプトにおける少なくとも1つのオペコードを含む、
請求項1に記載の方法。
【請求項４】
前記スクリプトのバイトコードを生成する工程は、
前記ハードウェアプロセッサによって、ディスクへのデータの書き込み、ファイルシステムのオブジェクトの動作、及びプログラムの実行、の機能を担うスクリプトコマンドを識別する工程と、
前記ハードウェアプロセッサによって、前記識別されたスクリプトコマンドを、前記識別された機能に基づいて、複数の機能グループにグループ化する工程と、
前記ハードウェアプロセッサによって、各機能グループにバイナリの値を割り当てる工程と、
前記ハードウェアプロセッサによって、前記バイナリの値から前記バイトコードを生成する工程を含む、
請求項1に記載の方法。
【請求項５】
ハッシュ値は、ファジーハッシュを含む、請求項1に記載の方法。
【請求項６】
一致するハッシュ値を検索する手法は、ファジー検索を含む、請求項1に記載の方法。
【請求項７】
悪意あるスクリプトの実行をブロックするためのシステムであって、
前記システムは、ハードウェアプロセッサを備え、
前記ハードウェアプロセッサは、
クライアントからサーバへのスクリプトの要求を傍受し、
前記傍受したスクリプトのバイトコードを生成し、
前記生成されたバイトコードのハッシュ値を計算し、
前記バイトコードのハッシュ値と、データベースに保存されている悪意ある及びクリーンなスクリプトにおける複数のハッシュ値との間の類似度を決定し、
前記データベースから類似したハッシュ値を識別し、前記識別されたハッシュ値と前記バイトコードのハッシュ値との類似度は、類似性の閾値の範囲内にあり、
前記類似のハッシュ値の信頼係数を決定し、
前記要求されたスクリプトが、前記類似度及び前記類似のハッシュ値の信頼係数に基づいて、悪意があるかどうかを決定し、
前記クライアントでの悪意あるスクリプトの実行をブロックするように構成される、システム。
【請求項８】
スクリプトの要求の傍受は、
前記クライアントに、ネットワークスクリプト要求を傍受するように構成されたドライバを提供することを含む、請求項7に記載のシステム。
【請求項９】
前記バイトコードは、前記スクリプトにおける少なくとも1つのオペコードを含む、請求項7に記載のシステム。
【請求項１０】
前記スクリプトのバイトコードの生成は、
ディスクへのデータの書き込み、ファイルシステムのオブジェクトの動作及びプログラムの実行、の機能を担うスクリプトコマンドの識別と、
前記識別されたスクリプトコマンドの、前記識別された機能に基づく、複数の機能グループへのグループ分けと、
各機能グループへのバイナリの値の割り当てと、
前記バイナリの値からの前記バイトコードの生成を含む、請求項7に記載のシステム。
【請求項１１】
ハッシュ値は、ファジーハッシュを含む、請求項7に記載のシステム。
【請求項１２】
一致するハッシュ値の検索は、ファジー検索を含む、請求項7に記載のシステム。
【請求項１３】
悪意あるスクリプトの実行をブロックするためのコンピュータ実行可能命令を格納する非一時的なコンピュータ可読媒体であって、前記命令は、
クライアントからサーバへのスクリプトの要求を傍受する命令と、
前記傍受したスクリプトのバイトコードを生成する命令と、
前記生成されたバイトコードのハッシュ値を計算する命令と、
前記バイトコードの前記ハッシュ値と、データベースに保存されている悪意ある及びクリーンなスクリプトにおける複数のハッシュ値との間の類似度を決定する命令と、
前記データベースから類似のハッシュ値を識別する命令であってと、前記識別されたハッシュ値と前記バイトコードのハッシュ値との類似度が類似性の閾値内にある、命令と、
前記類似のハッシュ値の信頼係数を決定する命令と、
前記要求されたスクリプトが前記類似度と前記類似のハッシュ値の前記信頼係数に基づいて悪意があるかどうかを決定する命令と、
前記クライアントで前記悪意あるスクリプトの実行をブロックする命令と、
を含む、非一時的なコンピュータ可読媒体。
【請求項１４】
スクリプトの要求を傍受する命令は、
前記クライアントに、ネットワークスクリプト要求を傍受するように構成されたドライバを提供する命令を含む、
請求項13に記載の非一時的なコンピュータ可読媒体。
【請求項１５】
前記バイトコードが、前記スクリプトにおける少なくとも1つのオペコードを含む、請求項13に記載の非一時的なコンピュータ可読媒体。
【請求項１６】
前記スクリプトのバイトコードを生成する命令は、
前記ハードウェアプロセッサによって、ディスクへのデータの書き込み、ファイルシステムのオブジェクトの動作、プログラムの実行、の機能を担うスクリプトコマンドを識別する命令と
前記ハードウェアプロセッサによって、前記識別されたスクリプトコマンドを、前記識別された機能に基づいて、複数の機能グループにグループ化する命令と、
前記ハードウェアプロセッサによって、各機能グループにバイナリの値を割り当てる命令と、
前記ハードウェアプロセッサによって、前記バイナリの値から前記バイトコードを生成する命令を含む、
請求項13に記載の非一時的なコンピュータ可読媒体。
【請求項１７】
ハッシュ値は、ファジーハッシュを含む、請求項13に記載の非一時的なコンピュータ可読媒体。
【請求項１８】
一致するハッシュ値を検索する命令は、ファジー検索を含む、請求項13に記載の非一時的なコンピュータ可読媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
本開示は、米国特許法35 U.S.C. 119(a)-(d)に基づいて、2015年9月30日に出願されたロシア特許出願第2015141537についての優先権の利益を主張し、本明細書中に参考として援用する。
【技術分野】
【０００２】
本発明は、概して、コンピュータセキュリティの分野に関するものであり、さらに詳細には、スクリプトの実行をブロックするシステム及び方法である。
【０００３】
コンピュータ及び情報技術における活発な開発により、電子商取引、電子文書の転送、クラウドストレージ及び他のコンピュータ技術における日常生活の中での幅広い使用がユーザにもたらされる。例えば、かなりの数のユーザは、彼らの個人情報及び機密情報をコンピュータに格納し、圧倒的多数の企業は、電子デバイス及びサービスを通じて、金融及び商業活動を行っている。
【０００４】
上述のコンピュータ技術の普及により、今度は、ハッキングのために、それらが使用されるという実例が増加している。様々な悪意あるプログラム（マルウェアとしても知られる）が多数登場しており、それらによって影響を受けたコンピュータ・システムの数は大幅に増している。悪意あるプログラムには、コンピュータ・システムからユーザの個人情報及び機密データ（ログインとパスワード、銀行情報、電子文書など）を盗むものもあり、感染したコンピュータ・システムから、いわゆるボットネットを形成するものもあり、さらに、ユーザに有料サービスを課すものもある。
【０００５】
多くの様々なセキュリティ技術は、悪意あるプログラムからコンピュータを保護するために用いられる。例えば、アンチウイルスプログラム、ファイアウォール、侵入検知システム（IDS）等であり、それらは、効果的に悪意あるプログラムを検出、且つ、削除するということができるものである。悪意あるプログラムに感染したコンピュータを効果的に修復することは、ユーザにとって、より重要である一方、企業にとっては、コンピュータ・システムに感染する試みを検出する間の、高い操作効率と有効性が重要である。
【０００６】
大多数の既存のセキュリティ・ソリューションは、その振る舞い又は構造がすでに知られているマルウェアを検出し、除去することを主目的としている。したがって、コンピュータ・システムが、新しく、未知であり、又は難読化されたマルウェア（具体的には、悪意あるスクリプト）によって攻撃されたと気づいた場合、既存のセキュリティ・ソリューションでは効果が無い。
さらに、悪意ある複合プログラム（具体的には、悪意あるスクリプト）に感染したコンピュータ・システムを検出するというタスクには、既知のセキュリティ・ソリューションにおいて大きな問題も存在している。悪意ある複合プログラムは、すべてが悪意ある機能を搭載するものではないが、いくつかのファイルから構成されたものである。
【発明の概要】
【０００７】
悪意あるスクリプトの実行をブロックするためのシステム及び方法の例示的な態様を開示する。例示的な方法は、
ハードウェアプロセッサによって、クライアントからサーバへのスクリプトの要求を傍受する工程と、
ハードウェアプロセッサによって、傍受したスクリプトのバイトコードを生成する工程と、
ハードウェアプロセッサによって、生成されたバイトコードのハッシュ値を計算する工程と、
ハードウェアプロセッサによって、バイトコードのハッシュ値と、データベースに保存されている悪意ある及びクリーンなスクリプトにおける複数のハッシュ値との間の類似度を決定する工程と、
ハードウェアプロセッサによって、データベースから類似のハッシュ値を識別する工程であって、識別されたハッシュ値とバイトコードのハッシュ値との類似度は、類似性の閾値の範囲内にある、工程と、
ハードウェアプロセッサによって、類似のハッシュ値の信頼係数を決定する工程と、
ハードウェアプロセッサによって、要求されたスクリプトが、類似度及び類似のハッシュ値の信頼係数に基づいて、悪意があるかどうか、を決定する工程と、
ハードウェアプロセッサによって、クライアントでの悪意あるスクリプトの実行をブロックする工程を備えている。
【０００８】
１つの例示的態様で、スクリプトの要求を傍受する工程は、
クライアントに、ネットワークのスクリプト要求を傍受するように構成されたドライバを提供する工程を含む。
【０００９】
１つの例示的態様で、バイトコードは、スクリプトにおける少なくとも1つのオペコードを含む。
【００１０】
１つの例示的態様で、スクリプトのバイトコードを生成する工程は、
ハードウェアプロセッサによって、ディスクへのデータの書き込み、ファイルシステムのオブジェクトの動作、及びプログラムの実行、における機能を担うスクリプトのコマンドを識別する工程と、
ハードウェアプロセッサによって、識別されたスクリプトコマンドをそれらの識別された機能に基づいて複数の機能グループにグループ化する工程と、
ハードウェアプロセッサによって、各機能グループにバイナリの値を割り当てる工程と、
ハードウェアプロセッサによって、バイナリの値からバイトコードを生成する工程を含む。
【００１１】
１つの例示的態様で、ハッシュ値は、ファジーハッシュを含む。
【００１２】
１つの例示的態様で、一致するハッシュ値の検索には、ファジー検索を含む。
【００１３】
悪意あるスクリプトの実行をブロックする例示的なシステムは、
クライアントからサーバへのスクリプトの要求を傍受し、
傍受したスクリプトのバイトコードを生成し、
生成されたバイトコードのハッシュ値を計算し、
バイトコードのハッシュ値と、データベースに保存されている悪意ある及びクリーンなスクリプトにおける複数のハッシュ値との間の類似度を決定し、
データベースから類似のハッシュ値を識別し、識別されたハッシュ値とバイトコードのハッシュ値の類似度は、類似性の閾値の範囲内にあり、
類似のハッシュ値の信頼係数を決定し、
要求されたスクリプトが、類似度及び類似のハッシュ値の信頼係数に基づいて、悪意があるかどうかと決定し、
クライアントでの悪意あるスクリプトの実行をブロックするように構成される。
【００１４】
悪意あるスクリプトの実行をブロックするためのコンピュータ実行可能命令を格納している例示的な非一時的なコンピュータ可読媒体であり、
上記命令は、クライアントからサーバへのスクリプトの要求を傍受する命令と、
傍受したスクリプトのバイトコードを生成する命令と、
生成されたバイトコードのハッシュ値を計算する命令と、
バイトコードのハッシュ値と、データベースに保存されている悪意ある及びクリーンなスクリプトにおける複数のハッシュ値の間の類似度を決定する命令と、
データベースからの類似のハッシュ値を識別する命令であって、識別されたハッシュ値とバイトコードのハッシュ値の類似度は、類似性の閾値の範囲内にある、命令と、
類似のハッシュ値の信頼係数を決定する命令と、
要求されたスクリプトが、類似度及び類似のハッシュ値の信頼係数に基づいて、悪意があるかどうかを決定する命令と、
クライアントで悪意あるスクリプトの実行をブロックする命令
を含む。
【００１５】
本発明の例示的な態様の上記の簡単な概要は、本発明の基本的な理解を提供するのに役立つ。この概要は、すべての企図される態様の広範な概観ではなく、すべての態様の主要または重要な要素を特定することも、本発明における任意の範囲又はすべての態様を線引きすることも意図されていない。その唯一の目的は、以下の本発明のより詳細な説明の前置きとして簡略化された形式で、一つ又は複数の態様を提示することである。前述の達成のために、本発明の一つ又は複数の態様は、特許請求の範囲で説明され、特に指摘された特徴を含む。
【図面の簡単な説明】
【００１６】
添付図面は、本明細書に組み込まれ、本明細書の1モジュールを構成し、本発明の1つ又は複数の例示的態様を示し、詳細な説明と共に、それらの原理及び実装を説明するのに役立つ。
【図１】図1は、スクリプトの実行をブロックするための例示的なシステムを示す。
【図２】図2は、スクリプトの実行をブロックするための例示的な方法を示す。
【図３】図3は、本発明のシステム及び方法の様々な態様を実装するために使用することができるコンピュータ・システムの一例を示す。
【発明を実施するための形態】
【００１７】
本発明の例示的態様は、悪意あるスクリプトの実行をブロックするためのシステム、方法、及びコンピュータプログラム製品における説明で本明細書に記載されている。当業者は、以下の説明は単なる例示であり、いかなる方法においても限定されることを意図するものではないことを理解するであろう。他の態様は、本開示の利益を有する当業者に対して容易に示される。添付の図面に示されるように、参照は例示的態様の実装に対して以下で詳細に説明される。同じ参照指標が、同一または同様の項目を参照するために、図面全体と以下の説明を通じて、可能な限り使用される。
【００１８】
以下の説明で使用される定義及び概念には、初めから導入されるものもある。
【００１９】
悪意あるスクリプトは、コンピュータ又はコンピュータのユーザデータに害を引き起こすことが可能であるスクリプトかもしれない。引き起こされる害は、例えば、盗難目的として、コンピュータに保存されているデータを含むコンピュータリソースへの不正アクセスであるかもしれず、及び、データの保存、計算の実行等を含むリソースの不正使用もありえる。
【００２０】
信頼できるスクリプトとは、コンピュータ又はそのユーザに害を引き起こすことのないスクリプトでありえる。信頼できるスクリプトは、信頼できるソフトウェアの製造元によって開発され、信頼できるソース（信頼できるサイトのライブラリの一員であるサイト等）からダウンロードしたスクリプトであると考えることができる。又、そのスクリプトの識別子（スクリプトファイルのMD5等）は、信頼できるスクリプトのライブラリに格納されている。製造元の識別子（デジタル証明書等）も、信頼できるスクリプトのライブラリに格納することができる。
【００２１】
図1は、サーバからの、クライアント（クライアント - サーバのアーキテクチャにおける構成要素）によって要求された悪意あるスクリプトの実行をブロックするための例示的なシステムの図を示す。システムは、サーバ100、クライアント101、傍受モジュール110、バイトコード計算モジュール120、ハッシュ値計算モジュール130、検索モジュール140、解析モジュール150、評価作成モジュール160、ハッシュ値ライブラリ170、及び評価テンプレートライブラリ180を含む。
【００２２】
1つの例示的な態様で、サーバ100は、少なくともウェブサーバ（インターネットのページを含む）、又は、ファイルサーバ（スクリプトを含む）でありえる。様々な例示的な態様で、スクリプトは、JavaScript(登録商標)、VBScript等のスクリプト言語で書かれたプログラム、VBA言語（アプリケーション用のVisual Basic）で書かれ、且つ、電子的なMS Officeの文書等に配置されるプログラム、Java(登録商標)言語で書かれたプログラム、ActionScript言語で書かれたプログラム、を含むが、これらに限定されない。スクリプトは、JavaScript(登録商標)コード、VBScript等を含むインターネットページの形式で、サーバ100からクライアント101へ転送され、インターネットサイトからクライアントのブラウザへネットワークによって送信され、又は、（VBAコードを含むMS Office文書等の）ファイル形式で、ファイル・マネージャーから、ファイルで動作するアプリケーション（MS Office等）へ、API関数によって送信される。
【００２３】
1つの例示的な態様で、傍受モジュール110は、サーバ100からクライアント101によって要求されたスクリプトを傍受し、その傍受したスクリプトをバイトコード計算モジュール120に送信し、評価作成モジュール160が、その傍受したスクリプトが悪意あるとの決定のアナウンスがあった場合、その傍受したスクリプトの実行をブロックするように構成することができる。
【００２４】
1つの例示的な態様で、サーバ100からクライアント101へ送信されるスクリプトの傍受は、この目的のために特別に開発されたドライバを使用して行うことができ、クライアント101からドライバへのスクリプトの伝送路（例えば、データを受信するソースのアドレスを変更することによって）を再ルーティングするように構成することを含む。したがって、クライアント101によって要求され、サーバ100によって送信されるスクリプトは、クライアントではなく、ドライバにおいて終端されることになるだろう。例えば、オペレーティングシステムのAPI関数recvのコールを傍受するドライバは、ネットワークを介して送信されるデータの受信を担っており、着信する全ネットワークトラフィックを受信することができる。様々な例示的な態様では、スクリプトの実行をブロックする工程は、
対応するAPI関数のコールを傍受することによって、傍受したスクリプトの実行を防ぐ工程と、
予め用意した信頼できるスクリプトを実行することを意図したスクリプトに交換する工程と、
起動されたスクリプトによって要求された場所に、予め用意したデータを送信する工程、
を含むが、これらに限定されない。
【００２５】
1つの例示的な態様で、バイトコード計算モジュール120は、傍受したスクリプトのバイトコードを計算するように構成することができる。バイトコードは、傍受したスクリプトに含まれる少なくとも1つのコマンドから成るスクリプトコマンドのセット（オペコード）で構成されてもよい。バイトコード計算モジュール120は、その後、ハッシュ値計算モジュール130にバイトコードを送信する。
【００２６】
1つの例示的な態様で、傍受したスクリプトのバイトコードは、以下のように形成されてもよい。すべてのスクリプトシーケンスはスクリプトから選択される。予め指定された機能（ディスクへのデータの書き込み、ファイルシステムのオブジェクトの動作、アプリケーションの起動等）を実行していないいくつかのスクリプトコマンドは、選択されたシーケンスから移動させられる。選択されたシーケンスに残っているスクリプトコマンドは、少なくとも1つの各々のスクリプトコマンドを含むコマンドのグループに組み合される（例えば、ファイルへのデータの書き込み、ファイルの起動及びファイルの削除を担うスクリプトコマンドのシーケンスは1つのグループに組み合わされることができる）。各スクリプトコマンド又はスクリプトコマンドのグループは、固有の2バイト値が割り当てられる。2バイト値の得られたシーケンスは、計算されたバイトコードを構成する。
【００２７】
1つの例示的な態様で、ハッシュ値計算モジュール130は、算出されたバイトコードのハッシュ値を計算し、算出されたハッシュ値を検索モジュール140に送信するように構成することができる。バイトコードのハッシュ値は、ファジーハッシュ値を計算することによって算出できる。
データのファジーハッシュ値とは、ファジーハッシュ値が計算されるデータ領域とは別のデータ領域から計算されたハッシュ値のセットで構成されるものであり、及び、ファジー検索とは、データ構造（ユークリッド空間、ツリー空間、等の要素）を用いているセットにおいて、要素を検索する技術であり、任意の与えられた空間での比較的少ない数で、検索している要素に最も近いセットの要素を迅速に検索することができる。
【００２８】
1つの例示的な態様で、検索モジュール140は、
少なくとも1つのグループをハッシュ値ライブラリ170から選択し、
そのグループにある少なくとも1つのハッシュ値が、ハッシュ値計算モジュール130によって算出されたハッシュ値に対して、予め設定された類似性の閾値に対応する類似度を有し、
少なくとも1つの選択されたグループ及びその決定された類似度を解析モジュール150へ送信するように構成されている。
比較しているハッシュ値の類似度は、比較のハッシュ値が互いにどれほど類似しているかを特徴づける数値でありえ、ハッシュ値を比較する手段によって決定されることができる。
【００２９】
ハッシュ値の類似度は、少なくとも、
ファジーハッシュ値を比較する（つまり、ハッシュ値を計算するためのデータにおける類似度を特徴づける数値を計算する）こと、
ファジー検索メトリックを計算する（つまり、検索されるセットのSEEK要素とFIND要素の間の距離を計算する）こと、
によって計算することができる。
【００３０】
1つの例示的な態様で、解析モジュール150は、
少なくとも1つのグループを含む少なくとも1つの評価テンプレートを評価テンプレートライブラリ180から選択し、
検索モジュール140によって選択された少なくとも1つのグループに対する上記グループの類似度は、予め設定された閾値に対応しており、
評価テンプレートは、ハッシュ値ライブラリ170からの少なくとも1つのグループ、数値的な値である評価テンプレート信頼係数を含むデータセットから構成され、
及び、選択された評価テンプレートからの評価テンプレート信頼係数と計算された類似度を、評価作成モジュール160へ送信する、
ように構成されることができる。
【００３１】
1つの例示的な態様で、評価テンプレートの信頼係数は、0（与えられた評価テンプレートに含まれているグループを取得するために使用される全てのスクリプトが、悪意あることを意味する）から1（与えられた評価テンプレートに含まれるグループを取得するために使用される全てのスクリプトが、信頼できることを意味する）の数値でありえる。
【００３２】
1つの例示的な態様で、グループの類似度は、少なくとも、
多次元ベクトル（多次元ベクトルの要素は、グループに含まれるデータである）のベクター積を求めること、とファジー検索メトリックを計算することによって算出することができる。
【００３３】
1つの例示的な態様で、評価作成モジュール160は、
解析モジュール150から得られた少なくとも1つの評価テンプレート信頼係数及び検索モジュール140から得られた少なくとも1つのハッシュ値の類似度に基づいて、傍受モジュール110によって傍受したスクリプトが、悪意あるかについて決定し、
且つ、適切な判断を傍受モジュール110へ送信する、ように構成されている。
【００３４】
1つの例示的な態様で、傍受モジュール110によって傍受したスクリプトが悪意あるかについての決定をアナウンスすることは、解析モジュール150によって選択された少なくとも1つの評価テンプレート信頼係数とハッシュ値計算モジュール130によって計算された少なくとも1つのハッシュ値の類似度との積の平均値と、設定された閾値とを比較することによって成し遂げられる。
【００３５】
1つの例示的な態様で、ハッシュ値ライブラリ170は、データのセットを構成する少なくとも1つのグループを保存するように構成され、そのデータのセットは、悪意あるスクリプトのバイトコードから予め計算された少なくとも2つのハッシュ値、及び、そのグループに含まれる少なくとも2つのハッシュ値に対する少なくとも1つの類似度、を含む。
【００３６】
1つの例示的な態様で、評価テンプレートライブラリ180は、少なくとも1つの評価テンプレートを格納するように構成され、そのテンプレートは、ハッシュ値ライブラリ170からの少なくとも1つのグループと、数値的な値である評価テンプレート信頼係数を含むデータのセットである。
【００３７】
1つの例示的な態様で、評価テンプレートライブラリ180からの評価テンプレートは、ハッシュ値ライブラリ170からのすべてのグループをまとめて包含することができる。
【００３８】
スクリプトの実行をブロックするための上述のシステムの動作は、電子的なMS Word文書に含まれる悪意あるスクリプトをブロックする例に基づいて、次に説明されるだろう。MS Wordプロセッサを起動しているクライアント101を使用しているユーザは、ファイル・マネージャーを起動しているサーバ100から、VBA言語で記述された悪意あるスクリプトを含む電子文書c：\ mydoc.docxの受信を試みる。傍受モジュール110は、ファイル・マネージャーのドライバであって、開かれた文書のスクリプトを傍受し、それをバイトコード計算モジュール120に送る。スクリプトを傍受することは、オペレーティングシステムのAPI関数CreateFile、ReadFile 等のコールを傍受するドライバによって成され、それらは、ファイル・マネージャーから受信したデータに対して責任を担っている。
【００３９】
バイトコード計算モジュール120は、傍受したスクリプトのバイトコードを計算する。このために、すべてのスクリプトコマンドのシーケンスは、傍受したスクリプトから選択される。スクリプトコマンドのモジュールのいくつかは、ディスクへのデータの書き込み、ファイルシステムのオブジェクトの動作、アプリケーションの起動等、についての機能的責任に対して責任を担っておらず、選択されたシーケンスから移動させられる。
選択されたシーケンスに残っているスクリプトコマンドは、コマンドのグループに組み込まれる（例えば、ファイルへデータを書き込み、ファイルの起動、及び、ファイルの削除、を担っているスクリプトコマンドのシーケンスは1つのグループに組み込まれる）ことになる。各スクリプトコマンド又はスクリプトコマンドのグループは、固有の2バイトの値を割り当てられる。2バイトの値の得られたシーケンスは、算出されたバイトコードで構成される。
【００４０】
ハッシュ値計算モジュール130は、（例えば、オープンソースアルゴリズムfuzzyHashを使用して）受信したバイトコードからファジーハッシュ値を計算する。
ファジーハッシュ値は、ブロックのサイズ（バイトコードが、そのブロックに分割されている）とこれらのブロックのハッシュ値を含むデータのセットである。この後、ハッシュ値計算モジュールは、算出されたハッシュ値を検索モジュール140へ送信する。
【００４１】
検索モジュール140は、ハッシュ値ライブラリ170からハッシュ値におけるグループの選択を行い、グループは、悪意あるスクリプトのバイトコードにおける予め計算されたハッシュ値、そのグループに含まれるハッシュ値の間の類似度を含むデータのセットで構成される。
【００４２】
ハッシュ値ライブラリ170からの選択の過程で、ハッシュ値ライブラリ170に含まれる各グループのハッシュ値と、ハッシュ値計算モジュール130から受信したハッシュ値とのファジー比較（ファジー検索）が行われる。
2つのハッシュ値のファジー比較の結果は、0から1の範囲の数値である。それは、比較のハッシュ値が互いにどれほど類似しているかを示し、2つのハッシュ値の類似度として知られるものである（例えば、お互いに10％の差異があるスクリプトコマンドを含むスクリプトのバイトコードから計算されたファジーハッシュ値の類似性は、0.9と等しくなるだろう）。
比較対象であるグループの少なくとも1つのハッシュ値とハッシュ値計算モジュール130から得られたハッシュ値との類似度が、設定された閾値（例えば、0.85）より大きい場合、そのグループが発見されたと見なされ、ハッシュ値計算モジュール130から得られたハッシュ値は、比較対象であるグループに属する。この後、選択されたグループと決定された類似度は、解析モジュール150へ送られる。ハッシュ値ライブラリ170にあるグループも更新され、ハッシュ値計算モジュール130から得られたハッシュ値は、選択されたグループに追加される。更新されたグループが、より多くの悪意あるスクリプトのハッシュ値を含むことになるので、これによって、後に傍受されるスクリプトに対するグループ検索の精度が増す。ファイルc：\mydoc.docxから傍受したスクリプトに対して、以下の機能を備えるスクリプトのハッシュ値を含んだグループが選択された。
・グループ＃1-ディスクへの書き込み及びファイルの属性の設定（類似度0.98）。
・グループ＃2 - タスクマネージャーのブロック、タスクバーを隠す（類似度0.95）。
・グループ＃3 - ファイルの削除（類似度0.90）。
・グループ＃4 - VBA手段を使用して、Windowsのウィンドウの作成（類似度0.87）。
選択されたグループは、解析モジュール150に送られる。
【００４３】
解析モジュール150は、評価テンプレートライブラリ180から評価テンプレート（検索モジュール140から受け取ったグループを含むテンプレート）の選択を実行する。選択プロセスにおいて、どのグループが評価テンプレートライブラリ180の各評価テンプレートに含まれているのか、及び、それらが検索モジュール140から受け取ったグループにどれほど類似しているかについて決定がなされる。用いられる比較の手法は、ファジー検索アルゴリズムであってもよく、その結果は、0から1の範囲の数値となる。それは、比較するグループのセットが互いにどれほど類似しているかを特徴づけるものであり、2つのグループのセットの類似度として知られるものである。検索モジュール140から受け取ったグループに対して、以下の評価テンプレートが選択された。
・テンプレート＃1"blocker"：テンプレート信頼係数0.1であり、グループ＃1（類似度1.0）、グループ＃2（類似度1.0）、グループ＃3（類似度0.9）を含む。
・テンプレート＃2"cryptor"：テンプレート信頼係数0.3であり、グループ＃1（類似度0.7）、グループ＃3（類似度1.0）、グループ＃4（類似度0.95）を含む。
選択された評価テンプレートのテンプレート信頼係数は、検索モジュール140によって選択されるグループと同様に、評価作成モジュールに送られる。
【００４４】
評価作成モジュール160は、受け取った信頼係数（"blocker"評価テンプレートでは0.1）から、選択されたテンプレートに含まれるグループでのハッシュ値における最小の類似度（0.9）を選び、信頼係数と類似度の積（0.09）を計算する。生成された値を最大の許容値（0.2等）と比較した後、傍受したスクリプトは悪意がありブロックされるべきであるという評価をアナウンスし、そして、傍受したスクリプトをブロックするために傍受モジュール110へその決定を送る。この後、傍受モジュール110は、どんなアクションも実行しない空白のスクリプトに取り替えられ、それは、Microsoft Wordの文書における正確な動作に対してのみ必要とされるものである。それによって、傍受したスクリプトをブロックすること、及び、ユーザのコンピュータ・システムで悪意あるスクリプトの実行を阻むことになる。
【００４５】
図2は、スクリプトの実行をブロックする例示的な方法を示す。ステップ210で、サーバ100からクライアント101によって要求された少なくとも1つのスクリプトは、傍受モジュール110によって傍受される。ステップ220で、傍受したスクリプトのバイトコードは、バイトコード計算モジュール120によって計算される。ステップ230で、バイトコードのハッシュ値は、ハッシュ値計算モジュール130によって計算される。ステップ240で、少なくとも1つのグループが選択モジュール140によってハッシュ値ライブラリ170から選択され、そのグループにある少なくとも1つのハッシュ値と、ステップ230で計算されたハッシュ値との類似度は、予め設定された類似性の閾値に対応しているものである。ステップ250で、少なくとも1つの評価テンプレートが、解析モジュール150によって、評価テンプレートライブラリ180から選択される。そのテンプレートは、少なくとも1つのグループを含み、そのグループにおける検索モジュール140で選択された少なくとも1つのグループとの類似度が、設定された閾値に対応している。ステップ260で、ステップ250で選択された少なくとも1つの評価テンプレート信頼係数と、ステップ240で決定された少なくとも1つのハッシュ値の類似度に基づいて、ステップ210で傍受したスクリプトが悪意あるかについての決定が評価作成モジュール160によって成される。ステップ270で、ステップ210で傍受したスクリプトは、傍受スクリプトの悪意性に関する評価作成モジュール160による決定に従って、傍受モジュール110によってブロックされる。
【００４６】
スクリプトの実行をブロックするための上述の方法における動作は、ブラウザを用いるユーザの視覚に入るウェブサイトのページに含まれる悪意あるスクリプトをブロックするという例に基づいて、次に説明されるだろう。Internet Explorerブラウザを実行しているクライアント101を介して、ユーザは、ページを開くという試みをする。例えば、サイトhttp://tasianits.comであるサーバ100からインターネットのページを受信するものであり、それは、ActiveX を用いてJavaScript(登録商標)言語で書かれた悪意あるスクリプトを含むものである。
【００４７】
ステップ210で、傍受モジュール110は、開いている文書のスクリプトを傍受し、バイトコード計算モジュール120に送信する。
【００４８】
ステップ220で、バイトコード計算モジュール120は、傍受したスクリプトのバイトコードを計算する。このために、ユーザのコンピュータ・システムと相互にやりとりするという動作（ディスクへの書き込み等）と関連がある動作のコマンドが、傍受スクリプトから選択される。選択された各動作は、2バイト（いわゆるバイトコード）の識別子が割り当てられており、バイトシーケンスは、結果として得られた識別子（バイトコードを構成している識別子）から作られる。その後、バイトコード計算モジュール120は、算出されたバイトコードをハッシュ値計算モジュール130に送信する。
【００４９】
ステップ230で、ハッシュ値計算モジュール130は、受信したバイトコードから（例えば、オープンソースのアルゴリズムfuzzyHashを利用して）ファジーハッシュ値を計算し、ファジーハッシュ値は、ブロックのサイズ（バイトコードはハッシュ値を計算するためにそのサイズに分割される）を特徴づける番号、及び、バイトコードから計算された2つのハッシュ値を含むデータのセットである。この後、算出されたハッシュ値を、検索モジュール140へ送る。
【００５０】
ステップ240で、検索モジュール140は、ハッシュ値ライブラリ170からハッシュ値のグループを選択する。このために、ハッシュ値ライブラリ170に含まれる各グループのハッシュ値と、ハッシュ値計算モジュール130から受信したハッシュ値とのファジー比較が行われる。
2つのハッシュ値のファジー比較の結果は、0から1の範囲の数値である。それは、比較のハッシュ値が互いにどれほど類似しているかを示し、2つのハッシュ値の類似度として知られるものである。
比較対象であるグループの少なくとも1つのハッシュ値とハッシュ値計算モジュール130から得られたハッシュ値との類似度が、設定された閾値（例えば、0.5）より大きい場合、そのグループが発見されたと見なされ、ハッシュ値計算モジュール130から得られたハッシュ値は、比較対象であるグループに属する。この後、選択されたグループと決定された類似度は、解析モジュール150へ送られる。ハッシュ値ライブラリ170にあるグループも更新される。ハッシュ値計算モジュール130から得られたハッシュ値は、選択されたグループに追加される。これによって、後に傍受されるスクリプトに対するグループ検索の有効性が増す。サイトhttp://tasianits.comから傍受したスクリプトの場合には、以下の機能を備えるスクリプトのハッシュ値を含んだグループが選択された。
・グループ＃1 - ディスクへの書き込み、ユーザのコンピュータ・システムでのファイルの実行（類似度0.7）
・グループ＃2 - ActiveXの脆弱性を利用した動作のセット（類似度1.0）
【００５１】
ステップ250では、解析モジュール150は、評価テンプレートライブラリ180から評価テンプレートを選択し、上記テンプレートは、検索モジュール140から受け取ったグループを含む。
これによって、どのグループが評価テンプレートライブラリ180からの各評価テンプレートに含まれているのか、及び、それらが検索モジュール150から受け取ったグループにどれほど類似しているかについて決定がなされる。用いられる比較の手法は、ファジー検索アルゴリズムをであってもよく、その結果は、0から1の範囲の数値となる。それは、比較するグループのセットが互いにどれほど類似しているかを特徴づけるけるものであり、2つのグループのセットの類似度として知られるものである。検索モジュール140から受け取ったグループに対して、以下の評価テンプレートが選択された。
テンプレート＃1 "injector"：テンプレート信頼係数0.0、グループ＃1（類似度1.0）、＃2（類似度1.0）を含む。選択された評価テンプレートのテンプレート信頼係数は、評価作成モジュール160に送られる。
【００５２】
ステップ260では、評価作成モジュール160は、受け取ったテンプレートの信頼係数と類似度に基づいて、信頼係数（0.0）と類似性（0.85）の積を計算する。その後、最大の許容値（0.15）と生成された値を比較し、傍受したスクリプトは悪意がありブロックされるべきであるという評価をアナウンスし、傍受したスクリプトをブロックするために傍受モジュール110へその決定を送る。
【００５３】
この後、ステップ270で、傍受モジュールは、傍受スクリプトをブロックし、それによって、ユーザのコンピュータ・システムで悪意あるスクリプトの実行をさせない。
【００５４】
図3は、例示的態様に係る、開示されたシステム及び方法が実装されることができる、汎用コンピュータ・システム（パーソナルコンピュータ又はサーバであってもよい）の例である。
示されるように、コンピュータ・システムは、中央処理ユニット21、システムメモリ22及びシステムバス23を含み、システムバスは、様々なシステムコンポーネント（中央処理ユニット21に付随するメモリを含む）に接続している。システムバス23は、先行文献で知られている任意のバス構造のように実現され、順にバスメモリ又はバスメモリコントローラ、周辺バス、及びローカルバスを含み、それは、任意の他のバスアーキテクチャと相互作用することができる。システムメモリは、読み出し専用メモリ（ROM）24及びランダムアクセスメモリ（RAM）25を含む。基本入出力システム（BOIS）26は、パーソナルコンピュータ20の要素間で情報の転送を保証する基本的な手順を含み、ROM24を使用してオペレーティングシステムをロードする時にも同様である。
【００５５】
パーソナルコンピュータ20は、順に、データの読み書き用ハードディスク27、リムーバブル磁気ディスク29への読み書き用磁気ディスクドライブ28、及び、リムーバブル光ディスク31（CD-ROM、DVD-ROM又は他の光情報媒体等）への読み書き用光ドライブ30を含む。ハードディスク27、磁気ディスクドライブ28、及び光ドライブ30は、それぞれ、ハードディスクインターフェース32、磁気ディスクインタフェース33及び光ドライブインターフェース34を介してシステムバス23に接続されている。ドライブ及び対応するコンピュータ情報媒体は、パーソナルコンピュータ20のコンピュータ命令、データ構造、プログラムモジュール、及びその他のデータにおける記憶装置に対して電力独立型モジュールである。
【００５６】
本開示は、ハードディスク27、リムーバブル磁気ディスク29及びリムーバブル光ディスク31を使用するシステムの実装を提供するが、コンピュータによって読み取り可能な形式でデータを格納することができる他の型のコンピュータ情報媒体56（ソリッドステートドライブ、フラッシュメモリカード、デジタルディスク、ランダムアクセスメモリ（RAM）等）を使用することも可能であることが理解されるべきであり、それらは、コントローラ55を介してシステムバス23に接続される。
【００５７】
コンピュータ20は、ファイルシステム36を有し、そこには記録されたオペレーティングシステム35が保持され、及び、追加プログラムアプリケーション37、他のプログラムモジュール38及びプログラムデータ39、もまた同様である。
ユーザは、入力デバイス（キーボード40、マウス42）で、パーソナルコンピュータ20に、コマンドと情報を入力することができる。他の入力デバイス（図示せず）として、マイクロホン、ジョイスティック、ゲームコントローラ、スキャナ等を用いることができる。そのような入力デバイスは、通常、シリアルポート46を介してコンピュータ・システム20に接続され、それは、順番に、システムバスに接続される。それらは、他の方法（例えば、パラレルポート、ゲームポート、又はユニバーサルシリアルバス（USB））を用いて接続できる。モニター47又は他の型の表示デバイスもまた、ビデオアダプタ48などのインターフェースを介してシステムバス23に接続される。モニター47に加えて、パーソナルコンピュータは、ラウドスピーカー、プリンター等の他の周辺出力デバイス（図示せず）を搭載することができる。
【００５８】
パーソナルコンピュータ20は、1つ又は複数のリモートコンピュータ49を用いて、ネットワーク環境で作業することができる。リモートコンピュータ（複数可）49も、前述の要素の大モジュール分又は全てを有するパーソナルコンピュータ又はサーバであり、その要素は、パーソナルコンピュータ20の本質を示している。ルータ、ネットワーク局、ピアデバイスまたは他のネットワークノード等、他のデバイスも、コンピュータネットワークに存在できる。
【００５９】
ネットワーク接続は、有線及び/または無線ネットワーク等のローカルエリアコンピュータネットワーク（LAN）50、及びワイドエリアコンピュータネットワーク（WAN）を生成することができる。このようなネットワークは、企業コンピュータネットワークと社内ネットワークで使用されており、これらは一般的にインターネットへのアクセス権を有している。LANまたはWANネットワークでは、パーソナルコンピュータ20は、ネットワークで使用しているネットワークアダプタまたはネットワークインタフェース51を介してローカルエリアネットワーク50に接続される。ネットワークが用いられる場合、パーソナルコンピュータ20は、インターネットのようなワイドエリアコンピュータネットワークとの通信を提供するため、モデム54または他のモジュールを使用する。モデム54は、内モジュールまたは外モジュールデバイスであり、シリアルポート46によってシステムバス23に接続される。ネットワーク接続は、単なる例であり、ネットワークの正確な構成を示す必要はないことに留意すべきである。すなわち、現実には技術的な通信モジュールによる他のコンピュータの接続を確立する他の方法がある。
【００６０】
様々な態様において、本明細書で説明するシステム及び方法は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせで実装することができる。ソフトウェアで実装する場合、その方法は、非一時的なコンピュータ可読媒体の1つまたは複数の命令またはコードとして格納されることができる。コンピュータ可読媒体は、データ記憶を含む。コンピュータ可読媒体を以下に例示するが、限定するものではない。コンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROM、フラッシュメモリ、又は、他の型の電気的、磁気的、または光記憶媒体、又は他の任意の媒体、を備えることができ、命令またはデータ構造の形で所望のプログラムコードを搬送又は格納するために用いられ、汎用コンピュータのプロセッサによってアクセスすることができる。
【００６１】
様々な態様では、システム及び方法は、モジュールの観点から、本開示で説明される。本明細書で使用される用語「モジュール」とは、現実世界のデバイス、コンポーネント、または、ハードウェアを用いて実装されたコンポーネントの配置を言及しており、例えば、または、ハードウェアとソフトウェアの組み合わせとして、特定用途向け集積回路（ASIC）またはフィールド・プログラマブル・ゲート・アレイ（FPGA）などによって実装され、モジュールの機能を実装するマイクロプロセッサシステムと命令セットなどによって、（実行される間に）マイクロプロセッサシステムを専用のデバイスに変換される。モジュールも、2つの組合せとして実装されることができ、ハードウェアだけによって容易とされる特定の機能、及び、ハードウェアとソフトウェアの組み合わせによって容易とされる他の機能と、これらの組み合わせとして実現することができる。特定の実施態様では、少なくとも一部のモジュール、及びいくつかのケースでは、モジュールのすべては、（例えば、図3で詳細に説明したもののように）汎用コンピュータのプロセッサで実行することができる。したがって、各モジュールは、適切な様々な構成で実現することができ、そして本明細書中に任意の例示的な実施形態に限定されるものではない。
【００６２】
明瞭にするために、態様のルーチン機能のすべてが、本明細書に開示されているわけではない。本開示における任意の実際の実装における開発で、多数の実装固有の判断が、開発者の特定の目標を達成するためになされなければならないことが理解されるであろう。さらに、これらの具体的な目標は、異なる実装及び異なる開発者に対して変化することが理解されるであろう。そのような開発努力は複雑で時間がかかるかもしれないが、それでも本開示の利益を有する当業者にとっては、エンジニアリングの日常の仕事であると理解されるであろう。
【００６３】
さらに、本明細書で使用される用語又は表現は、説明のためであり、制限するものではなく、つまり、関連技術の熟練の知識と組み合わせて、本明細書の用語または表現は、ここに示される教示及び指針に照らして当業者によって解釈されるべきであることが理解されるべきである。明示的な記載がない限り、明細書または特許請求の範囲内で、任意の用語に対して、珍しいまたは特別な意味を帰することは意図されていない。本明細書で開示された様々な態様は、例示のために本明細書に言及した既知のモジュールの、現在及び将来の既知の均等物を包含する。さらに、態様及び用途を示し、説明してきたが、本明細書に開示された発明の概念から逸脱することなく、上述したよりも多くの改変が可能であることが、この開示の利益を有する当業者には明らかであろう。
【図１】
2019023918.tif 000003
【図２】
2019023918.tif 000004
【図３】
2019023918.tif 000005
【手続補正書】
【提出日】平成30年11月9日(2018.11.9)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
悪意あるスクリプトの実行をブロックするための方法であって、
前記方法は、
ハードウェアプロセッサによって、クライアントからサーバへのスクリプトの要求を傍受する工程と、
前記ハードウェアプロセッサによって、前記傍受したスクリプトのバイトコードを生成する工程と、
前記ハードウェアプロセッサによって、前記生成されたバイトコードのハッシュ値を計算する工程と、
前記ハードウェアプロセッサによって、前記バイトコードのハッシュ値と、データベースに保存されている、悪意ある及びクリーンなスクリプトにおける複数のハッシュ値との間の類似度を決定する工程と、
前記ハードウェアプロセッサによって、前記データベースから類似のハッシュ値を識別する工程であって、前記識別されたハッシュ値と前記バイトコードのハッシュ値との類似度は、類似性の閾値内にある、工程と、
前記ハードウェアプロセッサによって、前記類似のハッシュ値の信頼係数を決定する工程と、
前記ハードウェアプロセッサによって、前記要求されたスクリプトが、前記類似度と前記類似のハッシュ値の信頼係数に基づいて、悪意があるかどうかを決定する工程と、
前記ハードウェアプロセッサによって、前記クライアントでの悪意あるスクリプトの実行をブロックする工程を備える方法。
【外国語明細書】
2019023918000001.pdf