(57)【特許請求の範囲】
【請求項１】
オペレーティングシステムによってアクセス可能なメモリと、
検出された悪意あるソフトウェア活動に応じて、前記メモリの中にデータを保管して、前記活動を前記オペレーティングシステムに対してレポートする、基本入力／出力システム（ＢＩＯＳ）ハンドラと、
を含む、装置。
【請求項２】
前記ＢＩＯＳハンドラは、前記悪意あるソフトウェア活動に関する少なくとも一つの実行可能なインストラクションのアドレスを判断し、かつ、前記アドレスを表すデータを前記メモリの中に保管する、
請求項１に記載の装置。
【請求項３】
前記メモリは、マイクロプロセッサのレジスタの少なくとも一つのビットを含む、
請求項１に記載の装置。
【請求項４】
前記ＢＩＯＳハンドラは、信号をアサートして、前記オペレーティングシステムに対して前記メモリを確認するように警告する、
請求項１に記載の装置。
【請求項５】
前記ＢＩＯＳハンドラは、システムマネジメントインタラプトに応じて呼び出される、
請求項１に記載の装置。
【請求項６】
前記ＢＩＯＳハンドラは、プロセッサのロックされたコンフィグレーションビットを変更するためのインストラクションを実行する試みを検出したことに応じて、呼び出されるように適合されている、
請求項１に記載の装置。
【請求項７】
前記ＢＩＯＳハンドラは、システムマネジメントモードの最中に、プロセッサの実行をシステムマネジメントモードインストラクションに対して期待されるロケーションの外部に保管されたインストラクションへ向けるためのインストラクションを実行する試みに応じて、呼び出されるように適合されている、
請求項１に記載の装置。
【請求項８】
前記ＢＩＯＳハンドラは、少なくとも部分的にコードセレクタとプロセッサのインストラクションポインタに基づいて、前記悪意あるソフトウェア活動に関する少なくとも一つの実行可能なインストラクションのアドレスを判断するように適合されている、
請求項１に記載の装置。
【請求項９】
前記ＢＩＯＳハンドラは、ゼネラルプロテクションエクセプション（ＧＰＥ）ハンドラによって使用されるスタックから、前記悪意あるソフトウェア活動に関する少なくとも一つの実行可能なインストラクションのアドレスを判断するように適合されている、
請求項１に記載の装置。
【請求項１０】
前記オペレーティングシステムは、ホストオペレーティングシステムまたはゲストオペレーティングシステムを含む、
請求項１に記載の装置。
【請求項１１】
コンピュータのプロセッサが、
オペレーティングシステムによってメモリにアクセスするステップと、
検出された前記コンピュータ上での悪意あるソフトウェア活動に応じて、前記メモリの中にデータを保管するステップと、
前記コンピュータの基本入力／出力オペレーティングシステム（ＢＩＯＳ）に、前記検出された前記コンピュータ上での悪意あるソフトウェア活動について警告するステップと、
前記コンピュータの前記オペレーティングシステムに対して前記検出をレポートするために、前記ＢＩＯＳを使用するステップと、
を含む、方法。
【請求項１２】
前記ＢＩＯＳを使用するステップは、
前記コンピュータのプロセッサが、前記悪意あるソフトウェア活動に関する少なくとも一つのマシンで実行可能なインストラクションのアドレスを前記オペレーティングシステムに対してレポートする段階、を含む、
請求項１１に記載の方法。
【請求項１３】
前記ＢＩＯＳに警告するステップは、
前記コンピュータのプロセッサが、前記プロセッサのロックされたコンフィグレーションビットを変更するためのインストラクションを実行する検出された試みに応じて、少なくとも一つのＢＩＯＳインストラクションを実行する段階、を含む、
請求項１１に記載の方法。
【請求項１４】
前記ＢＩＯＳに警告するステップは、
前記コンピュータのプロセッサが、前記プロセッサのシステムマネジメントモードの最中に、前記プロセッサをシステムマネジメントモードインストラクションに対して期待されるロケーションの外部に保管されたインストラクションを実行するように仕向けるためのインストラクションを実行する試みに応じて、少なくとも一つのＢＩＯＳインストラクションを実行する段階、を含む、
請求項１１に記載の方法。
【請求項１５】
前記検出をレポートするために前記ＢＩＯＳを使用するステップは、
前記コンピュータのプロセッサが、少なくとも部分的にコードセレクタとプロセッサのインストラクションポインタに基づいて、前記悪意あるソフトウェア活動に関する少なくとも一つのマシンで実行可能なインストラクションのアドレスを報告する段階、を含む、
請求項１１に記載の方法。
【請求項１６】
前記検出をレポートするために前記ＢＩＯＳを使用するステップは、
前記コンピュータのプロセッサが、少なくとも部分的にゼネラルプロテクションエクセプション（ＧＰＥ）ハンドラによって使用されるスタックコンテンツに基づいて、前記悪意あるソフトウェア活動に関する少なくとも一つのマシンで実行可能なインストラクションのアドレスを報告する段階、を含む、
請求項１１に記載の方法。
【請求項１７】
レポートするために前記ＢＩＯＳを使用するステップは、
前記コンピュータのプロセッサが、前記オペレーティングシステムによってアクセス可能なメモリを、前記悪意あるソフトウェア活動に関する少なくとも一つの実行可能なインストラクションのアドレスを表すデータで更新する段階、を含む、
請求項１１に記載の方法。
【請求項１８】
レポートするために前記ＢＩＯＳを使用するステップは、
前記コンピュータのプロセッサが、前記検出された悪意あるソフトウェア活動について前記オペレーティングシステムに対して警告するために、プロセッサレジスタのコンテンツを変更する段階、を含む、
請求項１１に記載の方法。
【請求項１９】
請求項１１乃至１８いずれか一項に記載の方法を実行するように構成されたプロセッサを含む、装置。
【請求項２０】
コンピュータデバイス上で実行されると、請求項１１乃至１８いずれか一項に記載の方法を前記コンピュータデバイスに実行させる複数のインストラクションを含む、少なくとも一つのマシンで読取り可能な媒体。
【請求項２１】
コンピュータデバイス上で実行されると、請求項１１乃至１８いずれか一項に記載の方法を前記コンピュータデバイスに実行させる複数のインストラクションを含む、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オペレーティングシステムに対する悪意ある活動のレポートに関する。
【背景技術】
【０００２】
悪意あるソフトウェア（「マルウェア（”ｍａｌｗａｒｅ”）」とも呼ばれるもの）は、コンピュータによって実行されると、コンピュータのパフォーマンスに不利に影響し、及び/又は、コンピュータ上に保管されているデータの整合性を傷つけてしまう、認定されていないインストラクションのことをいう。例えば、悪意あるソフトウェアは、アプリケーションに対するアクセスの取得、コンピュータのオペレーションの崩壊、コンピュータ上に保管されたデータの消去、機密情報（例えば、パスワードまたは個人情報）の収集、コンピュータのユーザの振る舞いを追跡、意図しないオペレーションのためのコンピュータ使用、等を行う。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
悪意あるソフトウェアは、多くの異なる形式においてパッケージされ得る。例えば、悪意あるソフトウェアは、ウイルスであり、自分自身を一つのコンピュータから次のコンピュータへ複製する。また、害を与えないようにみえる（例えば、認定されたサプライヤによって提供されたもののようにみえる）トロイの木馬であり、それによって悪意のある目的を偽装している。また、ネットワークセキュリティを通じて繁殖するワーム（ｗｏｒｍ）、等である。
【課題を解決するための手段】
【０００４】
本装置は、オペレーティングシステムによってアクセス可能なメモリ、および、基本入力／出力システム（ＢＩＯＳ）ハンドラを含んでいる。ＢＩＯＳハンドラは、検出された悪意あるソフトウェア活動に反応して、データをメモリに保管してオペレーティングシステムに対して活動をレポートする。
【図面の簡単な説明】
【０００５】
【図１】図１は、本発明の一つの典型的な実施例に従ったコンピュータの模式的なダイヤグラムである。
【図２】図２は、本発明の一つの典型的な実施例に従って、検出された悪意ある活動を図１のコンピュータのオペレーティングシステムに対してレポートする技術を説明するフローチャートである。
【図３】図３は、本発明の一つの典型的な実施例に従って、悪意ある活動を検出して、オペレーティングシステムに対してレポートする技術を説明する図である。
【図４】図４は、本発明の一つの典型的な実施例に従って、悪意ある活動を検出して、オペレーティングシステムに対してレポートする技術を説明する図である。
【図５】図５は、本発明の一つの典型的な実施例に従った図１のコンピュータに係るハードウェアアーキテクチャの模式的なダイヤグラムである。
【発明を実施するための形態】
【０００６】
図１を参照すると、コンピュータ１０は、ここにおいて開示される実施例に従えば、マシンで実行可能なインストラクションまたは「ソフトウェア」等といったものを実行し、コンピュータ１０による意図しない悪意あるソフトウェア７４の実行のせいで悪意ある活動にさらされることがある。このコンテクスト（ｃｏｎｔｅｘｔ）において、「悪意あるソフトウェア７４」は、「悪意ある活動（”ｍａｌｉｃｉｏｕｓ  ａｃｔｉｖｉｔｙ”）」を引き起こす目的のためにコンピュータ１０の一つまたはそれ以上のプロセッサ２２によって実行され得る認定されていないマシンで実行可能なインストラクションを参照する。または、コンピュータ１０のパフォーマンスに不利な影響する活動（限定でない例として）といった、コンピュータ１０上での認定されていない活動を参照する。すなわち、アクセスを許可してコンピュータ１０によって保管または収集されたデータをコピー及び/又は破損すること、アクセスを許可してコンピュータ１０によって保管またはアクセスされた一つまたはそれ以上のファイルをコピー及び/又は変更すること、視覚的及び/又は聴覚的な出力をコンピュータ１０上に表示すること、マシンで実行可能なインストラクションを破損すること、コンピュータ１０の一つまたはそれ以上の機能へのアクセスをコントロールすること、及び/又は、コンピュータ１０上に保管されているデータの整合性を損なうこと、である。
【０００７】
悪意あるソフトウェア７４は、いくつかの異なる処理レベルのあらゆるレベルにおいて実行され得る。限定でない例として、オペレーティングシステムレベル、または、基本入力／出力システム（ＢＩＯＳ）レベル、といったレベルにおけるものである。悪意あるソフトウェア７４は、数多くの異なる形式のうちあらゆる形式においてパッケージされ得る。アドウェア、スパイウェア、ウイルス、トロイの木馬、ワーム、ルートキット、等、といったものである。さらに、悪意あるソフトウェア７４は、コンパイルされたマシンで実行可能なインストラクションであるか、コンパイルされていないマシンで実行可能なインストラクションであり得る。従って、悪意あるソフトウェア７４は、限定でない例として、コンパイルされたプログラムコードはもちろんスクリプトも含み得るものである。
【０００８】
プロセッサ２２は、悪意あるソフトウェアの実行による悪意ある活動を検出するためのいくつかのメカニズムを含んでいる。しかしながら、ここにおいて開示されるシステムおよび技術が無ければ、プロセッサによる悪意ある活動の検出は、オペレーティングシステムによっては知られないままであり、そうであるため、好適な是正処置を行うことができない。限定でない例として、オペレーティングシステム６２によって行われる是正処置は、悪意あるソフトウェア７４に対する一つまたはそれ以上の手段を（アプリケーションを通じて、または、直接的にオペレーティングシステム６２自身を通じて）行うオペレーティングシステム６２を含んでいる。悪意あるソフトウェア７４を封じ込めること又は削除すること、悪意あるソフトウェア７４によって冒されたファイルを修復すること、悪意あるソフトウェア７４によって冒されたデータを回復すること、悪意あるソフトウェア７４によって冒された一つまたはそれ以上のアプリケーションを修復すること、悪意あるソフトウェア７４に関してコンピュータ１０のユーザに知らせること、等を行う。
【０００９】
より特定的には、ここにおいて開示されるシステムおよび技術に従って、プロセッサ２２は、システムマネジメントモード（ＳＭＭ）を使用して、プロセッサ２２によって検出されたあらゆる悪意ある活動をコンピュータ１０のオペレーティングシステム６２に対してレポートする。このようにして、オペレーションの最中に、プロセッサ２２は時折ＳＭＭに入り、そこでプロセッサ２２は、オペレーティングシステム６２の実行をサスペンドして、コンピュータ１０のＢＩＯＳに関連するインストラクションを実行する。当業者によって正しく理解され得るように、メモリまたはチップセットのエラーに付属するシステムイベントを取扱い、温度管理オペレーションを実行し、セキュリティ機能を実行し、信頼されたメモリと通信する、等といった目的のためである。ここにおいて説明されるように、プロセッサ２２は、プロセッサ２２によって検出された悪意ある活動をコンピュータ１０のオペレーティングシステム６２に対してレポートするために、さらに、ＳＭＭにおいてアクションを行うことができる。
【００１０】
ここにおいて開示される実施例に従って、プロセッサ２２は、ＳＭＭに入っている場合に、あらゆる検出された悪意ある活動を、オペレーティングシステム６２によってアクセス可能または読出し可能なメモリ３０における一つまたはそれ以上の悪意ある活動ログ３２の中にログする。このようにして、悪意ある活動ログ３２は、あらゆる悪意ある活動に関してオペレーティングシステム６２に知らせ、かつ、検出された悪意ある活動のアドレスに関してオペレーティングシステム６２に知らせる。オペレーティングシステム６２が、好適な是正措置を取ることができるようにである。
【００１１】
図２を参照すると、図１に関連して、ここにおいて開示される本発明の典型的な実施例に従えば、技術８０は、コンピュータのＢＩＯＳに検出された悪意ある活動について警告すること（ブロック８２）、および、検出された悪意ある活動に関連する、一つまたはそれ以上のマシンで実行可能なインストラクションのアドレスまたはロケーションを判断するためにＢＩＯＳを使用すること（ブロック８４）、を含んでいる。ＢＩＯＳは、検出されたウイルス性の活動をオペレーティングシステムに対してレポートするために使用され（ブロック８６）、オペレーティングシステムは好適な是正措置を取ることができる。
【００１２】
図１に戻って参照すると、典型的な実施例に従えば、コンピュータ１０は「物理的マシン」であり、コンピュータが実際のソフトウェアとハードウェアでできていることを意味している。限定でない例として、コンピュータ１０は、クライアント、サーバ、スイッチ、ルータ、デスクトップコンピュータ、ポータブルコンピュータ、スマートフォン、タブレットコンピュータ、携帯電話、一つまたはそれ以上のこれらデバイスの組み合わせ、等であってよい。
【００１３】
より特定的には、物理的マシンであることで、コンピュータ１０は、一つまたはそれ以上のプロセッサ２２、メモリ４０（例えば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ））、ネットワークインターフェイス４４、等といったハードウェア２０を含んでいる。いくつかの実施例に従えば、プロセッサ２２は、マイクロプロセッサ（インテル製Ｘｅｏｎ（登録商標）マイクロプロセッサ）であってよく、一つまたはそれ以上のプロセッサコア２４を有し、種々のマシンで実行可能なインストラクション、または「ソフトウェア」を実行する。
【００１４】
典型的な実施例に従えば、プロセッサ２２は、プロセッサコア２４を含んでいる一つまたはそれ以上のダイ（ｄｉｅ）を有する集積回路パッケージであってよい。典型的な実施例に従えば、コンピュータ１０上で実行されるソフトウェアは、一つまたはそれ以上のアプリケーション６６を含んでよい。すなわち、一つまたはそれ以上のドライバ６８、悪意ある活動であるシステムマネジメントインタラプト（ＳＭＩ）ハンドラ７０を含む（以下にさらに説明される）ＢＩＯＳ７５、および、オペレーティングシステム６２である。
【００１５】
所定の実施例に応じて、オペレーティングシステム６２は、「ホスト」オペレーティングシステムであってよい。つまり、コンピュータ１０上にインストールされ、仮想環境において動作しないオペレーティングシステムである。または、代替的に、オペレーティングシステム６２は、仮想環境において動作する「ゲスト」オペレーティングシステムシステムであってよい。この点で、「ゲスト」オペレーティングシステムは、仮想マシン（ＶＭ）に関係付けられてよく、コンピュータ１０の物理的リソースをコンピュータ１０に係る他の類似のＶＭと共有する。これらの物理的リソースは、限定でない例として、ハードウェア２０とマシンで実行可能なインストラクション６０の種々のコンポーネントを含んでいる。
【００１６】
より特定的な例として、所定のゲストオペレーティングシステムは、仮想マシンモニタ（ＶＭＭ）または「ハイパーバイザ（”ｈｙｐｅｒｖｉｓｏｒ”）」であってよく、ハードウェア２０を含む、コンピュータ１０の物理的リソースのＶＭによる共有を管理する。一般的に、ＶＭＭは、それぞれのＶＭのオペレーティングシステムとコンピュータ１０の根本的なハードウェア２０との間のインターフェイスを提供する。
【００１７】
このアプリケーションのコンテクストにおいて、用語「オペレーティングシステム」は、このようにホストオペレーティングシステムを参照するものであり、ＶＭＭといった、ゲストオペレーティングシステムも同様に参照する。さらに、いくつかの実施例に従えば、「オペレーティングシステム」は、ＯＳまたはＭＶＭＭ（Ｍｅａｓｕｒｅｄ  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｍｏｎｉｔｏｒ）といった、信頼されたオペレーティングシステムであってよい。典型的な実施例に従えば、コンピュータ１０は、複数のオペレーティングシステム６２（一つのオペレーティングシステムと一つまたはそれ以上のゲストオペレーティングシステム）を有し得ることに留意すべきである。
【００１８】
いくつかの実施例に従えば、コンピュータ１０は、ピア（ｐｅｅｒ）モニタを含んでよい。システムマネジメントインタラプト（ＳＭＩ）トランスファモニタ（ＳＴＭ）７３とも呼ばれるものであり、メインのハイパーバイザと並行に実行され、ＯＥＭのＳＭＭをゲストとしてホストすることを許可するハイパーバイザである。ＳＴＭ７３は、従って、ここにおいて開示されるように、ＳＭＩハンドラ７０の警告／回復ロジックを有してよい。そして、ＳＴＭ７３がＯＥＭのＳＭＭコードの下で実行されるので、ＳＴＭ７３は、ＯＥＭのＳＭＭコードよりも高い優先度を有している。ＳＴＭ７３は、ＣＰＵベンダによって引き渡されてよい。
【００１９】
プロセッサ２２は、多くの方法のうちの一つにおいて悪意あるソフトウェア７４の実行から生じる悪意ある活動を検出することができる。限定でない例として、プロセッサ２２は、悪意あるソフトウェア７４がプロセッサ２２のコンフィグレーションビット２６を変更しようと試みるときを検出することによって、悪意ある活動を検出し得る。例えば、コンフィグレーションビット２６は、プロセッサ２２のコンフィグレーションスペースレジスタ（ＣＳＲ）ビットであってよく、チップセットとプロセッサのコンフィグレーションをエンコードするものである。プロセッサ２２は、悪意あるソフトウェア７４がコンフィグレーションビット２６を変更することを妨げるために、「ロックス（”ｌｏｃｋｓ”）」と呼ばれる、セキュリティ機能を含んでよい。そして、さらに、ビット２６を変更するための認定されていない試みが行われたとき（つまり、ロックスを取り除くことなくコンフィグレーションビット２６を変更するための試みがなされたとき）を検出するために、コンフィグレーションビット２６に対して試行されたアクセスをモニタするためのロジックを含んでよい。典型的な実施例に従えば、コンフィグレーションビット２６の変更を試みる悪意あるソフトウェア７４に応じて、プロセッサのロジックは、その試みに関してＢＩＯＳ７５に知らせるために、システムマネジメントインタラプト（ＳＭＩ）を生成することによって対応する。
【００２０】
別の限定でない例として、プロセッサ２２は、ＳＭＭの最中に、指定されたＳＭＭメモリ領域２８の外部でインストラクションを実行しようとする試みを検出することによって、悪意ある活動を検出することができる。このように、悪意あるソフトウェア７４は、ＳＭＭにおけるプロセッサの実行を、認定されたＳＭＭインストラクションの代わりに、悪意あるインストラクションへ向けるように試みる。プロセッサ２２は、こうした試された実行を検出して、ゼネラルプロテクションエクセプション（ＧＰＥ）をアサートするためのロジックを含んでよい。ロジックは、次に、現在のセッションがＳＭＭからのリターン（ＲＳＭ）を行った後で、ＳＭＩをトリガして、そうした試みに関してＢＩＯＳ７５に知らせる。このように、実施例に従えば、ＲＳＭに際して、プロセッサ２２は、ＳＭＩを処理するためにＳＭＭに戻る。
【００２１】
いくつかの実施例に従って、コンピュータ１０は、悪意ある活動の検出に応じて、ＳＭＩハンドラ７０（つまり、ＢＩＯＳハンドラ）を呼び出す。一般的に、ＳＭＩハンドラはＢＩＯＳ７５の一部分であり、検出された悪意ある活動をオペレーティングシステム６２に対してレポートする。より特定的には、典型的な実施例に従えば、ハンドラ７０は、悪意あるソフトウェア７４のアドレスを判断し、そのアドレスを悪意ある活動ログ３２の中にログし、かつ、オペレーティングシステムコードの実行が再開されたときに、オペレーティングシステム６２に警告してログ３２を確認させるために信号をアサートする。このように、プロセッサ２２がＳＭＭから戻りオペレーティングシステムのインストラクションの実行を再開する場合、オペレーティングシステム６２のハンドラ６４は、信号に応じてログ３２を読み出す。ハンドラは、検出された悪意ある活動をオペレーティングシステム６２に報告し、悪意あるソフトウェア７４のアドレスも同様に報告しする。オペレーティングシステム６２が、好適な是正措置を取ることができるようにである。
【００２２】
典型的な実施例に従えば、メモリ３０は、プロセッサ２２の拡張マシンチェックアーキテクチャ（ｅＭＣＡ）メモリ２２である。プロセッサ２２の一つまたはそれ以上のレジスタといったものである。一般的に、ｅＭＣＡメモリは、エラーステータスバンクを含んでおり、バンクは、ＳＭＭによってソフトウェアおよびハードウェアのエラーをログするといった他の目的のために使用される。プロセッサ２２がＳＭＭから戻る際に、ＳＭＭによって特定された、ハードウェア及び/又はソフトウェアのエラーを特定する目的のために、オペレーティングシステム６２がｅＭＣＡメモリ３０を読み出すようにである。ここにおいて開示される典型的な技術およびシステムに従って、ｅＭＣＡメモリ３０は、さらに、検出されたあらゆる悪意ある活動を列挙するログ３２を含んでよい。
【００２３】
より特定的な実施例として、図３は、検出された悪意ある活動に応じて、コンピュータ１０によって取られるアクションの説明図１００である。図１に関連して図３を参照すると、この実施例では、プロセッサ２２は、ＳＭＭにおいて、実行パス（ｐａｔｈ）１０６に沿ってＳＭＭインストラクション１０４を実行している。プロセッサの実行を、ＳＭＭ実行領域２８の外部にある悪意あるインストラクション１１０に転換するための試みが（パス１０８で示されるように）なされるときにである。プロセッサ２２は、この試みを検出し、それに応じて、ゼネラルプロテクションエクセプション（ＧＰＥ）１１１を生成して、ＧＰＥハンドラ１１２を呼び出す。一般的に、ＧＰＥハンドラ１１２は、メモリ、またはスタックを使用して、悪意あるインストラクション１１０のアドレスまたはロケーションを保管する。ＧＰＥハンドラは、さらに、ＳＭＩ１１４を生成して、ＳＭＩハンドラ７０を呼び出す。
【００２４】
ＳＭＩハンドラ７０は、メモリ３０の中にログ３２を作成し、ログは、悪意あるインストラクション１１０のロケーションを含んでいる。ＧＰＥハンドラ１１２のスタックに保管されたロケーションによって指示されるようにである。ＳＭＩハンドラ７０は、次に、１２４に進んで終了する。終了の際に、ハンドラは、オペレーティングシステム６２に対してメモリ３０を確認するように警告する１３０。
【００２５】
限定でない例として、いくつかの実施例に従えば、ウイルス性のＳＭＩハンドラ７０は、”ＳＩＧＮＡＬ＿ＭＣＥ”と呼ばれる信号をアサートし、ＳＭＭ終了に際してＭＣＡインタラプトを生成する。ＭＣＡインタラプトは、今度は、オペレーティングシステムのインストラクションが再開するときに、オペレーティングシステム６２にメモリ３０を確認させる。限定でない例として、いくつかの実施例に従えば、ＳＩＧＮＡＬ＿ＭＣＥ信号は、プロセッサ２２のレジスタビットによって設定されてよい。従って、ＳＩＧＮＡＬ＿ＭＣＥ信号のアサーション（ａｓｓｅｒｔｉｏｎ）に応じて、ハンドラ６４が呼び出され、検出された悪意ある活動と悪意ある活動のアドレスがログ３２を介してハンドラに知らされる。ハンドラ６４は、そして、好適な是正措置を取ることができる。
【００２６】
図４は、別の実施例に従って、悪意ある活動に応じてコンピュータ１０が取る行為を示している。図１と併せて図４を参照すると、この典型的な悪意ある活動に対して、オペレーティングシステム６２の悪意あるインストラクション１５２は、参照番号１５４と１５８によって示されているように、プログラム２２のロックされたコンフィグレーションビット２２へのアクセスを試みる。プロセッサ２２は、この試みられたアクセスを検出し、対応してＳＭＩを生成する１６０。そして、プロセッサをＳＭＭに入らせ、ＳＭＩハンドラ７０を呼び出させる。
【００２７】
この実施例に対して、ＳＭＩハンドラ７０は、プロセッサのセレクタとインタラクションポインタ（ＣＳ：ＲＩＰ）のコンテンツを検査することによって悪意あるインストラクションのアドレスを判断する。ハンドラ５０は、そして、メモリ３０のログ３２の中に対応するログを作成する。ログは、悪意あるインストラクション１５２のアドレスを含んでいる。ＳＭＩハンドラ７０は、次に、１７０に進んでＳＭＭモードを終了し、オペレーティングシステム６２に対して警告する１７４。限定でない例として、この警告は、ＳＩＧＮＡＬ＿ＭＣＥ信号をアサートすることを含んでよく、ＭＣＥインタラプトのアサーションを生じさせる。こうして、ＳＩＧＮＡＬ＿ＭＣＥ信号のアサーションにより、オペレーティングシステムハンドラ６４は、検出された悪意ある活動および悪意ある活動のアドレスを、ログ３２を介して知らされる。そして、オペレーティングシステムハンドラ６４は、次に、好適な是正措置を取ることができる１７６。
【００２８】
図５を参照すると、典型的な実施例に従って、コンピュータ１０は一つのハードウェアアーキテクチャ２００を有してよい。しかし、コンピュータ１０は、さらなる実施例に従って、他のハードウェアアーキテクチャを有してもよい。さらに、図５に示される実施例は簡素化されており、他の実施例に従えば、ハードウェアアーキテクチャ２００は、追加の又は異なるコンポーネントを有してよい。
【００２９】
この実施例に対して、アーキテクチャ２００は、複数のプロセッサ２２（限定でない例として、図５ではプロセッサ２２−１と２２−２が示されている）を含んでおり、フロント側バス２０４に接続されている。メモリコントローラハブ（ＭＣＨ）２０８は、フロント側バス２０４に接続されており、メモリ４０へのアクセスをコントロールし、同様に、プロセッサに対して入力／出力  Ｉ／Ｏコントローラハブ（ＩＣＨ）２１４へのアクセスを提供する。このようにして、ＭＣＨ２０８とＩＣＨ２１４は、ハブリンク２１２を通してコミュニケーションすることができる。
【００３０】
一般的に、ＩＣＨ２１４は、ユニバーサルシリアルバス（ＵＳＢ）上のオペレーションをコントロールする。限定でない例として、ＵＳＢ２２４は、ユニバーサルシリアルバス３．０仕様、１．０改訂版、２０１１年６月６日、に準じるものである。ＩＣＨ２１４は、さらに、例えば、Ｉ／Ｏ拡張バス２２８といった、一つまたはそれ以上のバス上のオペレーションをコントロールする。さらに、ＩＣＨ２１４は、ネットワークインターフェイス４４とコミュニケーションして、少なくとも一つのハードドライブ２２０のオペレーションをコントロールする。
【００３１】
以降の実施例は、さらなる具体例に関するものである。
【００３２】
一つの実施例において、本装置は、オペレーティングシステムによってアクセス可能なメモリと、検出された悪意あるソフトウェア活動に応じて、前記メモリの中にデータを保管して、前記活動を前記オペレーティングシステムに対してレポートする、基本入力／出力システム（ＢＩＯＳ）ハンドラと、を含む。
【００３３】
いくつかの実施例において、前記ＢＩＯＳハンドラは、前記悪意あるソフトウェア活動に関する少なくとも一つの実行可能なインストラクションのアドレスを判断し、かつ、前記アドレスを表すデータを前記メモリの中に保管する。いくつかの実施例において、前記メモリは、マイクロプロセッサのレジスタの少なくとも一つのビットを含む。いくつかの実施例において、前記ＢＩＯＳハンドラは、信号をアサートして、前記オペレーティングシステムに対して前記メモリを確認するように警告する。いくつかの実施例において、前記ＢＩＯＳハンドラは、システムマネジメントインタラプトに応じて呼び出される。いくつかの実施例において、前記ＢＩＯＳハンドラは、プロセッサのロックされたコンフィグレーションビットを変更するためのインストラクションを実行する試みを検出したことに応じて、呼び出されるように適合されている。いくつかの実施例において、前記ＢＩＯＳハンドラは、システムマネジメントモードの最中に、プロセッサの実行をシステムマネジメントモードインストラクションに対して期待されるロケーションの外部に保管されたインストラクションへ向けるためのインストラクションを実行する試みに応じて、呼び出されるように適合されている。いくつかの実施例において、前記ＢＩＯＳハンドラは、少なくとも部分的にコードセレクタとプロセッサのインストラクションポインタに基づいて、前記悪意あるソフトウェア活動に関する少なくとも一つの実行可能なインストラクションのアドレスを判断するように適合されている。いくつかの実施例において、前記ＢＩＯＳハンドラは、ゼネラルプロテクションエクセプション（ＧＰＥ）ハンドラによって使用されるスタックから、前記悪意あるソフトウェア活動に関する少なくとも一つの実行可能なインストラクションのアドレスを判断するように適合されている。いくつかの実施例において、前記オペレーティングシステムは、ホストオペレーティングシステムまたはゲストオペレーティングシステムである。
【００３４】
いくつかの実施例において、本方法は、ＢＩＯＳに、検出された前記コンピュータ上での悪意あるソフトウェア活動について警告するステップと、前記コンピュータのオペレーティングシステムに対して前記検出をレポートするために、前記ＢＩＯＳを使用するステップと、を含む。
【００３５】
いくつかの実施例において、前記ＢＩＯＳを使用するステップは、前記悪意あるソフトウェア活動に関する少なくとも一つのマシンで実行可能なインストラクションのアドレスを前記オペレーティングシステムに対してレポートする段階、を含む。いくつかの実施例において、前記ＢＩＯＳに警告するステップは、プロセッサのロックされたコンフィグレーションビットを変更するためのインストラクションを実行する検出された試みに応じて、少なくとも一つのＢＩＯＳインストラクションを実行する段階、を含む。いくつかの実施例において、前記ＢＩＯＳに警告するステップは、プロセッサのシステムマネジメントモードの最中に、前記プロセッサをシステムマネジメントモードインストラクションに対して期待されるロケーションの外部に保管されたインストラクションを実行するように仕向けるためのインストラクションを実行する試みに応じて、少なくとも一つのＢＩＯＳインストラクションを実行する段階、を含む。いくつかの実施例において、前記検出をレポートするために前記ＢＩＯＳを使用するステップは、少なくとも部分的にコードセレクタとプロセッサのインストラクションポインタに基づいて、前記悪意あるソフトウェア活動に関する少なくとも一つのマシンで実行可能なインストラクションのアドレスを報告する段階、を含む。いくつかの実施例において、前記検出をレポートするために前記ＢＩＯＳを使用するステップは、少なくとも部分的にゼネラルプロテクションエクセプション（ＧＰＥ）ハンドラによって使用されるスタックコンテンツに基づいて、前記悪意あるソフトウェア活動に関する少なくとも一つのマシンで実行可能なインストラクションのアドレスを報告する段階、を含む。いくつかの実施例において、レポートするために前記ＢＩＯＳを使用するステップは、前記オペレーティングシステムによってアクセス可能なメモリを、前記悪意あるソフトウェア活動に関する少なくとも一つの実行可能なインストラクションのアドレスを表すデータで更新する段階、を含む。いくつかの実施例において、レポートするために前記ＢＩＯＳを使用するステップは、前記検出された悪意あるソフトウェア活動について前記オペレーティングシステムに対して警告するために、プロセッサレジスタのコンテンツを変更する段階、を含む。
【００３６】
いくつかの実施例において、本装置は、上記に説明された方法に係る機能を実行するように構成されたプロセッサを含む。
【００３７】
いくつかの実施例において、少なくとも一つのマシンで読取り可能な媒体は、コンピュータデバイス上で実行されると、上記に説明された方法の機能を前記コンピュータデバイスに実行させる複数のインストラクションを含む。
【００３８】
ここにおいて、限られた数の実施例が開示されてきたが、この発明開示の利益を有しことで、当業者であれば、そうした実施例から多くの変形およびバリエーションを理解するであろう。添付の特許請求の範囲は、全てのこうした変形およびバリエーションをカバーするように意図されたものである。
【図１】
0005951879.tif 000002
【図２】
0005951879.tif 000003
【図３】
0005951879.tif 000004
【図４】
0005951879.tif 000005
【図５】
0005951879.tif 000006