(57)【要約】  システムおよび方法は、悪意呼を軽減する例示的な実施形態にて提供される。システムは、関数呼び出しを受信し、関数呼び出しを開始したメモリページの位置を決定し、メモリページが信頼されたモジュールと関連するかどうか決定し、メモリページが信頼されたモジュールと関連しない場合、関数呼び出しをブロックするように構成することができる。また、システムは、関数呼び出し用のリターンアドレスを決定し、リターンアドレスが信頼されたモジュールに属さない場合、関数呼び出しをブロックすることができる。さらに、システムは、関数呼び出し用のパラメータを決定し、パラメータが関数を呼び出したプロセスによって使用された既知のパラメータであるかどうか決定し、パラメータが関数を呼び出したプロセスによって使用された既知のパラメータではない場合、関数呼び出しをブロックすることができる。
2017522637.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのプロセッサによって実行された場合、
関数用の関数呼び出しを受信し、
前記関数呼び出し用のリターンアドレスを決定し、
前記リターンアドレスが信頼されたモジュールに属さない場合、前記関数呼び出しをブロックする
１または複数の命令を備える少なくとも１つのコンピュータ可読媒体。
【請求項２】
前記少なくとも１つのプロセッサによって実行される場合、
前記リターンアドレスが前記信頼されたモジュールに属する場合、前記関数呼び出しを許可する前記１または複数の命令をさらに備える、
請求項１に記載の少なくとも１つのコンピュータ可読媒体。
【請求項３】
前記少なくとも１つのプロセッサによって実行された場合
前記関数呼び出しを開始したメモリページの位置を決定し、
前記メモリページが複数の信頼されたモジュールの１つと関連するかどうか決定し、
前記メモリページが複数の信頼されたモジュールの１つと関連しない場合、前記関数呼び出しをブロックする１または複数の命令をさらに備える、
請求項１または２に記載の少なくとも１つのコンピュータ可読媒体。
【請求項４】
前記少なくとも１つのプロセッサによって実行された場合、
前記メモリページが前記複数の信頼されたモジュールのうちの１つと関連する場合、前記関数呼び出しを許可する１または複数の命令をさらに備える
請求項３に記載の少なくとも１つのコンピュータ可読媒体。
【請求項５】
前記少なくとも１つのプロセッサによって実行された場合、
前記関数呼び出し用のパラメータを決定し、
前記パラメータが、前記関数を呼び出したプロセスによって使用された既知のパラメータであるかどうか決定し、
前記パラメータが前記関数を呼び出したプロセスによって使用された前記既知のパラメータではない場合、前記関数呼び出しをブロックする１または複数の命令をさらに備える
請求項１から４のいずれか一項に記載の少なくとも１つのコンピュータ可読媒体。
【請求項６】
前記少なくとも１つのプロセッサによって実行された場合、
前記パラメータが前記関数を呼び出したプロセスによって使用された前記既知のパラメータである場合、前記関数呼び出しを許可する１または複数の命令をさらに備える
請求項５に記載の少なくとも１つのコンピュータ可読媒体。
【請求項７】
前記関数がセキュリティプログラムによって呼び出される、請求項１から６のいずれか一項に記載の少なくとも１つのコンピュータ可読媒体。
【請求項８】
前記信頼されたモジュールがセキュリティプログラムの一部である、請求項１から７のいずれか一項に記載の少なくとも１つのコンピュータ可読媒体。
【請求項９】
関数用の関数呼び出しを受信し、
前記関数呼び出しを開始したメモリページの位置を決定し、
前記メモリページが信頼されたモジュールと関連するかどうか決定し、
前記メモリページが前記信頼されたモジュールと関連しない場合、前記関数呼び出しをブロックする、
ように構成されたセキュリティプログラムインターフェースモジュールを備える
装置。
【請求項１０】
前記関数呼び出しが、前記メモリページが前記信頼されたモジュールと関連する場合許可される、請求項９に記載の装置。
【請求項１１】
リターンアドレスが前記関数呼び出しに対して決定され、前記リターンアドレスが複数の信頼されたモジュールのうちの１つに属さない場合、前記関数呼び出しはブロックされる、請求項９または１０に記載の装置。
【請求項１２】
前記関数呼び出しが、前記リターンアドレスが前記複数の信頼されたモジュールのうちの１つに属する場合許可される、請求項１１に記載の装置。
【請求項１３】
前記関数呼び出し用のパラメータが決定され、前記パラメータが前記関数を呼び出したプロセスによって使用された既知のパラメータではない場合、前記関数は、ブロックされる、請求項９から１２のいずれか一項に記載の装置。
【請求項１４】
前記パラメータが前記関数を呼び出した前記プロセスによって使用された前記既知のパラメータである場合、前記関数呼び出しが許可される、請求項１３に記載の装置。
【請求項１５】
前記関数が、セキュリティプログラムによって呼び出される、請求項９から１４のいずれか一項に記載の装置。
【請求項１６】
前記信頼されたモジュールが、前記セキュリティプログラムの一部である、請求項９から１５のいずれか一項に記載の装置。
【請求項１７】
関数用の関数呼び出しを受信する段階と、
前記関数呼び出し用のパラメータを決定する段階と、
前記パラメータが前記関数を呼び出したプロセスによって使用された既知のパラメータであるかどうか決定する段階と、
前記パラメータが前記関数を呼び出した前記プロセスによって使用された前記既知のパラメータではない場合、前記関数呼び出しをブロックする段階と
を備える方法。
【請求項１８】
前記パラメータが前記関数を呼び出した前記プロセスによって使用された前記既知のパラメータである場合、前記関数呼び出しを許可する段階をさらに備える請求項１７に記載の方法。
【請求項１９】
前記関数呼び出し用の前記リターンアドレスを決定する段階と、
前記リターンアドレスが信頼されたモジュールに属さない場合、前記関数呼び出しをブロックする段階と
をさらに備える請求項１７または１８に記載の方法。
【請求項２０】
前記リターンアドレスが前記信頼されたモジュールに属する場合、前記関数呼び出しを許可する段階と
をさらに備える請求項１９に記載の方法。
【請求項２１】
前記関数呼び出しを開始したメモリページの位置を決定する段階と、
前記メモリページが信頼されたモジュールと関連するかどうか決定する段階と、
前記メモリページが前記信頼されたモジュールと関連しない場合、前記関数呼び出しをブロックする段階と
をさらに備える請求項１７から２０のいずれか一項に記載の方法。
【請求項２２】
前記メモリページが前記信頼されたモジュールと関連する場合、前記関数呼び出しを許可する段階をさらに備える、請求項２１に記載の方法。
【請求項２３】
前記関数がセキュリティプログラムによって呼び出され、前記信頼されたモジュールが前記セキュリティプログラムの一部である、請求項２２に記載の方法。
【請求項２４】
悪意呼を軽減するシステムであって、前記システムは、
関数呼び出しを受信し、
前記関数呼び出し用の前記リターンアドレスを決定し、
前記リターンアドレスが信頼されたモジュールに属さない場合、前記関数呼び出しをブロックする、ために構成された、
セキュリティプログラムインターフェースモジュールを備えるシステム。
【請求項２５】
リターンアドレスが前記関数呼び出しに対して決定され、前記リターンアドレスが複数の信頼されたモジュールのうちの１つに属さない場合、前記関数呼び出しはブロックされる、請求項２４に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
この開示は、概して情報セキュリティの分野に関し、より詳しくは、悪意呼の軽減に関する。
【背景技術】
【０００２】
ネットワークセキュリティの分野は、今日の社会においてますます重要になってきている。インターネットにより、世界中の様々なコンピュータネットワークを相互接続することが可能となってきている。特に、インターネットは、様々なタイプのクライアントデバイスを経由して異なるコンピュータネットワークに接続される異なるユーザ間のデータをやりとりする媒体を提供する。インターネットの使用が、ビジネスおよび個人の通信を変容させてきた一方で、インターネットは、コンピュータおよびコンピュータネットワークへの不正アクセスを得ようとする悪意のあるオペレータのための、および機密情報の故意または不慮の開示のための手段としても使用されている。
【０００３】
ホストコンピュータを感染させる悪意のあるソフトウェア（「マルウェア」）は、そのホストコンピュータに関連するビジネスまたは個人からの機密情報を盗む、他の複数のホストコンピュータに伝播する、および／または複数の分散型サービス妨害攻撃を手助けする、ホストコンピュータからのスパムまたは悪意のある電子メールを送出するなどの、任意数の悪意のある動作を実行することが可能であり得る。したがって、悪意のあるソフトウェアによる悪意のある、不注意な搾取からコンピュータおよびコンピュータネットワークを保護するための重要な管理問題が、残っている。
【図面の簡単な説明】
【０００４】
本開示とそれの特徴および効果についてのより完全な理解を提供するために、添付図面とともに考慮して、以下の説明を参照する。本明細書で、同様の参照符号は、同様の部分を表す。
【０００５】
【図１】本開示の一実施形態による悪意呼を軽減するための通信システムの簡略化されたブロック図である。
【０００６】
【図２】一実施形態による通信システムと関連し得る潜在的なオペレーションを図示する簡略化されたフローチャートである。
【０００７】
【図３】一実施形態による通信システムと関連し得る潜在的なオペレーションを図示する簡略化されたフローチャートである。
【０００８】
【図４】一実施形態による通信システムと関連し得る潜在的なオペレーションを図示する簡略化されたフローチャートである。
【０００９】
【図５】一実施形態による通信システムと関連し得る潜在的なオペレーションを図示する簡略化されたフローチャートである。
【００１０】
【図６】一実施形態による通信システムと関連し得る潜在的なオペレーションを図示する簡略化されたフローチャートである。
【００１１】
【図７】一実施形態によるポイントツーポイント構成に配置された例示的なコンピューティングシステムを図示するブロック図である。
【００１２】
【図８】本開示の例示的なＡＲＭエコシステムのシステムオンチップ（ＳＯＣ）と関連する簡略化されたブロック図である。
【００１３】
【図９】一実施形態による例示的なプロセッサコアを図示するブロック図である。
【発明を実施するための形態】
【００１４】
［例示的な実施形態］
図１は、悪意呼を軽減する通信システム１００の簡略化されたブロック図である。通信システム１００は、電子デバイス１１０、ネットワーク１１２およびセキュリティサーバ１３２を含むことができる。電子デバイス１１０は、セキュリティプログラム１２２およびオペレーティングシステム１３６を含むことができる。セキュリティプログラム１２２は、１または複数のセキュリティモジュール１２４ａ−ｃ、パラメータ１２６、ダイナミックリンクライブラリ１２８、プログラム関数１３０およびセキュリティプログラムインターフェースモジュール１３８を含むことができる。各セキュリティモジュール１２４ａ−ｃは、既知または信頼されたセキュリティモジュールとなり得、メモリページ１３２ａ−ｃを含むことができる。オペレーティングシステムは、オペレーティングシステムスタック１１８およびオペレーティングシステム関数１２０を含むことができる。セキュリティプログラムインターフェースモジュール１３８は、ディスパッチルーチン１４０を含むことができる。悪質な装置１１４は、悪性コード１１６を含むことができる。悪性コード１１６は、マルウェアであり得る。電子デバイス１１０、悪質な装置１１４およびセキュリティサーバ１３２は、ネットワーク１１２を介して接続することができる。一例において、悪質な装置１１４は、電子デバイス１１０に（例えば、汎用シリアルバス（ＵＳＢ）タイプ接続を介して）直接接続され得る。
【００１５】
図１の複数の要素は、任意の好適な複数の接続（有線または無線）を採用する１または複数のインターフェースを介して互いに結合され、それにより複数のネットワーク通信のための実行可能な経路を提供し得る。なお、図１におけるこれらの要素のうち任意の１または複数のものは、特定の構成のニーズに基づいて組み合わされ、またはアーキテクチャから除去され得る。通信システム１００は、ネットワークのパケット送信または受信用の伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）通信が可能な構成を含み得る。通信システム１００はまた、ユーザデータグラムプロトコル／ＩＰ（ＵＤＰ／ＩＰ）または必要に応じて、特定のニーズに基づく任意の他の好適なプロトコルと連携して動作し得る。
【００１６】
例示的な実施形態において、通信システム１００は、電子デバイス１１０内の悪意呼（例えば、悪意のあるＷｉｎｄｏｗｓ（登録商標）非同期プロシージャ呼び出し（ＡＰＣ））を検知および防止するのに役立つように構成することができる。セキュリティ製品に対して抵抗する一般的な方法を利用するカーネルモードルートキット（例えば、ＺｅｒｏＡｃｃｅｓｓまたはＭａｘ＋＋）などの脅威によって攻撃された場合、電子デバイス１１０は、適切なオペレーションを（中断されないで）続けるように構成することができる。一例において、セキュリティプログラムインターフェースモジュール１３８は、ＫｉＵｓｅｒＡｐｃＤｉｓｐａｔｃｈｅｒ呼び出しおよびＥｘｉｔＰｒｏｃｅｓｓ呼び出しを検査するように構成することができる。特に呼び出し関連のイベントを探すことによって、セキュリティプログラムインターフェースモジュール１３８は、カーネルモードルートキットおよび他の類似の攻撃を軽減するのに役立つことができ、プロセスを終了する代わりに、ターゲット処理の実行を可能にする。これにより、攻撃からのセキュリティ製品のより良好な保護、新たな攻撃を検知する能力、未知の脅威に対するより良好な可視性を得て、外部ＣＤＲＯＭベースのブートの必要無しに既存の脅威を掃除する能力を可能にする。
【００１７】
通信システム１００の特定の例示的な技術を図示する目的で、ネットワーク環境を横断中であり得る通信を理解することは重要である。以下の基本的情報は、本開示が適切に説明され得る基礎として考えてもよい。
【００１８】
インターネットへのアクセスの増大は、ユーザのインフォームドコンセント無しにユーザの個人情報を獲得するか、あるいは、ユーザの認識およびインフォームドコンセント無しにコンピュータを破損するソフトウェアプログラムの到達が増大するという意図しない効果をもたらしている。本明細書中に使用される用語であるマルウェアは、所有者のインフォームドコンセント無しに、ソフトウェアプログラムに対する動機づけに関わらず、所有者のデバイス、システム、ネットワークまたはデータに対してソフトウェアプログラムによって引き起こされる結果に関わらず、コンピュータシステムに潜入するか、これを修正、変更、破損または損傷するように設計される任意のタイプのソフトウェアプログラムを含む。
【００１９】
１つのタイプのマルウェアは、ランダムシステムドライバをしばしば感染させる急速に進化しているカーネルモードルートキットのファミリを含み、それ自身の感染されたドライバでそのコードを上書きし、ディスク上のその存在を隠すべく、ストレージドライバチェーンをハイジャックする。具体的な例において、感染されたコンピュータ上で、新たなドライバは、Ｄｅｖｉｃｅｓｖｃｈｏｓｔ．ｅｘｅ（または、何か他の名前）としばしば呼ばれる装置を設定し、パスがＤｅｖｉｃｅｓｖｃｈｏｓｔ．ｅｘｅｓｖｃｈｏｓｔ．ｅｘｅであるｓｖｃｈｏｓｔ．ｅｘｅ（または、何か他の名前）と呼ばれる偽の移植可能な実行可能（ＰＥ）ファイルを格納する。次に、ドライバはそれ自体をディスク装置スタックに取り付け、パス（￥ＧｌｏｂａｌｒｏｏｔＤｅｖｉｃｅｓｖｃｈｏｓｔ．ｅｘｅｓｖｃｈｏｓｔ．ｅｘｅ）を指す、ｓｖｃｈｏｓｔ．ｅｘｅと呼ばれる新システムプロセスを作成する。このフェイクプロセスは、一種のトラップとして役立ち、特に、セキュリティソフトウェアによって実行されるタイプのファイルオペレーションを探す。
【００２０】
典型的なセキュリティスキャナが、ルートキット作成のｓｖｃｈｏｓｔ．ｅｘｅファイルを解析しようとする場合、ルートキットは初期化されたＡＰＣをスキャナ自身のプロセスへとキューイングし、次にＥｘｉｔＰｒｏｃｅｓｓ（）関数を呼び出し、セキュリティスキャナにスキャンなどのプロセスを終了または停止させる。マルウェアは、アンチウイルスまたはセキュリティプロセス内から悪性コードを実行するべく悪意のあるＡＰＣ呼び出しをスケジューリングすることもできる。これは、例えば、セキュリティプロセスを終了させるか、またはセキュリティプロセス内からの悪意のある動作を実行するために使用することができる。
【００２１】
Ｍａｘ＋＋などのマルウェアは、悪意のあるＡＰＣ呼び出しをスケジューリングすることにより悪意のあるベイトプロセス技術を利用し、セキュリティプロセスにそれ自体を終了させようとする。悪意のあるベイトプロセスに、または、悪意のあるドライバのデバイス対象にアクセスが生じたときはいつでも、ルートキットは、悪意のあるＡＰＣ呼び出しをスケジューリングすることによって抵抗する。このようにして、悪性コードは、名指しで、または、特にターゲットをしぼった攻撃でセキュリティ製品を攻撃する必要はない。悪性コードは、それらの全てに対してヒューリスティックに作動する。その結果、Ｍａｘ＋＋ルートキットおよび類似タイプのマルウェアは、Ｒｏｏｔｋｉｔスキャナツールおよびセキュリティ製品を含むセキュリティ製品を可能、不能にすることができる。
【００２２】
ユーザモードＡＰＣ呼び出しは、セキュリティ実行可能プロセスまたはサービスなどの特定プロセスに属するスレッドのコンテキストにて実行される。プロセスのスレッドが一定の待ち状態にある場合、オペレーティングシステムは、ＡＰＣがスケジューリングされているかどうかチェックする。ＡＰＣを用いて、マルウェアはスレッドの実行をハイジャックし、ＡＰＣルーチンの特定アドレスの新コードを実行することができる。
【００２３】
マルウェアコードは、ターゲットのプロセスで新ページを作成し、ＡＰＣを新ページにスケジューリングする。オペレーティングシステムは、正常状態のプロセスのスレッドをハイジャックし、ＡＰＣルーチンによって特定されたアドレスを呼び出す。マルウェアのＡＰＣルーチンは、ＥｘｉｔＰｒｏｃｅｓｓ（）関数を探し、それを実行する。その結果、システムのなんらかの保護が起こり得る前に、製品は終了し、スキャニングも検知も起こらない。
【００２４】
アンチウイルスまたはセキュリティプロセスを攻撃することを目的としてマルウェアによって使用される様々な他の攻撃技術がある。それらは、名指し（例えば、ｍｃａｆｅｅ．ｅｘｅ，ａｖｐ．ｅｘｅ）でセキュリティプロセスを直接攻撃することを中心として解決し、プロセスを「開くこと」によってアクセスを得ることをしばしば含む。フィルタを用いてＡＶプロセスへのアクセスを防止することなどにより、このような攻撃シナリオに対処するべく存在する解決策がいくつかあるが、このような解決策は、ＡＰＣまたはカーネルモードルートキットベースの攻撃を妨害することが可能でない。また、そのような複数のＡＰＣベースの動作は、セキュリティプロセスそれ自体によって開始されるように見えるので、それらは信頼ベースのブロッカによってブロックすることができない。結局、セキュリティソフトウェアは、それ自身の動作を信頼する必要がある。
【００２５】
図１に概説されるような、悪意呼を軽減する通信システムは、これらの問題（およびその他）を解決することができる。図１の通信システム１００において、通信システム１００は、説明される問題に対処するべく２つのアプローチに集中するように構成することができる。一実施形態において、ＥｘｉｔＰｒｏｃｅｓｓ（）関数は、セキュリティプログラム実行ファイルおよびダイナミックリンクライブラリ（ＤＬＬ）のセキュリティプログラムインターフェースモジュール１３８によって、フック、修正、またはトラップされ、追加のルーチンを含むことができる。このルーチン（例えば、ディスパッチルーチン１４０）は、ＥｘｉｔＰｒｏｃｅｓｓ（）関数が既知の製品に属さないページから呼び出されたかどうかチェックすることができる。そのようにするのは、オペレーティングシステムスタック１１８におけるＥｘｉｔＰｒｏｃｅｓｓ（）アドレスの上方のスタック上のリターンアドレスと、そのスタックパラメータとをチェックすることによってである。セキュリティプログラムインターフェースモジュール１３８は、（ＮｔＣｏｎｔｉｎｕｅＡＰＩを利用することによりＡＰＣ呼び出し後にハイジャックされたスレッドのコンテキストを復元すべくオペレーティングシステム（ＯＳ）カーネルによってオペレーティングシステムスタック１１８に配置される）コンテキスト構造がオペレーティングシステムスタック１１８上で利用可能であるかどうか検証することができる。セキュリティプログラムインターフェースモジュール１３８は、ＥｘｉｔＰｒｏｃｅｓｓ（）からオペレーティングシステムスタック１１８をアドレスすることにより、これを行い、＋１０ヘキサバイト（または、何らかの数）離れて、メモリ内のアクティブプロセスＤＬＬに属さない実行可能ページへのアドレスがあるかどうか、（ＥｘｉｔＰｒｏｃｅｓｓ（）への正当な呼び出しである）セキュリティプログラム１２２に指し戻すオペレーティングシステムスタック１１９上のリターンアドレスがないかどうか知ることができる。次に、セキュリティプログラムインターフェースモジュール１３８は、ＮＴＤＬＬ用のＮｔＣｏｎｔｉｎｕｅＡＰＩ呼び出しに対してオペレーティングシステムスタック１１８上の正しいパラメータをプッシュすることができ、これによりＯＳカーネルを復元コンテキストルーチンに導き戻す。このように、セキュリティプログラムインターフェースモジュール１３８は、悪性コードによるプロセスの終了を防ぐことができる。
【００２６】
別の実施形態において、ＮＴＤＬＵＫｉＵｓｅｒＡｐｃＤｉｓｐａｔｃｈｅｒという関数は、フックされる。一貫して用いられるように、「フックする」、「フックされる」、「フックしている」などの用語は、オペレーティングシステム、アプリケーション、モジュールまたはコンポーネント間を通過した関数呼び出し、メッセージまたはイベントをインターセプトすることにより、そのオペレーティングシステム、アプリケーション、モジュールまたは他のコンポーネントの挙動を改めるか、または増大することを含む。この関数をフックすることにより、セキュリティプログラムインターフェースモジュール１３８はその入力パラメータ（すなわち、引数）を検査して、どのページがＡＰＣルーチンとして実行されるかを検証することができる。ページがロードされたセキュリティプログラム１２２の生成物のＤＬＬ、ＥＸＥの一部ではないか、または、ＡＰＣが指し示しているコードがメモリのアドレスに対応するファイルイメージと比較して明らかにパッチされている場合、セキュリティプログラムインターフェースモジュール１３８は、ＡＰＣ呼び出しの実行を無視し、代わりに正しいパラメータを用いてＮｔＣｏｎｔｉｎｕｅＡＰＩ関数を呼び出し、ハイジャックプロセススレッドのコンテキストを格納し、適切な実行を続けることができる。セキュリティプログラム１２２が実行を続けることを可能にすることによって、セキュリティプログラムインターフェースモジュール１３８は、ルートキットに対して適切なスキャンを実施して、システムからルートキットを掃除することができる。また、ヒューリステックメッセージは、悪意のあるＡＰＣ呼び出しに関するシステムログに記録することができ、その技術を利用する未知のマルウェア脅威は、そのアプローチで検知することができる。ヒューリステックメッセージは、マルウェアが解析できるネットワーク１１２を介してセキュリティサーバ１３２に送信することができる。
【００２７】
図１のインフラストラクチャを参照すると、例示的な実施形態による通信システム１００が示される。概して、通信システム１００は、任意のタイプまたはトポロジのネットワークに実装することができる。ネットワーク１１２は、通信システム１００を介して伝播する情報のパケットを受信および送信する相互接続通信パスの一連のポイントまたはノードを表す。ネットワーク１１２は、ノード間の通信インターフェースを提供し、任意のローカルエリアネットワーク（ＬＡＮ）、仮想ローカルエリアネットワーク（ＶＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、無線ローカルエリアネットワーク（ＷＬＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、イントラネット、エクストラネット、仮想私設ネットワーク（ＶＰＮ）、およびネットワーク環境の通信を促進する任意の他の妥当なアーキテクチャまたはシステム、あるいは、有線および／または無線通信を含む、それらの好適な組み合わせとして構成されてよい。
【００２８】
通信システム１００において、パケット、フレーム、信号、データ、などを含むネットワークトラフィックは、任意の適切な通信メッセージングプロトコルにより送信および受信することができる。適切な通信メッセージングプロトコルは、開放型システム間相互接続（ＯＳＩ）モデル、あるいは、それの派生物または変種（例えば、伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）、ユーザデータグラムプロトコル／ＩＰ（ＵＤＰ／ＩＰ））などの多層スキームを含むことができる。なお、セルラーネットワークを通じての無線信号通信も、通信システム１００に提供されてよい。適切なインターフェースおよびインフラストラクチャが提供され、セルラーネットワークとの通信を可能としてよい。
【００２９】
パケットは、パケット交換ネットワーク上でソースノードと、宛先ノードとの間にルーティングすることができるデータユニットである。パケットは、ソースネットワークアドレスおよび宛先ネットワークアドレスを含む。これらのネットワークアドレスは、ＴＣＰ／ＩＰメッセージングプロトコルのインターネットプロトコル（ＩＰ）アドレスであり得る。本明細書にて用いられる「データ」なる用語は、任意のタイプの２値、数字、音声、映像、テキストまたはスクリプトデータを指し、あるいは、任意のタイプのソースまたはオブジェクトコード、あるいは、電子デバイスおよび／またはネットワークにてあるポイントから別のポイントへ通信され得る任意の妥当なフォーマットでの任意の他の好適な情報を指す。なお、メッセージ、リクエスト、応答およびクエリは、ネットワークトラフィックの形態であり、それゆえパケット、フレーム、信号、データなどを備えてよい。
【００３０】
特定の例示的な実装において、本明細書で概説される複数の機能は、１または複数の有形の媒体（例えば、ＡＳＩＣで提供される埋込みロジック、デジタルシグナルプロセッサ（ＤＳＰ）命令、プロセッサにより実行されるソフトウェア（潜在的にオブジェクトコードおよびソースコードを含む）、または他の同様な機械など）にエンコードされているロジックにより実装されてよく、これらは、非一時的コンピュータ可読媒体を含み得る。これらの例のいくつかにおいて、メモリ素子は、本明細書で説明されるオペレーションに対して用いられるデータを格納することができる。これは、本明細書で説明されるアクティビティを行うべく実行されるソフトウェア、ロジック、コード、またはプロセッサ命令を格納できるメモリ素子を含む。
【００３１】
例示的な実装において、通信システム１００、電子デバイス１１０および／またはセキュリティサーバ１３２のネットワーク要素は、本明細書に概説されるように、オペレーションを実現または促進するソフトウェアモジュール（例えば、セキュリティプログラムインターフェースモジュール１３８）を含み得る。これらのモジュールは、任意の妥当なやり方で適切に組み合わせられてよく、特定の構成および／またはプロビジョニングニーズに基づいてよい。例示的な実施形態において、そのようなオペレーションは、ハードウェアによって実行され、これらの要素に外的に実装され、または意図される機能を達成する何らかの他のネットワークデバイスに含まれてよい。さらにまた、モジュールは、ソフトウェア、ハードウェア、ファームウェアまたはそれらの任意の好適な組み合わせとして実装することができる。これらの要素はまた、本明細書で概説されるようなオペレーションを達成するべく、他のネットワーク要素と協調できるソフトウェア（または往復ソフトウェア）を含んでよい。
【００３２】
加えて、電子デバイス１１０およびセキュリティサーバ１３２の各々は、本明細書で説明されるようなアクティビティを行うべく、ソフトウェアまたはアルゴリズムを実行できるプロセッサを含んでよい。プロセッサは、データに関連付けられた任意のタイプの複数の命令を実行して、本明細書において詳しく述べる複数のオペレーションを達成できる。一例において、複数のプロセッサは、要素または物品（例えば、データ）を、ある状態もしくは物から別の状態もしくは物へと変換し得る。別の例において、本明細書において概説される複数のアクティビティは、固定ロジックまたはプログラマブルロジック（例えば、プロセッサが実行する複数のソフトウェア／コンピュータ命令）で実装され、本明細書において特定される複数の要素は、なんらかのタイプのプログラマブルプロセッサ、プログラマブルデジタルロジック（例えば、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ＥＰＲＯＭ、ＥＥＰＲＯＭ）、または、デジタルロジック、ソフトウェア、コード、複数の電子命令、またはそれらの任意の好適な組み合わせを含むＡＳＩＣであり得る。本明細書で説明される複数の潜在的な処理要素、モジュール、および機械のいずれかは、広義の用語「プロセッサ」内に包含されるように解釈されるべきである。
【００３３】
図２を参照すると、図２は、一実施形態によるセキュリティプログラムインターフェースモジュール１３８と関連し得るフロー２００の可能なオペレーションを図示する例示的なフローチャートである。２０２で、プログラム（例えば、セキュリティプログラム１２２）の実行中に、関数が呼び出される。２０４で、関数に対するリターンアドレスが、決定される。２０６で、システムが、リターンアドレスが既知または信頼されたモジュール（例えば、セキュリティモジュール１２４ａ）に属するかどうか決定する。システムが、リターンアドレスが既知または信頼されたモジュールに属することを決定する場合、２０８のように、関数の実行が許可される。システムが、リターンアドレスが、既知または信頼されたモジュールに属さないことを決定する場合、２１０のように、システムは、関数のサービスを停止するか、関数のサービスを許可せず、システムは、プログラムの実行に戻る。
【００３４】
図３を参照すると、図３は、一実施形態によるセキュリティプログラムインターフェースモジュール１３８と関連し得るフロー３００の可能なオペレーションを図示する例示的なフローチャートである。３０２で、プログラムの実行中（例えば、セキュリティプログラム１２２）に、関数が呼び出される。３０４で、システムは、関数が、既知のセキュリティモジュール（例えば、セキュリティモジュール１２４ａのメモリページ１３２ａ）に属するメモリページによって呼び出されたかどうか決定する。関数が、既知のセキュリティモジュールに属するメモリページによって呼び出された場合、３０６のように、関数の実行が許可される。関数が、既知のセキュリティモジュールに属さないメモリページによって呼び出された場合、３０８のように、システムは、関数のサービスを停止するか、そのサービスを許可しないで、システムは、プログラムの実行に戻る。
【００３５】
図４を参照すると、図４は、一実施形態による、セキュリティプログラムインターフェースモジュール１３８と関連し得るフロー４００の可能なオペレーションを図示する例示的なフローチャートである。４０２で、プログラムの実行中に、関数が呼び出される。例えば、セキュリティプログラムは、終了プロセス関数を呼び出し得る。４０４で、その関数用のパラメータが、決定される。４０６で、システムは、パラメータが、プログラムによって使用されるパラメータかどうか決定する。例えば、終了コードは、セキュリティプログラムによって使用される終了プロセス関数用のパラメータとして使用することができ、セキュリティプログラムは、それがどの終了コードを使用するのか知り、正しいコードが使用されたかどうか特定することができる。そのパラメータは、プログラムによって使用されるパラメータである場合、４０８のように、その関数の実行が許可される。パラメータがプログラムによって使用されるパラメータではない場合、４１０のように、システムは、その関数のサービスを停止するか、許可せずに、システムは、プログラムの実行に戻る。
【００３６】
図５を参照すると、図５は、一実施形態によるセキュリティプログラムインターフェースモジュール１３８と関連し得るフロー５００の可能なオペレーションを図示する例示的なフローチャートである。５０２で、プログラムの呼び出し（例えば、ＡＰＣ呼び出し）をディスパッチすることを担当するルーチン（例えば、ディスパッチルーチン１４０）が、フックされる。５０４で、入力パラメータが検査され、サービス提供されるルーチンのページまたはアドレスを特定する。５０６で、システムは、ページまたはアドレスが、セキュリティソフトウェアが信頼できる既知のモジュールに属するかどうか決定する（例えば、信頼されたセキュリティモジュール１３２ａのメモリページ１３２ａ）。ページまたはアドレスが、セキュリティソフトウェアが信頼できる既知のモジュールに属する場合、５０８のように、呼び出しの実行が許可される。ページまたはアドレスが、セキュリティソフトウェアが信頼できる既知のモジュールに属さない場合、５１０のように、プログラム用の制御フローのディスパッチはスキップされ、フローの制御は、オペレーティングシステムに戻される。
【００３７】
図６を参照すると、図６は、一実施形態によるセキュリティプログラムインターフェースモジュール１３８と関連し得るフロー６００の可能なオペレーションを図示する例示的なフローチャートである。６０２で、プログラムの呼び出しをディスパッチすることを担当するルーチンが、フックされる（例えば、ディスパッチルーチン１４０）。６０４で、呼び出しの入力パラメータが検査され、サービス提供されるルーチンのページまたはアドレスを特定する。６０６で、システムは、アドレスに含まれるコードが既知であり、信頼されるかどうか決定する。アドレスに含まれるコードが、既知で信頼される場合、６０８のように、呼び出しの実行が許可される。アドレスに含まれるコードが、既知ではないか、または信頼されていない場合、６１０のように、プログラムの制御フローのディスパッチはスキップされ、フローの制御は、オペレーティングシステムに戻される。
【００３８】
図７は、実施形態によるポイントツーポイント（ＰｔＰ）構成で配置されたコンピューティングシステム７００を図示する。特に、図７は、プロセッサ、メモリおよび入力／出力デバイスが複数のポイントツーポイントインターフェースにより相互接続されたシステムを示す。概して、通信システム１００の１または複数のネットワーク要素は、コンピューティングシステム７００と同一または同様のやり方で構成され得る。
【００３９】
図７に図示されるように、システム７００は、プロセッサ７７０および７８０の２つのみが明確にするために示されているが、複数のプロセッサを含んでよい。２つのプロセッサ７７０および７８０が示されているが、システム７００の実施形態はまた、ただ１つのこのようなプロセッサを含み得ることは理解されるべきである。プロセッサ７７０および７８０はそれぞれ、プログラムの複数のスレッドを実行するべく、コア一式（すなわち、プロセッサコア７７４Ａおよび７７４Ｂおよびプロセッサコア７８４Ａおよび７８４Ｂ）を含み得る。コアは、図２−６を参照して上記に論じたものと同様なやり方で命令コードを実行するように構成してもよい。各プロセッサ７７０、７８０は、少なくとも１つの共有キャッシュ７７１、７８１を含んでよい。共有キャッシュ７７１、７８１は、プロセッサコア７７４、７８４などのプロセッサ７７０、７８０の１または複数のコンポーネントによって利用されるデータ（例えば、命令）を格納してよい。
【００４０】
プロセッサ７７０および７８０はまたそれぞれ、集積メモリコントローラロジック（ＭＣ）７７２および７８２を含み、メモリ素子７３２および７３４と通信し得る。メモリ素子７３２および／または７３４は、プロセッサ７７０および７８０によって使用される様々なデータを格納してよい。代替の実施形態において、メモリコントローラロジック７７２および７８２は、プロセッサ７７０および７８０から分離された別個のロジックでよい。
【００４１】
プロセッサ７７０および７８０は、任意のタイプのプロセッサであってよく、それぞれ、ポイントツーポイントインターフェース回路７７８および７８８を用いることで、ポイントツーポイント（ＰｔＰ）インターフェース７５０を介してデータを交換してよい。プロセッサ７７０および７８０は、ポイントツーポイントインターフェース回路７７６、７８６、７９４および７９８を用いて、個々のポイントツーポイントインターフェース７５２および７５４を介してチップセット７９０とそれぞれデータを交換してよい。チップセット７９０はまた、ＰｔＰインターフェース回路であり得るインターフェース回路７９２を用いて、高性能グラフィックインターフェース７３９を介して高性能グラフィック回路７３８とデータを交換してよい。代替の実施形態において、図７に図示される任意のまたは全てのＰｔＰリンクは、１つのＰｔＰリンクではなく、マルチドロップバスとして実装されることができる。
【００４２】
チップセット７９０は、インターフェース回路７９６を介してバス７２０と通信してよい。バス７２０は、バスブリッジ７１８およびＩ／Ｏデバイス７１６など、バス７２０を介して通信する１または複数のデバイスを有し得る。バス７１０を介して、バスブリッジ７１８は、キーボード／マウス７１２（または、例えばタッチスクリーン、トラックボールなどの他の入力デバイス）、通信デバイス７２６（コンピュータネットワーク７６０を介して通信できるモデム、ネットワークインターフェースデバイス、または他のタイプの通信デバイスなど）、オーディオＩ／Ｏデバイス７１４、および／または、データストレージデバイス７２８などの複数の他のデバイスと通信してよい。データストレージデバイス７２８は、プロセッサ７７０および／または７８０により実行され得るコード７３０を格納し得る。代替の実施形態において、バスアーキテクチャの任意の部分は、１または複数のＰｔＰリンクで実装されることができる。
【００４３】
図７に図示されるコンピュータシステムは、本明細書において論じられる様々な実施形態を実装するべく利用され得るコンピューティングシステムの一実施形態の概略図である。図７に示されるシステムの様々なコンポーネントは、システムオンチップ（ＳｏＣ）アーキテクチャまたは任意の他の好適な構成で組み合わせられてよいことは理解されよう。例えば、本明細書で開示される複数の実施形態は、例えば、スマートセルラーフォン、タブレットコンピュータ、携帯情報端末、ポータブルゲームデバイスなどのモバイルデバイスを含むシステム内に組み込まれることができる。これらのモバイルデバイスは、少なくともいくつかの実施形態でＳｏＣアーキテクチャを備えてよいことは理解されよう。
【００４４】
図８を参照すると、図８は、本開示の例示的なＡＲＭエコシステムＳＯＣ８００に関連する簡略化されたブロック図である。本開示の少なくとも１つの例示的な実装は、本明細書にて論じられている悪意呼軽減の特徴とＡＲＭコンポーネントを含むことができる。例えば、図８の例は、任意のＡＲＭコア（例えば、Ａ−９、Ａ−１５等）に関連し得る。さらに、該アーキテクチャは、任意のタイプのタブレット、スマートフォン（アンドロイド（登録商標）フォン、ｉ−Ｐｈｏｎｅ（登録商標）を含む）、ｉ−Ｐａｄ（登録商標）、Ｇｏｏｇｌｅ  Ｎｅｘｕｓ（登録商標）、Ｍｉｃｒｏｓｏｆｔ  Ｓｕｒｆａｃｅ（登録商標）、パーソナルコンピュータ、サーバ、ビデオ処理コンポーネント、ラップトップコンピュータ（任意のタイプのノートブックを含む）、Ｕｌｔｒａｂｏｏｋ（登録商標）システム、任意のタイプのタッチ対応入力デバイスなどの部分であることができる。
【００４５】
図８のこの例では、ＡＲＭエコシステムＳＯＣ８００は、複数のコア８０６−８０７、Ｌ２キャッシュ制御８０８、バスインターフェースユニット８０９、Ｌ２キャッシュ８１０、グラフィック処理ユニット（ｇｒａｐｈｉｃｓ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ（ＧＰＵ））８１５、相互接続８０２、ビデオコーデック８２０、および液晶ディスプレイ（ｌｉｑｕｉｄ  ｃｒｙｓｔａｌ  ｄｉｓｐｌａｙ（ＬＣＤ））Ｉ／Ｆ８２５を含んでよく、これらは、ＬＣＤに結合するモバイルインダストリープロセッサインターフェース（ｍｏｂｉｌｅ  ｉｎｄｕｓｔｒｙ  ｐｒｏｃｅｓｓｏｒ  ｉｎｔｅｒｆａｃｅ（ＭＩＰＩ））／高精細度マルチメディアインターフェース（ｈｉｇｈ−ｄｅｆｉｎｉｔｉｏｎ  ｍｕｌｔｉｍｅｄｉａ  ｉｎｔｅｒｆａｃｅ（ＨＤＭＩ（登録商標）））リンクと関連付けられ得る。
【００４６】
ＡＲＭエコシステムＳＯＣ８００はまた、サブスクライバアイデンティティモジュール（ＳＩＭ）Ｉ／Ｆ８３０、ブート読み出し専用メモリ（ＲＯＭ）８３５、シンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）コントローラ８４０、フラッシュコントローラ８４５、シリアルペリフェラルインターフェース（ＳＰＩ）マスタ８５０、適切なパワー制御８５５、ダイナミックＲＡＭ（ＤＲＡＭ）８６０およびフラッシュ８６５を含み得る。また、１または複数の例示的な実施形態は、１または複数の通信機能、インターフェース、ならびに、ブルートゥース（登録商標）８７０、３Ｇモデム８７５、全地球測位システム（ＧＰＳ）８８０、および８０２．１１Ｗｉｆｉ８８５の例などの特徴を含む。
【００４７】
動作において、図８の例は、様々なタイプ（例えば、モバイルコンピューティング、ハイエンドデジタルホーム、サーバ、無線インフラストラクチャ等）の演算を可能にするために、比較的低い消費電力とともに処理能力を提供できる。加えて、このようなアーキテクチャは、任意数のソフトウェアアプリケーション（例えば、アンドロイド（登録商標）、アドビ（登録商標）フラッシュ（登録商標）プレーヤ、Ｊａｖａ（登録商標）プラットフォームスタンダードエディション（Ｊａｖａ（登録商標）  ＳＥ）、Ｊａｖａ（登録商標）ＦＸ、リナックス（登録商標）、マイクロソフトウィンドウズ（登録商標）エンベデッド、シンビアンおよびウブントゥなど）を可能にすることができる。少なくとも１つの例示的な実施形態において、該コアプロセッサは、結合されている短待ち時間レベル２キャッシュでアウトオブオーダースーパースカラーパイプライン（ｏｕｔ−ｏｆ−ｏｒｄｅｒ  ｓｕｐｅｒｓｃａｌａｒ  ｐｉｐｅｌｉｎｅ）を実施することができる。
【００４８】
図９は、一実施形態によるプロセッサコア９００を図示する。プロセッサコア９００は、コードを実行するべく、マイクロプロセッサ、埋め込みプロセッサ、デジタルシグナルプロセッサ（ＤＳＰ）、ネットワークプロセッサまたは他のデバイスなどの任意のタイプのプロセッサ用のコアであってよい。ただ１つのプロセッサコア９００が図９には図示されているが、プロセッサは、代わりに図９に図示されるプロセッサコア９００の複数を含み得る。例えば、プロセッサコア９００は、図７のプロセッサ７７０および７８０を参照して示され、説明されるプロセッサコア７７４ａ、７７４ｂ、７８４ａおよび７８４ｂの１つの例示的な実施形態を表わす。プロセッサコア９００は、シングルスレッドコアであってよく、または、少なくとも１つの実施形態に対して、プロセッサコア９００がコアごとの複数のハードウェアスレッドコンテキスト（または「論理プロセッサ」）を含み得る点で、マルチスレッドで構成されてよい。
【００４９】
図９は、一実施形態によるプロセッサコア９００に連結されたメモリ９０２も図示する。メモリ９０２は、既知の、またはそうでなければ当業者に入手可能な、多種多様なメモリ（メモリ階層の様々なレイヤを含む）のうちのいずれかであってよい。メモリ９０２は、プロセッサコア９００により実行される１または複数の命令でよいコード９０４を含んでよい。プロセッサコア９００は、コード９０４により示される複数の命令のプログラムシーケンスに従う。各命令は、フロントエンドロジック９０６に入り、１または複数のデコーダ９０８によって処理される。デコーダは、その出力として、予め定義されたフォーマットの固定幅のマイクロオペレーションなどのマイクロオペレーションを生成してもよく、または元のコード命令を反映する他の複数の命令、マイクロ命令もしくは制御信号を生成してもよい。フロントエンドロジック９０６はまた、レジスタ改名ロジック９１０およびスケジューリングロジック９１２を含み、これらは概してリソースを割り当て、実行用の命令に対応してオペレーションをキューイングする。
【００５０】
プロセッサコア９００はまた、一セットの実行ユニット９１６−１〜９１６−Ｎを有する実行ロジック９１４を含むことができる。いくつかの実施形態は、特定の複数の関数または複数セットの関数に専用のいくつかの実行ユニットを含み得る。複数の他の実施形態は、特定の関数を実行することができるただ１つの実行ユニットまたは１つの実行ユニットを含んでよい。実行ロジック９１４は、複数のコード命令により特定される複数のオペレーションを実行する。
【００５１】
複数のコード命令により指定された複数のオペレーションの実行が完了した後、バックエンドロジック９１８はコード９０４の複数の命令をリタイアし得る。一実施形態において、プロセッサコア９００は、アウトオブオーダ実行を許可するが、複数の命令のインオーダリタイアメントを要求する。リタイアメントロジック９２０は、様々な既知の形態（例えば、リオーダバッファ等）を取り得る。このように、プロセッサコア９００は、レジスタ改名ロジック９１０により利用されるデコーダ、ハードウェアレジスタおよびテーブル、ならびに実行ロジック９１４により変更される任意のレジスタ（図示せず）によって生成される出力に少なくとも関して、コード９０４の実行中に変換される。
【００５２】
図９に図示されていないが、プロセッサは、プロセッサコア９００付きのチップ上に他の要素を含んでよく、これらの少なくともいくつかは、図７を参照して本明細書に示され、説明された。例えば、図７に示されるように、プロセッサは、プロセッサコア９００とともにメモリ制御ロジックを含み得る。プロセッサは、Ｉ／Ｏ制御ロジックを含み得、および／またはメモリ制御ロジックと一体化されたＩ／Ｏ制御ロジックを含み得る。
【００５３】
本明細書で提供される例に関して、インタラクションが、２つ、３つまたはそれより多いネットワーク要素に関して説明されてよいことに留意されたい。しかしながら、これは明確さおよび例示の目的のためだけに行われる。特定の場合、限定数のネットワーク要素を参照することのみにより所与のフローセットの１または複数の機能を説明することがより容易となり得る。通信システム１００およびその教示は、容易に拡張可能であり、多数のコンポーネント、ならびにより複雑／高度な配置および構成に適合することができることは、理解されるべきである。従って、提供される例は、無数の他のアーキテクチャに潜在的に適用されるような通信システム１００の範囲を限定、または広い教示を妨げるべきではない。
【００５４】
先行するフロー図（すなわち、図２−６）における複数のオペレーションは、通信システム１００により、またはその内部で実行されてよい複数の起こりうる相関シナリオおよび複数のパターンのいくつかのみを図示していることに留意すべきことも重要である。これらのオペレーションのいくつかは、必要に応じて削除もしくは除去されてよく、またはこれらの動作は、本開示の範囲を逸脱することなく大幅に修正もしくは変更されてもよい。加えて、これらのオペレーションの複数は、１または複数の追加のオペレーションと同時に、またはパラレルに実行されるものとして説明された。しかしながら、これらのオペレーションのタイミングは大幅に変更されてよい。前述の複数のオペレーションフローは、例示及び議論の目的のために提供された。通信システム１００は、任意の好適な配置、時系列、構成、およびタイミングメカニズムが本開示の教示を逸脱せずに提供されうる、かなりのフレキシビリティを提供する。
【００５５】
本開示は、特定の配置および構成を参照して詳細に説明されているが、これらの例示的な構成および配置は、本開示の範囲を逸脱することなく相当に変更されてもよい。さらにまた、特定のコンポーネントは、特定のニーズおよび実装に基づき、組み合わせたり、分離したり、削除したり、加えたりされ得る。なお、通信システム１００は、通信プロセスを促進する特定の要素およびオペレーションを参照して図示されているが、これらの要素およびオペレーションは、通信システム１００の意図される機能を実現する任意の好適なアーキテクチャ、プロトコルおよび／またはプロセスによって置き換えられ得る。
【００５６】
多数の他の変更、代替、変動、変化および修正は、当業者に確認されてよく、本開示が添付された特許請求の範囲内に収まるこのような全ての変更、代替、変動、変化および修正を網羅することが意図される。米国特許商標庁（ＵＳＰＴＯ）と、更に本願に発行されるいかなる特許のいかなる読み手とが本明細書に添付された請求項を解釈するのを支援するべく、出願人は、出願人には（ａ）添付された特許請求の範囲のいずれにも、「ための手段」または「ためのステップ」なる文言が具体的に特定の請求項に用いられない限り、本願の出願日に存在する米国特許法第１１２条第６パラグラフを行使する意図はないこと、（ｂ）明細書中の何らかの説明により、添付された特許請求の範囲に別途反映されない何らかの手法でこの開示を限定する意図はないことに留意することを望む。他の注釈および例
【００５７】
例Ｃ１は、プロセッサによって実行された場合、プロセッサに、関数呼び出しを受信させ、関数呼び出し用のリターンアドレスを決定させ、リターンアドレスが信頼されたモジュールに属さない場合、関数呼び出しをブロックさせる１または複数の命令を有する少なくとも１つの機械可読記憶媒体である。
【００５８】
例Ｃ２において、例Ｃ１の主題は、命令がプロセッサによって実行された場合、プロセッサにさらに、リターンアドレスが信頼されたモジュールに属する場合、関数呼び出しを許可させる場合を任意に含むことができる。
【００５９】
例Ｃ３において、例Ｃ１−Ｃ２のいずれか１つの主題は、命令がプロセッサによって実行された場合、プロセッサにさらに、関数呼び出しを開始したメモリページの位置を決定させ、メモリページが信頼されたモジュールと関連するかどうか決定させ、メモリページが信頼されたモジュールと関連しない場合、関数呼び出しをブロックさせる場合を任意に含むことができる。
【００６０】
例Ｃ４において、例Ｃ１−Ｃ３のいずれか１つの主題は、命令がプロセッサによって実行された場合、プロセッサにさらに、メモリページが信頼されたモジュールと関連する場合、関数呼び出しを許可させる場合を任意に含むことができる。
【００６１】
例Ｃ５において、例Ｃ１−Ｃ４のいずれか１つの主題は、命令がプロセッサによって実行された場合、プロセッサにさらに、関数呼び出し用のパラメータを決定させ、パラメータが関数を呼び出したプロセスによって使用された既知のパラメータであるかどうか決定させ、パラメータが関数を呼び出したプロセスによって使用された既知のパラメータではない場合、関数呼び出しをブロックさせる場合を任意に含むことができる。
【００６２】
例Ｃ６において、例Ｃ１−Ｃ５のいずれか１つの主題は、命令がプロセッサによって実行された場合、プロセッサにさらに、パラメータが関数を呼び出したプロセスによって使用された既知のパラメータである場合、関数呼び出しを許可させる場合を任意に含むことができる。
【００６３】
例Ｃ７において、例Ｃ１−Ｃ６のいずれか１つの主題は、関数がセキュリティシステムによって呼び出される場合を任意に含むことができる。
【００６４】
例Ｃ８において、例Ｃ１−Ｃ７のいずれか１つの主題は、信頼されたモジュールがセキュリティシステムの一部である場合を任意に含むことができる。
【００６５】
例Ａ１において、装置は、関数呼び出しを受信し、関数呼び出しを開始したメモリページの位置を決定し、メモリページが信頼されたモジュールと関連するかどうか決定し、メモリページが信頼されたモジュールと関連しない場合、関数呼び出しをブロックするように構成されたセキュリティプログラムインターフェースモジュールを含むことができる。
【００６６】
例Ａ２において、例Ａ１の主題は、関数呼び出しは、メモリページが信頼されたモジュールと関連する場合許可される    場合を任意に含むことができる。
【００６７】
例Ａ３において、例Ａ１−Ａ２のいずれか１つの主題は、リターンアドレスが関数呼び出しに対して決定され、リターンアドレスが信頼されたモジュールに属さない場合、関数呼び出しはブロックされる場合を任意に含むことができる。
【００６８】
例Ａ４において、例Ａ１−Ａ３のいずれか１つの主題は、リターンアドレスが信頼されたモジュールに属する場合、関数呼び出しが許可される場合を任意に含むことができる。
【００６９】
例Ａ５において、例Ａ１−Ａ４のいずれか１つの主題は、関数呼び出し用のパラメータが決定され、パラメータが関数を呼び出したプロセスによって使用された既知のパラメータではない場合、関数は、ブロックされる場合を任意に含むことができる。
【００７０】
例Ａ６において、例Ａ１−Ａ５のいずれか１つの主題は、パラメータが関数を呼び出したプロセスによって使用された既知のパラメータではない場合、関数呼び出しが許可される場合を任意に含むことができる。
【００７１】
例Ａ７において、例Ａ１−Ａ６のいずれか１つの主題は、関数が、セキュリティシステムによって呼び出される場合を任意に含むことができる。
【００７２】
例Ａ８において、例Ａ１−Ａ７のいずれか１つの主題は、信頼されたモジュールが、セキュリティシステムの一部である場合を任意に含むことができる。
【００７３】
例Ｍ１は、関数呼び出しを受信する段階と、関数呼び出し用のパラメータを決定する段階と、パラメータが関数を呼び出したプロセスによって使用された既知のパラメータであるかどうか決定する段階と、パラメータが関数を呼び出したプロセスによって使用された既知のパラメータではない場合、関数呼び出しをブロックする段階とを含む方法である。
【００７４】
例Ｍ２において、例Ｍ１の主題は、パラメータが関数を呼び出したプロセスによって使用された既知のパラメータである場合、関数呼び出しを許可する段階を任意に含むことができる。
【００７５】
例Ｍ３において、例Ｍ１−Ｍ２のいずれか１つの主題は、関数呼び出し用のリターンアドレスを決定する段階と、リターンアドレスが信頼されたモジュールに属さない場合、関数呼び出しをブロックする段階とを任意に含むことができる。
【００７６】
例Ｍ４において、例Ｍ１−Ｍ３のいずれか１つの主題は、リターンアドレスが信頼されたモジュールに属する場合、関数呼び出しを許可する段階を任意に含むことができる。
【００７７】
例Ｍ５において、例Ｍ１−Ｍ４のいずれか１つの主題は、関数呼び出しを開始したメモリページの位置を決定する段階と、メモリページが信頼されたモジュールと関連するかどうか決定する段階と、メモリページが信頼されたモジュールと関連しない場合、関数呼び出しをブロックする段階とを任意に含むことができる。
【００７８】
例Ｍ６において、例Ｍ１−Ｍ５のいずれか１つの主題は、メモリページが信頼されたモジュールと関連する場合、関数呼び出しを許可する段階を任意に含むことができる。
【００７９】
例Ｍ７において、例Ｍ１−Ｍ６のいずれか１つの主題は、関数がセキュリティシステムによって呼び出される場合を任意に含むことができる。
【００８０】
例Ｍ８において、例Ｍ１−Ｍ７のいずれか１つの主題は、信頼されたモジュールが、セキュリティシステムの一部である場合を任意に含むことができる。
【００８１】
例Ｓ１は、悪意呼を軽減するシステムであって、上述のシステムは、関数呼び出しを受信し、関数呼び出し用のリターンアドレスを決定し、リターンアドレスが信頼されたモジュールに属さない場合、関数呼び出しをブロックするために構成されたセキュリティプログラムインターフェースモジュールを含むことができる。
【００８２】
例Ｘ１は、例Ａ１−Ａ８またはＭ１−Ｍ８のいずれか１つのような方法を実施するか、または装置を実現する機械可読命令を含む機械可読記憶媒体である。例Ｙ１は、例方法Ｍ１−Ｍ８のいずれか１つを実行する手段を備える装置である。例Ｙ２において、例Ｙ１の主題は、プロセッサおよびメモリを備える方法を実行する手段を任意に含むことができる。例Ｙ３において、例Ｙ２の主題は、機械可読命令を備えたメモリを任意に含むことができる。
【図１】
2017522637.tif 000003
【図２】
2017522637.tif 000004
【図３】
2017522637.tif 000005
【図４】
2017522637.tif 000006
【図５】
2017522637.tif 000007
【図６】
2017522637.tif 000008
【図７】
2017522637.tif 000009
【図８】
2017522637.tif 000010
【図９】
2017522637.tif 000011
【手続補正書】
【提出日】平成28年12月27日(2016.12.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
関数用の関数呼び出しを受信する手順と、
前記関数呼び出し用のリターンアドレスを決定する手順と、
前記リターンアドレスが信頼されるモジュールに属さない場合、前記関数呼び出しをブロックする手順と
をコンピュータに実行させるプログラム。
【請求項２】
前記コンピュータに、
前記リターンアドレスが前記信頼されるモジュールに属する場合、前記関数呼び出しを許可する手順をさらに実行させる、
請求項１に記載のプログラム。
【請求項３】
前記コンピュータに、
前記関数呼び出しを開始したメモリページの位置を決定する手順と、
前記メモリページが複数の信頼されたモジュールの１つと関連するかどうか決定する手順と、
前記メモリページが複数の信頼されたモジュールの１つと関連しない場合、前記関数呼び出しをブロックする手順とをさらに実行させる、
請求項１または２に記載のプログラム。
【請求項４】
前記コンピュータに、
前記メモリページが前記複数の信頼されたモジュールのうちの１つと関連する場合、前記関数呼び出しを許可する手順をさらに実行させる
請求項３に記載のプログラム。
【請求項５】
前記コンピュータに、
前記関数呼び出し用のパラメータを決定する手順と、
前記パラメータが、前記関数を呼び出したプロセスによって使用された既知のパラメータであるかどうか決定する手順と、
前記パラメータが前記関数を呼び出したプロセスによって使用された前記既知のパラメータではない場合、前記関数呼び出しをブロックする手順とをさらに実行させる
請求項１から４のいずれか一項に記載のプログラム。
【請求項６】
前記コンピュータに、
前記パラメータが前記関数を呼び出したプロセスによって使用された前記既知のパラメータである場合、前記関数呼び出しを許可する手順をさらに実行させる
請求項５に記載のプログラム。
【請求項７】
前記関数がセキュリティプログラムによって呼び出される、請求項１から６のいずれか一項に記載のプログラム。
【請求項８】
前記信頼されたモジュールがセキュリティプログラムの一部である、請求項１から７のいずれか一項に記載のプログラム。
【請求項９】
関数用の関数呼び出しを受信し、
前記関数呼び出しを開始したメモリページの位置を決定し、
前記メモリページが信頼されたモジュールと関連するかどうか決定し、
前記メモリページが前記信頼されたモジュールと関連しない場合、前記関数呼び出しをブロックする、
ように構成されたセキュリティプログラムインターフェースモジュールを備える
装置。
【請求項１０】
前記関数呼び出しが、前記メモリページが前記信頼されたモジュールと関連する場合許可される、請求項９に記載の装置。
【請求項１１】
リターンアドレスが前記関数呼び出しに対して決定され、前記リターンアドレスが複数の信頼されたモジュールのうちの１つに属さない場合、前記関数呼び出しはブロックされる、請求項９または１０に記載の装置。
【請求項１２】
前記関数呼び出しが、前記リターンアドレスが前記複数の信頼されたモジュールのうちの１つに属する場合許可される、請求項１１に記載の装置。
【請求項１３】
前記関数呼び出し用のパラメータが決定され、前記パラメータが前記関数を呼び出したプロセスによって使用された既知のパラメータではない場合、前記関数は、ブロックされる、請求項９から１２のいずれか一項に記載の装置。
【請求項１４】
前記パラメータが前記関数を呼び出した前記プロセスによって使用された前記既知のパラメータである場合、前記関数呼び出しが許可される、請求項１３に記載の装置。
【請求項１５】
前記関数が、セキュリティプログラムによって呼び出される、請求項９から１４のいずれか一項に記載の装置。
【請求項１６】
前記信頼されたモジュールが、前記セキュリティプログラムの一部である、請求項９から１５のいずれか一項に記載の装置。
【請求項１７】
関数用の関数呼び出しを受信する段階と、
前記関数呼び出し用のパラメータを決定する段階と、
前記パラメータが前記関数を呼び出したプロセスによって使用された既知のパラメータであるかどうか決定する段階と、
前記パラメータが前記関数を呼び出した前記プロセスによって使用された前記既知のパラメータではない場合、前記関数呼び出しをブロックする段階と
を備える方法。
【請求項１８】
前記パラメータが前記関数を呼び出した前記プロセスによって使用された前記既知のパラメータである場合、前記関数呼び出しを許可する段階をさらに備える請求項１７に記載の方法。
【請求項１９】
前記関数呼び出し用のリターンアドレスを決定する段階と、
前記リターンアドレスが信頼されたモジュールに属さない場合、前記関数呼び出しをブロックする段階と
をさらに備える請求項１７または１８に記載の方法。
【請求項２０】
前記リターンアドレスが前記信頼されたモジュールに属する場合、前記関数呼び出しを許可する段階と
をさらに備える請求項１９に記載の方法。
【請求項２１】
前記関数呼び出しを開始したメモリページの位置を決定する段階と、
前記メモリページが信頼されたモジュールと関連するかどうか決定する段階と、
前記メモリページが前記信頼されたモジュールと関連しない場合、前記関数呼び出しをブロックする段階と
をさらに備える請求項１７から２０のいずれか一項に記載の方法。
【請求項２２】
前記メモリページが前記信頼されたモジュールと関連する場合、前記関数呼び出しを許可する段階をさらに備える、請求項２１に記載の方法。
【請求項２３】
前記関数がセキュリティプログラムによって呼び出され、前記信頼されたモジュールが前記セキュリティプログラムの一部である、請求項２２に記載の方法。
【請求項２４】
悪意呼を軽減するシステムであって、前記システムは、
関数呼び出しを受信し、
前記関数呼び出し用のリターンアドレスを決定し、
前記リターンアドレスが信頼されたモジュールに属さない場合、前記関数呼び出しをブロックする、ために構成された、
セキュリティプログラムインターフェースモジュールを備えるシステム。
【請求項２５】
リターンアドレスが前記関数呼び出しに対して決定され、前記リターンアドレスが複数の信頼されたモジュールのうちの１つに属さない場合、前記関数呼び出しはブロックされる、請求項２４に記載のシステム。
【請求項２６】
請求項１から８のいずれか一項に記載のプログラムを格納するコンピュータ可読記憶媒体。
【国際調査報告】
2017522637.tif 000012
2017522637.tif 000013
2017522637.tif 000014