特許第5951879号(P5951879)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インテル コーポレイションの特許一覧

特許5951879オペレーティングシステムに対する悪意ある活動のレポート
<>
  • 特許5951879-オペレーティングシステムに対する悪意ある活動のレポート 図000002
  • 特許5951879-オペレーティングシステムに対する悪意ある活動のレポート 図000003
  • 特許5951879-オペレーティングシステムに対する悪意ある活動のレポート 図000004
  • 特許5951879-オペレーティングシステムに対する悪意ある活動のレポート 図000005
  • 特許5951879-オペレーティングシステムに対する悪意ある活動のレポート 図000006
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5951879
(24)【登録日】2016年6月17日
(45)【発行日】2016年7月13日
(54)【発明の名称】オペレーティングシステムに対する悪意ある活動のレポート
(51)【国際特許分類】
   G06F 21/55 20130101AFI20160630BHJP
   G06F 21/56 20130101ALI20160630BHJP
【FI】
   G06F21/55 320
   G06F21/56 360
【請求項の数】21
【全頁数】13
(21)【出願番号】特願2015-501648(P2015-501648)
(86)(22)【出願日】2012年3月30日
(65)【公表番号】特表2015-514252(P2015-514252A)
(43)【公表日】2015年5月18日
(86)【国際出願番号】US2012031511
(87)【国際公開番号】WO2013147859
(87)【国際公開日】20131003
【審査請求日】2014年9月18日
(73)【特許権者】
【識別番号】593096712
【氏名又は名称】インテル コーポレイション
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100091214
【弁理士】
【氏名又は名称】大貫 進介
(72)【発明者】
【氏名】サクティクマール,パルサミー
(72)【発明者】
【氏名】ジンマー,ヴィンセント ジェイ.
(72)【発明者】
【氏名】スワンソン,ロバート シー.
【審査官】 岸野 徹
(56)【参考文献】
【文献】 特表2014−514651(JP,A)
【文献】 特表2005−528690(JP,A)
【文献】 米国特許出願公開第2004/0123090(US,A1)
【文献】 米国特許出願公開第2003/0226022(US,A1)
【文献】 米国特許出願公開第2012/0255012(US,A1)
【文献】 国際公開第2012/135192(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/55
G06F 21/56
(57)【特許請求の範囲】
【請求項1】
オペレーティングシステムによってアクセス可能なメモリと、
検出された悪意あるソフトウェア活動に応じて、前記メモリの中にデータを保管して、前記活動を前記オペレーティングシステムに対してレポートする、基本入力/出力システム(BIOS)ハンドラと、
を含む、装置。
【請求項2】
前記BIOSハンドラは、前記悪意あるソフトウェア活動に関する少なくとも一つの実行可能なインストラクションのアドレスを判断し、かつ、前記アドレスを表すデータを前記メモリの中に保管する、
請求項1に記載の装置。
【請求項3】
前記メモリは、マイクロプロセッサのレジスタの少なくとも一つのビットを含む、
請求項1に記載の装置。
【請求項4】
前記BIOSハンドラは、信号をアサートして、前記オペレーティングシステムに対して前記メモリを確認するように警告する、
請求項1に記載の装置。
【請求項5】
前記BIOSハンドラは、システムマネジメントインタラプトに応じて呼び出される、
請求項1に記載の装置。
【請求項6】
前記BIOSハンドラは、プロセッサのロックされたコンフィグレーションビットを変更するためのインストラクションを実行する試みを検出したことに応じて、呼び出されるように適合されている、
請求項1に記載の装置。
【請求項7】
前記BIOSハンドラは、システムマネジメントモードの最中に、プロセッサの実行をシステムマネジメントモードインストラクションに対して期待されるロケーションの外部に保管されたインストラクションへ向けるためのインストラクションを実行する試みに応じて、呼び出されるように適合されている、
請求項1に記載の装置。
【請求項8】
前記BIOSハンドラは、少なくとも部分的にコードセレクタとプロセッサのインストラクションポインタに基づいて、前記悪意あるソフトウェア活動に関する少なくとも一つの実行可能なインストラクションのアドレスを判断するように適合されている、
請求項1に記載の装置。
【請求項9】
前記BIOSハンドラは、ゼネラルプロテクションエクセプション(GPE)ハンドラによって使用されるスタックから、前記悪意あるソフトウェア活動に関する少なくとも一つの実行可能なインストラクションのアドレスを判断するように適合されている、
請求項1に記載の装置。
【請求項10】
前記オペレーティングシステムは、ホストオペレーティングシステムまたはゲストオペレーティングシステムを含む、
請求項1に記載の装置。
【請求項11】
コンピュータのプロセッサが、
オペレーティングシステムによってメモリにアクセスするステップと、
検出された前記コンピュータ上での悪意あるソフトウェア活動に応じて、前記メモリの中にデータを保管するステップと、
前記コンピュータの基本入力/出力オペレーティングシステム(BIOS)に、前記検出された前記コンピュータ上での悪意あるソフトウェア活動について警告するステップと、
前記コンピュータの前記オペレーティングシステムに対して前記検出をレポートするために、前記BIOSを使用するステップと、
を含む、方法。
【請求項12】
前記BIOSを使用するステップは、
前記コンピュータのプロセッサが、前記悪意あるソフトウェア活動に関する少なくとも一つのマシンで実行可能なインストラクションのアドレスを前記オペレーティングシステムに対してレポートする段階、を含む、
請求項11に記載の方法。
【請求項13】
前記BIOSに警告するステップは、
前記コンピュータのプロセッサが、前記プロセッサのロックされたコンフィグレーションビットを変更するためのインストラクションを実行する検出された試みに応じて、少なくとも一つのBIOSインストラクションを実行する段階、を含む、
請求項11に記載の方法。
【請求項14】
前記BIOSに警告するステップは、
前記コンピュータのプロセッサが、前記プロセッサのシステムマネジメントモードの最中に、前記プロセッサをシステムマネジメントモードインストラクションに対して期待されるロケーションの外部に保管されたインストラクションを実行するように仕向けるためのインストラクションを実行する試みに応じて、少なくとも一つのBIOSインストラクションを実行する段階、を含む、
請求項11に記載の方法。
【請求項15】
前記検出をレポートするために前記BIOSを使用するステップは、
前記コンピュータのプロセッサが、少なくとも部分的にコードセレクタとプロセッサのインストラクションポインタに基づいて、前記悪意あるソフトウェア活動に関する少なくとも一つのマシンで実行可能なインストラクションのアドレスを報告する段階、を含む、
請求項11に記載の方法。
【請求項16】
前記検出をレポートするために前記BIOSを使用するステップは、
前記コンピュータのプロセッサが、少なくとも部分的にゼネラルプロテクションエクセプション(GPE)ハンドラによって使用されるスタックコンテンツに基づいて、前記悪意あるソフトウェア活動に関する少なくとも一つのマシンで実行可能なインストラクションのアドレスを報告する段階、を含む、
請求項11に記載の方法。
【請求項17】
レポートするために前記BIOSを使用するステップは、
前記コンピュータのプロセッサが、前記オペレーティングシステムによってアクセス可能なメモリを、前記悪意あるソフトウェア活動に関する少なくとも一つの実行可能なインストラクションのアドレスを表すデータで更新する段階、を含む、
請求項11に記載の方法。
【請求項18】
レポートするために前記BIOSを使用するステップは、
前記コンピュータのプロセッサが、前記検出された悪意あるソフトウェア活動について前記オペレーティングシステムに対して警告するために、プロセッサレジスタのコンテンツを変更する段階、を含む、
請求項11に記載の方法。
【請求項19】
請求項11乃至18いずれか一項に記載の方法を実行するように構成されたプロセッサを含む、装置。
【請求項20】
コンピュータデバイス上で実行されると、請求項11乃至18いずれか一項に記載の方法を前記コンピュータデバイスに実行させる複数のインストラクションを含む、少なくとも一つのマシンで読取り可能な媒体。
【請求項21】
コンピュータデバイス上で実行されると、請求項11乃至18いずれか一項に記載の方法を前記コンピュータデバイスに実行させる複数のインストラクションを含む、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、オペレーティングシステムに対する悪意ある活動のレポートに関する。
【背景技術】
【0002】
悪意あるソフトウェア(「マルウェア(”malware”)」とも呼ばれるもの)は、コンピュータによって実行されると、コンピュータのパフォーマンスに不利に影響し、及び/又は、コンピュータ上に保管されているデータの整合性を傷つけてしまう、認定されていないインストラクションのことをいう。例えば、悪意あるソフトウェアは、アプリケーションに対するアクセスの取得、コンピュータのオペレーションの崩壊、コンピュータ上に保管されたデータの消去、機密情報(例えば、パスワードまたは個人情報)の収集、コンピュータのユーザの振る舞いを追跡、意図しないオペレーションのためのコンピュータ使用、等を行う。
【発明の概要】
【発明が解決しようとする課題】
【0003】
悪意あるソフトウェアは、多くの異なる形式においてパッケージされ得る。例えば、悪意あるソフトウェアは、ウイルスであり、自分自身を一つのコンピュータから次のコンピュータへ複製する。また、害を与えないようにみえる(例えば、認定されたサプライヤによって提供されたもののようにみえる)トロイの木馬であり、それによって悪意のある目的を偽装している。また、ネットワークセキュリティを通じて繁殖するワーム(worm)、等である。
【課題を解決するための手段】
【0004】
本装置は、オペレーティングシステムによってアクセス可能なメモリ、および、基本入力/出力システム(BIOS)ハンドラを含んでいる。BIOSハンドラは、検出された悪意あるソフトウェア活動に反応して、データをメモリに保管してオペレーティングシステムに対して活動をレポートする。
【図面の簡単な説明】
【0005】
図1図1は、本発明の一つの典型的な実施例に従ったコンピュータの模式的なダイヤグラムである。
図2図2は、本発明の一つの典型的な実施例に従って、検出された悪意ある活動を図1のコンピュータのオペレーティングシステムに対してレポートする技術を説明するフローチャートである。
図3図3は、本発明の一つの典型的な実施例に従って、悪意ある活動を検出して、オペレーティングシステムに対してレポートする技術を説明する図である。
図4図4は、本発明の一つの典型的な実施例に従って、悪意ある活動を検出して、オペレーティングシステムに対してレポートする技術を説明する図である。
図5図5は、本発明の一つの典型的な実施例に従った図1のコンピュータに係るハードウェアアーキテクチャの模式的なダイヤグラムである。
【発明を実施するための形態】
【0006】
図1を参照すると、コンピュータ10は、ここにおいて開示される実施例に従えば、マシンで実行可能なインストラクションまたは「ソフトウェア」等といったものを実行し、コンピュータ10による意図しない悪意あるソフトウェア74の実行のせいで悪意ある活動にさらされることがある。このコンテクスト(context)において、「悪意あるソフトウェア74」は、「悪意ある活動(”malicious activity”)」を引き起こす目的のためにコンピュータ10の一つまたはそれ以上のプロセッサ22によって実行され得る認定されていないマシンで実行可能なインストラクションを参照する。または、コンピュータ10のパフォーマンスに不利な影響する活動(限定でない例として)といった、コンピュータ10上での認定されていない活動を参照する。すなわち、アクセスを許可してコンピュータ10によって保管または収集されたデータをコピー及び/又は破損すること、アクセスを許可してコンピュータ10によって保管またはアクセスされた一つまたはそれ以上のファイルをコピー及び/又は変更すること、視覚的及び/又は聴覚的な出力をコンピュータ10上に表示すること、マシンで実行可能なインストラクションを破損すること、コンピュータ10の一つまたはそれ以上の機能へのアクセスをコントロールすること、及び/又は、コンピュータ10上に保管されているデータの整合性を損なうこと、である。
【0007】
悪意あるソフトウェア74は、いくつかの異なる処理レベルのあらゆるレベルにおいて実行され得る。限定でない例として、オペレーティングシステムレベル、または、基本入力/出力システム(BIOS)レベル、といったレベルにおけるものである。悪意あるソフトウェア74は、数多くの異なる形式のうちあらゆる形式においてパッケージされ得る。アドウェア、スパイウェア、ウイルス、トロイの木馬、ワーム、ルートキット、等、といったものである。さらに、悪意あるソフトウェア74は、コンパイルされたマシンで実行可能なインストラクションであるか、コンパイルされていないマシンで実行可能なインストラクションであり得る。従って、悪意あるソフトウェア74は、限定でない例として、コンパイルされたプログラムコードはもちろんスクリプトも含み得るものである。
【0008】
プロセッサ22は、悪意あるソフトウェアの実行による悪意ある活動を検出するためのいくつかのメカニズムを含んでいる。しかしながら、ここにおいて開示されるシステムおよび技術が無ければ、プロセッサによる悪意ある活動の検出は、オペレーティングシステムによっては知られないままであり、そうであるため、好適な是正処置を行うことができない。限定でない例として、オペレーティングシステム62によって行われる是正処置は、悪意あるソフトウェア74に対する一つまたはそれ以上の手段を(アプリケーションを通じて、または、直接的にオペレーティングシステム62自身を通じて)行うオペレーティングシステム62を含んでいる。悪意あるソフトウェア74を封じ込めること又は削除すること、悪意あるソフトウェア74によって冒されたファイルを修復すること、悪意あるソフトウェア74によって冒されたデータを回復すること、悪意あるソフトウェア74によって冒された一つまたはそれ以上のアプリケーションを修復すること、悪意あるソフトウェア74に関してコンピュータ10のユーザに知らせること、等を行う。
【0009】
より特定的には、ここにおいて開示されるシステムおよび技術に従って、プロセッサ22は、システムマネジメントモード(SMM)を使用して、プロセッサ22によって検出されたあらゆる悪意ある活動をコンピュータ10のオペレーティングシステム62に対してレポートする。このようにして、オペレーションの最中に、プロセッサ22は時折SMMに入り、そこでプロセッサ22は、オペレーティングシステム62の実行をサスペンドして、コンピュータ10のBIOSに関連するインストラクションを実行する。当業者によって正しく理解され得るように、メモリまたはチップセットのエラーに付属するシステムイベントを取扱い、温度管理オペレーションを実行し、セキュリティ機能を実行し、信頼されたメモリと通信する、等といった目的のためである。ここにおいて説明されるように、プロセッサ22は、プロセッサ22によって検出された悪意ある活動をコンピュータ10のオペレーティングシステム62に対してレポートするために、さらに、SMMにおいてアクションを行うことができる。
【0010】
ここにおいて開示される実施例に従って、プロセッサ22は、SMMに入っている場合に、あらゆる検出された悪意ある活動を、オペレーティングシステム62によってアクセス可能または読出し可能なメモリ30における一つまたはそれ以上の悪意ある活動ログ32の中にログする。このようにして、悪意ある活動ログ32は、あらゆる悪意ある活動に関してオペレーティングシステム62に知らせ、かつ、検出された悪意ある活動のアドレスに関してオペレーティングシステム62に知らせる。オペレーティングシステム62が、好適な是正措置を取ることができるようにである。
【0011】
図2を参照すると、図1に関連して、ここにおいて開示される本発明の典型的な実施例に従えば、技術80は、コンピュータのBIOSに検出された悪意ある活動について警告すること(ブロック82)、および、検出された悪意ある活動に関連する、一つまたはそれ以上のマシンで実行可能なインストラクションのアドレスまたはロケーションを判断するためにBIOSを使用すること(ブロック84)、を含んでいる。BIOSは、検出されたウイルス性の活動をオペレーティングシステムに対してレポートするために使用され(ブロック86)、オペレーティングシステムは好適な是正措置を取ることができる。
【0012】
図1に戻って参照すると、典型的な実施例に従えば、コンピュータ10は「物理的マシン」であり、コンピュータが実際のソフトウェアとハードウェアでできていることを意味している。限定でない例として、コンピュータ10は、クライアント、サーバ、スイッチ、ルータ、デスクトップコンピュータ、ポータブルコンピュータ、スマートフォン、タブレットコンピュータ、携帯電話、一つまたはそれ以上のこれらデバイスの組み合わせ、等であってよい。
【0013】
より特定的には、物理的マシンであることで、コンピュータ10は、一つまたはそれ以上のプロセッサ22、メモリ40(例えば、ダイナミックランダムアクセスメモリ(DRAM))、ネットワークインターフェイス44、等といったハードウェア20を含んでいる。いくつかの実施例に従えば、プロセッサ22は、マイクロプロセッサ(インテル製Xeon(登録商標)マイクロプロセッサ)であってよく、一つまたはそれ以上のプロセッサコア24を有し、種々のマシンで実行可能なインストラクション、または「ソフトウェア」を実行する。
【0014】
典型的な実施例に従えば、プロセッサ22は、プロセッサコア24を含んでいる一つまたはそれ以上のダイ(die)を有する集積回路パッケージであってよい。典型的な実施例に従えば、コンピュータ10上で実行されるソフトウェアは、一つまたはそれ以上のアプリケーション66を含んでよい。すなわち、一つまたはそれ以上のドライバ68、悪意ある活動であるシステムマネジメントインタラプト(SMI)ハンドラ70を含む(以下にさらに説明される)BIOS75、および、オペレーティングシステム62である。
【0015】
所定の実施例に応じて、オペレーティングシステム62は、「ホスト」オペレーティングシステムであってよい。つまり、コンピュータ10上にインストールされ、仮想環境において動作しないオペレーティングシステムである。または、代替的に、オペレーティングシステム62は、仮想環境において動作する「ゲスト」オペレーティングシステムシステムであってよい。この点で、「ゲスト」オペレーティングシステムは、仮想マシン(VM)に関係付けられてよく、コンピュータ10の物理的リソースをコンピュータ10に係る他の類似のVMと共有する。これらの物理的リソースは、限定でない例として、ハードウェア20とマシンで実行可能なインストラクション60の種々のコンポーネントを含んでいる。
【0016】
より特定的な例として、所定のゲストオペレーティングシステムは、仮想マシンモニタ(VMM)または「ハイパーバイザ(”hypervisor”)」であってよく、ハードウェア20を含む、コンピュータ10の物理的リソースのVMによる共有を管理する。一般的に、VMMは、それぞれのVMのオペレーティングシステムとコンピュータ10の根本的なハードウェア20との間のインターフェイスを提供する。
【0017】
このアプリケーションのコンテクストにおいて、用語「オペレーティングシステム」は、このようにホストオペレーティングシステムを参照するものであり、VMMといった、ゲストオペレーティングシステムも同様に参照する。さらに、いくつかの実施例に従えば、「オペレーティングシステム」は、OSまたはMVMM(Measured Virtual Machine Monitor)といった、信頼されたオペレーティングシステムであってよい。典型的な実施例に従えば、コンピュータ10は、複数のオペレーティングシステム62(一つのオペレーティングシステムと一つまたはそれ以上のゲストオペレーティングシステム)を有し得ることに留意すべきである。
【0018】
いくつかの実施例に従えば、コンピュータ10は、ピア(peer)モニタを含んでよい。システムマネジメントインタラプト(SMI)トランスファモニタ(STM)73とも呼ばれるものであり、メインのハイパーバイザと並行に実行され、OEMのSMMをゲストとしてホストすることを許可するハイパーバイザである。STM73は、従って、ここにおいて開示されるように、SMIハンドラ70の警告/回復ロジックを有してよい。そして、STM73がOEMのSMMコードの下で実行されるので、STM73は、OEMのSMMコードよりも高い優先度を有している。STM73は、CPUベンダによって引き渡されてよい。
【0019】
プロセッサ22は、多くの方法のうちの一つにおいて悪意あるソフトウェア74の実行から生じる悪意ある活動を検出することができる。限定でない例として、プロセッサ22は、悪意あるソフトウェア74がプロセッサ22のコンフィグレーションビット26を変更しようと試みるときを検出することによって、悪意ある活動を検出し得る。例えば、コンフィグレーションビット26は、プロセッサ22のコンフィグレーションスペースレジスタ(CSR)ビットであってよく、チップセットとプロセッサのコンフィグレーションをエンコードするものである。プロセッサ22は、悪意あるソフトウェア74がコンフィグレーションビット26を変更することを妨げるために、「ロックス(”locks”)」と呼ばれる、セキュリティ機能を含んでよい。そして、さらに、ビット26を変更するための認定されていない試みが行われたとき(つまり、ロックスを取り除くことなくコンフィグレーションビット26を変更するための試みがなされたとき)を検出するために、コンフィグレーションビット26に対して試行されたアクセスをモニタするためのロジックを含んでよい。典型的な実施例に従えば、コンフィグレーションビット26の変更を試みる悪意あるソフトウェア74に応じて、プロセッサのロジックは、その試みに関してBIOS75に知らせるために、システムマネジメントインタラプト(SMI)を生成することによって対応する。
【0020】
別の限定でない例として、プロセッサ22は、SMMの最中に、指定されたSMMメモリ領域28の外部でインストラクションを実行しようとする試みを検出することによって、悪意ある活動を検出することができる。このように、悪意あるソフトウェア74は、SMMにおけるプロセッサの実行を、認定されたSMMインストラクションの代わりに、悪意あるインストラクションへ向けるように試みる。プロセッサ22は、こうした試された実行を検出して、ゼネラルプロテクションエクセプション(GPE)をアサートするためのロジックを含んでよい。ロジックは、次に、現在のセッションがSMMからのリターン(RSM)を行った後で、SMIをトリガして、そうした試みに関してBIOS75に知らせる。このように、実施例に従えば、RSMに際して、プロセッサ22は、SMIを処理するためにSMMに戻る。
【0021】
いくつかの実施例に従って、コンピュータ10は、悪意ある活動の検出に応じて、SMIハンドラ70(つまり、BIOSハンドラ)を呼び出す。一般的に、SMIハンドラはBIOS75の一部分であり、検出された悪意ある活動をオペレーティングシステム62に対してレポートする。より特定的には、典型的な実施例に従えば、ハンドラ70は、悪意あるソフトウェア74のアドレスを判断し、そのアドレスを悪意ある活動ログ32の中にログし、かつ、オペレーティングシステムコードの実行が再開されたときに、オペレーティングシステム62に警告してログ32を確認させるために信号をアサートする。このように、プロセッサ22がSMMから戻りオペレーティングシステムのインストラクションの実行を再開する場合、オペレーティングシステム62のハンドラ64は、信号に応じてログ32を読み出す。ハンドラは、検出された悪意ある活動をオペレーティングシステム62に報告し、悪意あるソフトウェア74のアドレスも同様に報告しする。オペレーティングシステム62が、好適な是正措置を取ることができるようにである。
【0022】
典型的な実施例に従えば、メモリ30は、プロセッサ22の拡張マシンチェックアーキテクチャ(eMCA)メモリ22である。プロセッサ22の一つまたはそれ以上のレジスタといったものである。一般的に、eMCAメモリは、エラーステータスバンクを含んでおり、バンクは、SMMによってソフトウェアおよびハードウェアのエラーをログするといった他の目的のために使用される。プロセッサ22がSMMから戻る際に、SMMによって特定された、ハードウェア及び/又はソフトウェアのエラーを特定する目的のために、オペレーティングシステム62がeMCAメモリ30を読み出すようにである。ここにおいて開示される典型的な技術およびシステムに従って、eMCAメモリ30は、さらに、検出されたあらゆる悪意ある活動を列挙するログ32を含んでよい。
【0023】
より特定的な実施例として、図3は、検出された悪意ある活動に応じて、コンピュータ10によって取られるアクションの説明図100である。図1に関連して図3を参照すると、この実施例では、プロセッサ22は、SMMにおいて、実行パス(path)106に沿ってSMMインストラクション104を実行している。プロセッサの実行を、SMM実行領域28の外部にある悪意あるインストラクション110に転換するための試みが(パス108で示されるように)なされるときにである。プロセッサ22は、この試みを検出し、それに応じて、ゼネラルプロテクションエクセプション(GPE)111を生成して、GPEハンドラ112を呼び出す。一般的に、GPEハンドラ112は、メモリ、またはスタックを使用して、悪意あるインストラクション110のアドレスまたはロケーションを保管する。GPEハンドラは、さらに、SMI114を生成して、SMIハンドラ70を呼び出す。
【0024】
SMIハンドラ70は、メモリ30の中にログ32を作成し、ログは、悪意あるインストラクション110のロケーションを含んでいる。GPEハンドラ112のスタックに保管されたロケーションによって指示されるようにである。SMIハンドラ70は、次に、124に進んで終了する。終了の際に、ハンドラは、オペレーティングシステム62に対してメモリ30を確認するように警告する130。
【0025】
限定でない例として、いくつかの実施例に従えば、ウイルス性のSMIハンドラ70は、”SIGNAL_MCE”と呼ばれる信号をアサートし、SMM終了に際してMCAインタラプトを生成する。MCAインタラプトは、今度は、オペレーティングシステムのインストラクションが再開するときに、オペレーティングシステム62にメモリ30を確認させる。限定でない例として、いくつかの実施例に従えば、SIGNAL_MCE信号は、プロセッサ22のレジスタビットによって設定されてよい。従って、SIGNAL_MCE信号のアサーション(assertion)に応じて、ハンドラ64が呼び出され、検出された悪意ある活動と悪意ある活動のアドレスがログ32を介してハンドラに知らされる。ハンドラ64は、そして、好適な是正措置を取ることができる。
【0026】
図4は、別の実施例に従って、悪意ある活動に応じてコンピュータ10が取る行為を示している。図1と併せて図4を参照すると、この典型的な悪意ある活動に対して、オペレーティングシステム62の悪意あるインストラクション152は、参照番号154と158によって示されているように、プログラム22のロックされたコンフィグレーションビット22へのアクセスを試みる。プロセッサ22は、この試みられたアクセスを検出し、対応してSMIを生成する160。そして、プロセッサをSMMに入らせ、SMIハンドラ70を呼び出させる。
【0027】
この実施例に対して、SMIハンドラ70は、プロセッサのセレクタとインタラクションポインタ(CS:RIP)のコンテンツを検査することによって悪意あるインストラクションのアドレスを判断する。ハンドラ50は、そして、メモリ30のログ32の中に対応するログを作成する。ログは、悪意あるインストラクション152のアドレスを含んでいる。SMIハンドラ70は、次に、170に進んでSMMモードを終了し、オペレーティングシステム62に対して警告する174。限定でない例として、この警告は、SIGNAL_MCE信号をアサートすることを含んでよく、MCEインタラプトのアサーションを生じさせる。こうして、SIGNAL_MCE信号のアサーションにより、オペレーティングシステムハンドラ64は、検出された悪意ある活動および悪意ある活動のアドレスを、ログ32を介して知らされる。そして、オペレーティングシステムハンドラ64は、次に、好適な是正措置を取ることができる176。
【0028】
図5を参照すると、典型的な実施例に従って、コンピュータ10は一つのハードウェアアーキテクチャ200を有してよい。しかし、コンピュータ10は、さらなる実施例に従って、他のハードウェアアーキテクチャを有してもよい。さらに、図5に示される実施例は簡素化されており、他の実施例に従えば、ハードウェアアーキテクチャ200は、追加の又は異なるコンポーネントを有してよい。
【0029】
この実施例に対して、アーキテクチャ200は、複数のプロセッサ22(限定でない例として、図5ではプロセッサ22−1と22−2が示されている)を含んでおり、フロント側バス204に接続されている。メモリコントローラハブ(MCH)208は、フロント側バス204に接続されており、メモリ40へのアクセスをコントロールし、同様に、プロセッサに対して入力/出力 I/Oコントローラハブ(ICH)214へのアクセスを提供する。このようにして、MCH208とICH214は、ハブリンク212を通してコミュニケーションすることができる。
【0030】
一般的に、ICH214は、ユニバーサルシリアルバス(USB)上のオペレーションをコントロールする。限定でない例として、USB224は、ユニバーサルシリアルバス3.0仕様、1.0改訂版、2011年6月6日、に準じるものである。ICH214は、さらに、例えば、I/O拡張バス228といった、一つまたはそれ以上のバス上のオペレーションをコントロールする。さらに、ICH214は、ネットワークインターフェイス44とコミュニケーションして、少なくとも一つのハードドライブ220のオペレーションをコントロールする。
【0031】
以降の実施例は、さらなる具体例に関するものである。
【0032】
一つの実施例において、本装置は、オペレーティングシステムによってアクセス可能なメモリと、検出された悪意あるソフトウェア活動に応じて、前記メモリの中にデータを保管して、前記活動を前記オペレーティングシステムに対してレポートする、基本入力/出力システム(BIOS)ハンドラと、を含む。
【0033】
いくつかの実施例において、前記BIOSハンドラは、前記悪意あるソフトウェア活動に関する少なくとも一つの実行可能なインストラクションのアドレスを判断し、かつ、前記アドレスを表すデータを前記メモリの中に保管する。いくつかの実施例において、前記メモリは、マイクロプロセッサのレジスタの少なくとも一つのビットを含む。いくつかの実施例において、前記BIOSハンドラは、信号をアサートして、前記オペレーティングシステムに対して前記メモリを確認するように警告する。いくつかの実施例において、前記BIOSハンドラは、システムマネジメントインタラプトに応じて呼び出される。いくつかの実施例において、前記BIOSハンドラは、プロセッサのロックされたコンフィグレーションビットを変更するためのインストラクションを実行する試みを検出したことに応じて、呼び出されるように適合されている。いくつかの実施例において、前記BIOSハンドラは、システムマネジメントモードの最中に、プロセッサの実行をシステムマネジメントモードインストラクションに対して期待されるロケーションの外部に保管されたインストラクションへ向けるためのインストラクションを実行する試みに応じて、呼び出されるように適合されている。いくつかの実施例において、前記BIOSハンドラは、少なくとも部分的にコードセレクタとプロセッサのインストラクションポインタに基づいて、前記悪意あるソフトウェア活動に関する少なくとも一つの実行可能なインストラクションのアドレスを判断するように適合されている。いくつかの実施例において、前記BIOSハンドラは、ゼネラルプロテクションエクセプション(GPE)ハンドラによって使用されるスタックから、前記悪意あるソフトウェア活動に関する少なくとも一つの実行可能なインストラクションのアドレスを判断するように適合されている。いくつかの実施例において、前記オペレーティングシステムは、ホストオペレーティングシステムまたはゲストオペレーティングシステムである。
【0034】
いくつかの実施例において、本方法は、BIOSに、検出された前記コンピュータ上での悪意あるソフトウェア活動について警告するステップと、前記コンピュータのオペレーティングシステムに対して前記検出をレポートするために、前記BIOSを使用するステップと、を含む。
【0035】
いくつかの実施例において、前記BIOSを使用するステップは、前記悪意あるソフトウェア活動に関する少なくとも一つのマシンで実行可能なインストラクションのアドレスを前記オペレーティングシステムに対してレポートする段階、を含む。いくつかの実施例において、前記BIOSに警告するステップは、プロセッサのロックされたコンフィグレーションビットを変更するためのインストラクションを実行する検出された試みに応じて、少なくとも一つのBIOSインストラクションを実行する段階、を含む。いくつかの実施例において、前記BIOSに警告するステップは、プロセッサのシステムマネジメントモードの最中に、前記プロセッサをシステムマネジメントモードインストラクションに対して期待されるロケーションの外部に保管されたインストラクションを実行するように仕向けるためのインストラクションを実行する試みに応じて、少なくとも一つのBIOSインストラクションを実行する段階、を含む。いくつかの実施例において、前記検出をレポートするために前記BIOSを使用するステップは、少なくとも部分的にコードセレクタとプロセッサのインストラクションポインタに基づいて、前記悪意あるソフトウェア活動に関する少なくとも一つのマシンで実行可能なインストラクションのアドレスを報告する段階、を含む。いくつかの実施例において、前記検出をレポートするために前記BIOSを使用するステップは、少なくとも部分的にゼネラルプロテクションエクセプション(GPE)ハンドラによって使用されるスタックコンテンツに基づいて、前記悪意あるソフトウェア活動に関する少なくとも一つのマシンで実行可能なインストラクションのアドレスを報告する段階、を含む。いくつかの実施例において、レポートするために前記BIOSを使用するステップは、前記オペレーティングシステムによってアクセス可能なメモリを、前記悪意あるソフトウェア活動に関する少なくとも一つの実行可能なインストラクションのアドレスを表すデータで更新する段階、を含む。いくつかの実施例において、レポートするために前記BIOSを使用するステップは、前記検出された悪意あるソフトウェア活動について前記オペレーティングシステムに対して警告するために、プロセッサレジスタのコンテンツを変更する段階、を含む。
【0036】
いくつかの実施例において、本装置は、上記に説明された方法に係る機能を実行するように構成されたプロセッサを含む。
【0037】
いくつかの実施例において、少なくとも一つのマシンで読取り可能な媒体は、コンピュータデバイス上で実行されると、上記に説明された方法の機能を前記コンピュータデバイスに実行させる複数のインストラクションを含む。
【0038】
ここにおいて、限られた数の実施例が開示されてきたが、この発明開示の利益を有しことで、当業者であれば、そうした実施例から多くの変形およびバリエーションを理解するであろう。添付の特許請求の範囲は、全てのこうした変形およびバリエーションをカバーするように意図されたものである。
図1
図2
図3
図4
図5