JP2014026580A - Bug determination device, and bug determination method - Google Patents
Bug determination device, and bug determination method Download PDFInfo
- Publication number
- JP2014026580A JP2014026580A JP2012168276A JP2012168276A JP2014026580A JP 2014026580 A JP2014026580 A JP 2014026580A JP 2012168276 A JP2012168276 A JP 2012168276A JP 2012168276 A JP2012168276 A JP 2012168276A JP 2014026580 A JP2014026580 A JP 2014026580A
- Authority
- JP
- Japan
- Prior art keywords
- exception
- program
- program module
- unit
- bug
- 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.)
- Granted
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
Description
本発明は、バグ判定装置およびバグ判定方法に関する。 The present invention relates to a bug determination device and a bug determination method.
プログラム実行時に、プログラムの欠陥であるバグが顕在化すると、プログラムが意図しない動作を引き起こし、異常終了する事がある。また、悪意のあるユーザは、このバグを悪用してプログラムに任意の動作を実行させる。従来から、このようなプログラムのバグは、試験工程によって自動的に検出され、発見したバグの修正がプログラムのリリース前に行われる。 When a bug, which is a defect in the program, becomes apparent during program execution, the program may cause an unintended operation and terminate abnormally. A malicious user exploits this bug to cause the program to execute an arbitrary operation. Conventionally, such bugs in a program are automatically detected by a testing process, and found bugs are corrected before the program is released.
例えば、プログラムの試験工程では、ホワイトボックステストとして、命令網羅や分岐網羅、条件網羅などを行うことでバグを予め発見する技術が利用される。また、ランダムな入力データを生成してプログラムに入力することでバグを発見するファジングなどによって、ブラックボックスとしてバグを発見する技術なども知られている。 For example, in the program testing process, a technique for finding bugs in advance by performing instruction coverage, branch coverage, condition coverage, etc. as a white box test is used. Also known is a technique for finding a bug as a black box by fuzzing for finding a bug by generating random input data and inputting it into a program.
しかしながら、上記技術では、プログラムのリリース後に発生した例外処理の原因を特定することができないという問題がある。具体的には、プログラムを実際に利用する段階において発生した例外処理が、バグや脆弱性なのか、マルウェア等の攻撃によるものなのかを判断することができない。 However, the above technique has a problem that the cause of exception handling that occurs after the release of the program cannot be specified. Specifically, it cannot be determined whether the exception handling that occurred in the stage of actually using the program is a bug, a vulnerability, or an attack such as malware.
例えば、攻撃者は、標的のWebブラウザの脆弱性を攻撃することでマルウェアに感染させようと試みる。攻撃者は、脆弱性を攻撃するWebコンテンツを攻撃者が用意したWebサイトに配置し、標的となるユーザを他サイトのハイパーリンクやメールのリンク等でWebブラウザへ誘導してアクセスさせる。一方で、一般のWebサイトであっても、Webコンテンツの誤った記述によって、Webブラウザのバグを誘発する事がある。このように、例外が発生しただけでは、Webブラウザの脆弱性を攻撃するサイトかどうかを判断することはできない。 For example, an attacker tries to infect malware by attacking the vulnerability of the target web browser. The attacker places the web content that attacks the vulnerability on the website prepared by the attacker, and guides the target user to the web browser by using a hyperlink or mail link of another site. On the other hand, even a general Web site may induce a bug in the Web browser due to an incorrect description of the Web content. In this way, it is not possible to determine whether or not a site attacks the vulnerability of a Web browser only by the occurrence of an exception.
特に、Webブラウザは、入力として様々なWebコンテンツの読み込み処理を行うので、様々な処理モジュールを搭載している。このため、Webブラウザで種々の実行時例外が発生したとしても正常動作に復帰するような例外動作の場合、それぞれのモジュールのバグが脆弱性として混入しているかどうかを事前に検査することが難しい。このようなことから、多くの潜在的に脆弱性を持ったバグがプログラムのリリース後に発見され、その後パッチによって修正されている。Webブラウザのバグは、コンピュータウィルス等の悪意のあるプログラムの感染に悪用されていることから、脆弱性につながるバグを早期に発見することの重要度が高い。 In particular, since the web browser performs various web content reading processes as input, various processing modules are installed. For this reason, even if various runtime exceptions occur in the Web browser, it is difficult to inspect in advance whether or not bugs of each module are mixed as a vulnerability in the case of an exception operation that returns to normal operation. . Because of this, many potentially vulnerable bugs were discovered after the program was released and then fixed by patches. Since bugs in Web browsers are exploited to infect malicious programs such as computer viruses, it is highly important to find bugs that lead to vulnerabilities at an early stage.
開示の技術は、上記に鑑みてなされたものであって、プログラムのリリース後に発生した例外処理の原因を特定することができるバグ判定装置およびバグ判定方法を提供することを目的とする。 The disclosed technology has been made in view of the above, and an object of the present invention is to provide a bug determination device and a bug determination method that can identify the cause of exception processing that has occurred after the release of a program.
本願の開示するバグ判定装置およびバグ判定方法は、一つの態様において、例外処理を発生させたプログラムモジュールを識別する識別情報と、当該プログラムモジュールが発生させた例外処理の発生回数とを対応付けて記憶する回数記憶部と、実行されたプログラムで例外処理が発生した場合に、前記例外処理を発生させたプログラムが実行するプログラムモジュールを特定する特定部と、前記特定部が特定したプログラムモジュールの識別情報に対応付けられて前記回数記憶部に記憶される前記例外処理の発生回数が所定値以下か否かを判定する判定部を有する。 In one aspect, the bug determination apparatus and the bug determination method disclosed in the present application associate identification information for identifying a program module that has caused exception processing with the number of occurrences of exception processing that has been generated by the program module. The number of times to be stored, the identification unit that identifies the program module that is executed by the program that generated the exception processing when exception processing occurs in the executed program, and the identification of the program module that is identified by the identification unit A determination unit configured to determine whether or not the number of occurrences of the exception process stored in the number storage unit in association with information is equal to or less than a predetermined value;
本願の開示するバグ判定装置およびバグ判定方法の一つの態様によれば、プログラムのリリース後に発生した例外処理の原因を特定することができるという効果を奏する。 According to one aspect of the bug determination apparatus and bug determination method disclosed in the present application, there is an effect that it is possible to specify the cause of the exception processing that has occurred after the release of the program.
以下に、本願の開示するバグ判定装置およびバグ判定方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。 Embodiments of the bug determination apparatus and bug determination method disclosed in the present application will be described below in detail with reference to the drawings. Note that the present invention is not limited to the embodiments.
[第1の実施形態]
[全体構成]
図1は、第1の実施形態に係るシステムの全体構成例を示す図である。図1に示すように、このシステムは、Webサーバ1、Webサーバ2、Webサーバ3、情報処理装置10が相互に通信可能に接続されて構成される。なお、各サーバ等の台数は、あくまで例示であり、これに限定されるものではない。
[First Embodiment]
[overall structure]
FIG. 1 is a diagram illustrating an example of the overall configuration of a system according to the first embodiment. As shown in FIG. 1, this system is configured by connecting a
Webサーバ1とWebサーバ2は、Webコンテンツを含むWebサイトをユーザに提供するサーバであり、安全性が保障されている。Webサーバ3は、Webコンテンツを含むWebサイトをユーザに提供するサーバであり、安全性が保障されていない。安全性が保障されているとは、例えば第3者機関によってセキュリティが高いと認定されていたり、過去のウィルス検出回数や障害回数が所定値以下であったり、任意の方法で認定することができる。
The
情報処理装置10は、各WebサーバへアクセスするWebクライアントであり、例えばパーソナルコンピュータやサーバなどの装置である。この情報処理装置10は、例外処理を発生させたプログラムモジュールを識別する識別情報と、当該プログラムモジュールが発生させた例外処理の発生回数とを対応付けて記憶する。そして、情報処理装置10は、実行されたプログラムで例外処理が発生した場合に、例外処理を発生させたプログラムが実行するプログラムモジュールを特定する。続いて、情報処理装置10は、特定したプログラムモジュールの識別情報に対応付けられて記憶される例外処理の発生回数が所定値以下か否かを判定する。
The
つまり、情報処理装置10は、一般のWebサイトで発生していることを根拠に、集計された発生回数が上位の例外処理を単なるバグと判定する。一方で、情報処理装置10は、一般のWebサイトでは発生している回数が少ないことを根拠に、集計された発生回数が下位の例外処理を悪質なバグとして検出する。
That is, the
このように、情報処理装置10は、アクセスしたWebコンテンツで発生した例外処理の発生回数が少ない場合には、悪用される可能性の高いバグであると判定することができる。この結果、プログラムのリリース後に発生した例外情報の原因を特定することができる。
As described above, the
[情報処理装置の構成]
次に、情報処理装置の構成を説明する。なお、各Webサーバは、一般的なWebサーバと同様の構成を有するので、詳細な説明は省略する。図2は、第1の実施形態に係る情報処理装置の機能構成を示す機能ブロック図である。
[Configuration of information processing device]
Next, the configuration of the information processing apparatus will be described. Since each Web server has the same configuration as a general Web server, detailed description is omitted. FIG. 2 is a functional block diagram illustrating a functional configuration of the information processing apparatus according to the first embodiment.
図2に示すように、情報処理装置10は、通信部11、記憶部13、制御部14を有する。なお、ここで示した制御部等は、あくまで例示であり、マウスなどの入力部やディスプレイなどの表示部等を有していてもよい。
As illustrated in FIG. 2, the
通信部11は、他の装置と通信を実行する処理部である。例えば、通信部11は、各Webサーバとのコネクションを確立し、Webブラウザ等を用いた通信を制御する。
The
記憶部13は、監視対象プログラム13a、プログラムモジュール13b、モジュール読込情報DB(DataBase)13c、例外パターンDB13d、悪性サイトDB13eを保持する記憶装置である。例えば、記憶部13には、半導体素子やHDD(Hard Disk Drive)などの記憶装置を用いることができる。
The
監視対象プログラム13aは、例外処理の発生の監視対象となるプログラムであり、例えば第1の実施形態では、Webブラウザを実行するプログラムである。なお、ここでは、コンテンツビューアの一例としてWebブラウザを例示したが、システム専用のビューアなど他のビューアを用いることもできる。 The monitoring target program 13a is a program to be monitored for occurrence of exception processing. For example, in the first embodiment, the monitoring target program 13a is a program that executes a Web browser. Although a Web browser is illustrated here as an example of the content viewer, other viewers such as a system-dedicated viewer can also be used.
プログラムモジュール13bは、監視対象プログラム13aが実行するプログラムモジュールである。例えば、WebブラウザがWebサイトやWebサイト上のWebコンテンツを読み込む際に実行する処理モジュールである。
The
モジュール読込情報DB13cは、メモリにロードされたプログラムモジュール13bの情報を記憶する。ここで記憶される情報は、後述するモジュール読込監視部17等によって更新される。図3は、モジュール読込情報DBが記憶する情報の例を示す図である。図3に示すように、モジュール読込情報DB13cは、「モジュール名、先頭アドレス、末尾アドレス」を対応付けて記憶する。
The module read information DB 13c stores information on the
ここで記憶される「モジュール名」は、メモリにロードされたモジュールの名称、すなわち実行されたプログラムモジュールの名称である。「先頭アドレス」は、ロードされる先頭のアドレス、すなわち、プログラムモジュールがロードされた先のメモリの先頭アドレスである。「末尾アドレス」は、ロードされる末尾のアドレス、すなわち、プログラムモジュールがロードされた先のメモリの末尾アドレスである。図3の場合、モジュールAの名称であるプログラムモジュールが、メモリ上のアドレス「100000」からアドレス「110000」にロードされたことを示す。 The “module name” stored here is the name of the module loaded into the memory, that is, the name of the executed program module. “Start address” is the start address to be loaded, that is, the start address of the memory to which the program module is loaded. The “end address” is the end address to be loaded, that is, the end address of the memory into which the program module is loaded. In the case of FIG. 3, the program module, which is the name of module A, is loaded from the address “100000” on the memory to the address “110000”.
例外パターンDB13dは、例外処理が発生したプログラムモジュールの情報を記憶する。ここで記憶される情報は、後述する例外監視部18等によって更新される。図4は、例外パターンDBが記憶する情報の例を示す図である。図4に示すように、例外パターンDB13dは、「モジュール名、オフセット、例外の種類、出現回数」を対応付けて記憶する。 The exception pattern DB 13d stores information on program modules in which exception processing has occurred. The information stored here is updated by the exception monitoring unit 18 or the like described later. FIG. 4 is a diagram illustrating an example of information stored in the exception pattern DB. As illustrated in FIG. 4, the exception pattern DB 13 d stores “module name, offset, exception type, number of appearances” in association with each other.
ここで記憶される「モジュール名」は、例外処理を発生させたプログラムモジュールの名称である。「オフセット」は、プログラムモジュールがロードされた先頭アドレスから例外処理が発生したアドレスまでの距離(バイト数)である。「例外の種類」は、発生した例外処理の種類を示す。「出現回数」は、当該モジュール名の当該オフセットで発生した例外処理の発生回数である。図4の場合、モジュールAにおいて、先頭アドレスからオフセット「1000」のアドレスで、例外処理「例外A」が1000回発生していることを示す。 The “module name” stored here is the name of the program module that caused the exception processing. “Offset” is the distance (number of bytes) from the head address at which the program module is loaded to the address where the exception processing occurred. “Exception type” indicates the type of exception handling that has occurred. “Number of occurrences” is the number of times exception processing has occurred at the offset of the module name. In the case of FIG. 4, in module A, the exception process “exception A” occurs 1000 times at an address “1000” offset from the start address.
悪性サイトDB13eは、悪性なバグを発生させたWebサイトのURL(Uniform Resource Locator)を記憶する。すなわち、悪性サイトDB13eは、Webサイトのブラックリストである。この悪性サイトDB13eに記憶される情報は、後述するバグ検出部20によって更新される。なお、悪性なバグを発生させたWebサイトのURLではなく、IP(Internet Protocol)アドレスやホスト名など、Webサイトを一意に特定できる情報であればよい。
The malicious site DB 13e stores the URL (Uniform Resource Locator) of the Web site where the malicious bug is generated. That is, the malicious site DB 13e is a black list of Web sites. Information stored in the malicious site DB 13e is updated by the
制御部14は、収集部15とバグ検出部20とを有し、これらによって、潜在的に脆弱性を有するバグを検出する処理部である。制御部14は、例えばプロセッサなどであり、制御部14が有する各処理部は、プロセッサなどが実行する処理部である。
The control unit 14 includes a
収集部15は、Webアクセス部16、モジュール読込監視部17、例外監視部18を有し、これらによって、例外処理の発生を監視し、例外処理の情報を収集する処理部である。Webアクセス部16は、記憶部13に記憶される監視対象プログラム13aを実行し、Webブラウザを用いてWebサーバへアクセスする処理部である。Webアクセス部16は、監視対象プログラムをメモリにロードして実行する。このWebアクセス部16は、アクセスしたWebサイトやWebコンテンツに応じて、必要なプログラムモジュール13bを実行する。また、Webアクセス部16がアクセスするWebサイトは、安全性が保障されているいないに関わらず、管理者等によって予め指定されていてもよく、ランダムに実行してもよい。
The
モジュール読込監視部17は、Webアクセス部16がロードしたプログラムモジュールを監視する処理部である。具体的には、モジュール読込監視部17は、Webアクセス部16がプログラムモジュールをメモリにロードしたことを検知すると、ロードされたプログラムモジュールの名称、ロードされた先頭アドレス、ロードされた末尾アドレスを検出する。そして、モジュール読込監視部17は、取得したプログラムモジュールの名称、先頭アドレス、末尾アドレスを対応付けてモジュール読込情報DB13cに格納する。
The module
例えば、モジュールAがメモリ上のアドレス「100000」から「110000」にロードされた場合には、モジュール読込監視部17は、モジュールA、先頭アドレス「100000」、末尾アドレス「110000」を検出して、モジュール読込情報DB13cに格納する。このように、モジュール読込監視部17は、プログラムモジュールがロードされるイベントを監視しておき、当該イベントが発生した場合に、プログラムモジュール名(例えば、kernel32.dllなど)と当該プログラムモジュールがロードされた先頭アドレスおよび末尾アドレスを取得してモジュール読込情報DB13cに格納する。
For example, when the module A is loaded from the address “100000” in the memory to “110000”, the module read monitoring
例外監視部18は、特定部18aと計数部18bとを有し、これらによって、例外処理の発生を監視する処理部である。特定部18aは、Webアクセス部16によって実行されたWebブラウザで例外処理が発生した場合に、例外処理を発生させたWebブラウザが実行するプログラムモジュールおよびメモリアドレスを特定する処理部である。具体的には、特定部18aは、例外処理が発生したメモリのアドレスにロードされているプログラムモジュール名と、発生した例外の種類と、当該プログラムモジュールの先頭アドレスから例外発生アドレスまでのオフセットとを例外パターンDB13dに格納する。なお、プログラムモジュール名としては、DLL(Dynamic Load Library)名などがある。 The exception monitoring unit 18 includes a specifying unit 18a and a counting unit 18b, and is a processing unit that monitors the occurrence of exception processing. The specifying unit 18a is a processing unit that specifies a program module and a memory address to be executed by the Web browser that has generated the exception processing when an exception processing has occurred in the Web browser executed by the Web access unit 16. Specifically, the specifying unit 18a obtains the name of the program module loaded at the address of the memory where the exception processing has occurred, the type of exception that has occurred, and the offset from the start address of the program module to the exception occurrence address. Stored in the exception pattern DB 13d. The program module name includes a DLL (Dynamic Load Library) name.
ここで、メモリの絶対アドレスではなくプログラムモジュールの先頭からのオフセットを利用する理由として、プログラムモジュールのロード先アドレスがプログラムの実行毎に異なる場合があるためである。よって、あるプログラムモジュールの特定個所に存在するバグが発症する場合、プログラムモジュールのロードアドレスによって、例外発生のアドレスが変化するからである。一方で、あるプログラムモジュールの特定個所で例外が発生した場合、プログラムモジュールのロードされるアドレスが変化したとしても、プログラムモジュール名とそのオフセットは変化しない。 Here, the reason why the offset from the head of the program module is used instead of the absolute address of the memory is that the load destination address of the program module may be different every time the program is executed. Therefore, when a bug that exists at a specific location in a certain program module develops, the exception occurrence address changes depending on the load address of the program module. On the other hand, when an exception occurs at a specific location of a program module, the program module name and its offset do not change even if the address at which the program module is loaded changes.
図5は、モジュール名とオフセットとの関係を説明する図である。図5の左図に示すように、Webアクセス部16があるWebサイトAにアクセスした場合に、モジュールAは、メモリのアドレス「5000」を先頭としてロードされ、先頭アドレスからオフセット「1000」すなわちアドレス「6000」で例外処理が発生した。一方で、図5の右図に示すように、Webアクセス部16があるWebサイトBにアクセスした場合には、モジュールAは、メモリのアドレス「15000」を先頭としてロードされ、先頭アドレスからオフセット「1000」すなわちアドレス「16000」で例外処理が発生した。 FIG. 5 is a diagram for explaining the relationship between the module name and the offset. As shown in the left diagram of FIG. 5, when accessing the web site A where the web access unit 16 is located, the module A is loaded starting from the memory address “5000” and offset from the top address “1000”, that is, the address Exception processing occurred at "6000". On the other hand, as shown in the right diagram of FIG. 5, when accessing the web site B where the web access unit 16 is located, the module A is loaded starting from the memory address “15000” and offset from the top address “ 1000 ”, that is, exception handling occurred at address“ 16000 ”.
図5に示すように、プログラムモジュールはプログラムが実行される最初にメモリにロードされる場合もあるし、プログラムが実行中に動的にメモリにロードされる場合もある。これらの場合、ロードされる先頭アドレスが変わるが、オフセットは変わらないので、オフセットを特定することで、例外処理の発生位置を正確に特定できる。 As shown in FIG. 5, program modules may be loaded into memory at the beginning of program execution, or may be dynamically loaded into memory during program execution. In these cases, the head address to be loaded changes, but the offset does not change. Therefore, by specifying the offset, the occurrence position of the exception processing can be specified accurately.
特定部18aは、例外が発生したアドレスにロードされているプログラムモジュールを特定するために、例外が発生したアドレスについて、モジュール読込情報DB13cに記録された各プログラムモジュールに関して先頭アドレスから末尾アドレスの間に含まれるものを検索し、プログラムモジュール名を取得する。このとき、特定部18aは、発生した例外処理に応じて例外の種類を特定する。次に、特定部18aは、取得したプログラムモジュール名について、当該プログラムモジュールの先頭アドレスから例外発生アドレスを減算することで当該プログラムモジュールからのオフセットを求める。この手順により、例外が発生した場合に、特定部18aは、プログラムモジュール名、オフセットおよび例外の種類を組みとする「例外パターン」を取得する。そして、特定部18aは、これらを例外パターンDB13dへ格納する。 In order to identify the program module loaded at the address where the exception has occurred, the identifying unit 18a sets the address where the exception has occurred between the start address and the end address for each program module recorded in the module read information DB 13c. Search for included content and get program module name. At this time, the specifying unit 18a specifies the type of exception according to the exception processing that has occurred. Next, the specifying unit 18a obtains an offset from the program module by subtracting the exception occurrence address from the start address of the program module for the acquired program module name. By this procedure, when an exception occurs, the specifying unit 18a acquires an “exception pattern” including a combination of a program module name, an offset, and an exception type. Then, the specifying unit 18a stores these in the exception pattern DB 13d.
なお、プログラムモジュール名が取得できない場合がある。例えば、例外発生アドレスにプログラムモジュールがロードされていない場合である。バグの種類によっては、命令ポインタが、プログラムモジュールがロードされていないアドレスを示すことにより、例外を発生させ異常終了する事がある。この場合、例外の原因となった直前の個所の情報を遡って特定することはできない。この場合、特定部18aは、モジュール名をnull(空という意味)とし、オフセットを例外が発生したアドレスとして、例外パターンDB13dへ格納する。 Note that the program module name may not be acquired. For example, the program module is not loaded at the exception occurrence address. Depending on the type of bug, the instruction pointer may indicate an address at which no program module is loaded, causing an exception and abnormal termination. In this case, it is not possible to identify retrospective information immediately before the cause of the exception. In this case, the specifying unit 18a stores the module name as null (meaning empty) and the offset as the address where the exception occurred in the exception pattern DB 13d.
計数部18bは、特定部18aが特定した例外パターンの発生回数を計数する処理部である。例えば、計数部18bは、例外処理が発生すると、特定部18aから例外パターン「モジュール名、オフセット、例外の種類」を取得する。そして、計数部18bは、取得した例外パターンが例外パターンDB13dに記憶されている場合には、当該例外パターンに対応する出現回数をインクリメントする。一方、計数部18bは、取得した例外パターンが例外パターンDB13dに記憶されていない場合には、当該例外パターンのレコードを生成して出現回数を1にする。 The counting unit 18b is a processing unit that counts the number of occurrences of the exception pattern specified by the specifying unit 18a. For example, when an exception process occurs, the counting unit 18b acquires an exception pattern “module name, offset, exception type” from the specifying unit 18a. Then, when the acquired exception pattern is stored in the exception pattern DB 13d, the counting unit 18b increments the number of appearances corresponding to the exception pattern. On the other hand, when the acquired exception pattern is not stored in the exception pattern DB 13d, the counting unit 18b generates a record of the exception pattern and sets the appearance count to 1.
バグ検出部20は、Webアクセス部20aと判定部20bと検出部20cとを有し、これらによって、リリース後にアクセスしたWebサイトで発生した例外処理の原因を特定する処理部である。
The
Webアクセス部20aは、プログラムがリリースされた後に、ユーザの操作によってWebアクセスを実行する処理部である。具体的には、Webアクセス部20aは、例外パターンDB13dへの情報格納が終了し、Webサイトへのアクセスを示すユーザ操作を受け付けると、記憶部13に記憶されるWebブラウザのプログラムを実行する。そして、Webアクセス部20aは、ユーザによって指定されたURLへアクセスする。なお、アクセス先のURLは、ユーザによる指定だけではなく、予め管理者等によって指定されていてもよい。
The
判定部20bは、Webアクセス部20aが実行したWebブラウザで例外処理が発生した場合に、例外処理を発生させたプログラムが実行するプログラムモジュールを特定し、特定したプログラムモジュールの識別情報に対応付けられて例外パターンDB13dに記憶される例外処理の発生回数が所定値以下か否かを判定する処理部である。
When an exception process occurs in the Web browser executed by the
例えば、判定部20bは、Webアクセス部20aが実行したWebブラウザで例外処理が発生した場合に、例外を発生させたモジュール名、オフセット、例外の種別を特定する。なお、各内容を特定する方法は、モジュール読込監視部17などと同様の手法を用いることができる。そして、判定部20bは、特定したモジュール名、オフセット、例外の種別の組合せに対応する出現回数を例外パターンDB13dから特定する。その後、判定部20bは、特定した出現回数が例えば500回以下か否かを判定する。
For example, when an exception process occurs in the Web browser executed by the
検出部20cは、判定部20bによって出現回数が所定値以下か否かによって、プログラムのリリース後に発生した例外処理の原因を特定する。具体的には、検出部20cは、出現回数が所定値より大きい場合には、単なるバグと決定し、出現回数が所定値以下の場合には、悪質なバグとして検出する。また、検出部20cは、例外処理を悪質なバグと決定した場合には、該当するWebサイトのURLを抽出して悪性サイトDB13eに格納する。すなわち、検出部20cは、悪質なバグを発生させたモジュールを実行したWebサイトのURLをブラックリストとして保存する。
The
ここで、悪質なバグを検出する例を説明する。図6は、悪質なバグの判定例を示す図である。図6に示すように、Webアクセス部20aは、プログラムリリース後、安全性が保障されていない、信頼できない疑わしいWebサイトへアクセスする。そして、判定部20bは、当該WebサイトであるWebコンテンツを読み込むためにモジュールAを実行した際に、オフセット「1000」で例外Aが発生したことを検知する。この場合、判定部20bは、「モジュールA、1000、例外A」に対応する「出現回数」が「500」であり、所定数である「300」より大きいと判定する。この結果、検出部20cは、例外内容である「モジュールA、1000、例外A」を単なるバグ、すなわち、一般的なバグでありパッチによって修復可能と判断する。
Here, an example of detecting a malicious bug will be described. FIG. 6 is a diagram illustrating an example of determining a malicious bug. As shown in FIG. 6, the
さらに、判定部20bは、当該WebサイトであるWebコンテンツを読み込むためにモジュールYを実行した際に、オフセット「1000」で例外Yが発生したことを検知する。この場合、判定部20bは、「モジュールY、1000、例外Y」に対応する「出現回数」が「1」であり、所定数である「300」以下であると判定する。この結果、検出部20cは、例外内容である「モジュールY、1000、例外Y」を悪質なバグと判断する。
Furthermore, the determination unit 20b detects that an exception Y has occurred at the offset “1000” when the module Y is executed to read the Web content that is the Web site. In this case, the determination unit 20b determines that the “number of appearances” corresponding to “module Y, 1000, exception Y” is “1” and is equal to or less than the predetermined number “300”. As a result, the
さらに、判定部20bは、当該WebサイトであるWebコンテンツを読み込むためにモジュールZを実行した際に、オフセット「2000」で例外Zが発生したことを検知する。この場合、判定部20bは、「モジュールZ、2000、例外Z」に対応する「出現回数」が例外パターンDB13dに存在しない。この結果、検出部20cは、例外内容である「モジュールZ、2000、例外Z」を悪質なバグと判断する。
Furthermore, the determination unit 20b detects that an exception Z has occurred at the offset “2000” when the module Z is executed to read the Web content that is the Web site. In this case, the determination unit 20b does not have an “appearance count” corresponding to “module Z, 2000, exception Z” in the exception pattern DB 13d. As a result, the
このように、例外パターンDB13dに格納される集計結果の上位は、多くの一般サイトに含まれるものであり、集計結果の下位は、ある特定のサイトにのみ含まれることを意味する。この例外情報の集計結果を用いて、集計結果の上位に含まれるものを、多くの一般のサイトでよく発生する単なる記述ミスに基づくバグであると判断できる。 As described above, the higher rank of the total results stored in the exception pattern DB 13d is included in many general sites, and the lower rank of the total results is included only in a specific site. Using the exception information tabulation result, it is possible to determine that the one included in the higher rank of the tabulation result is a bug based on a simple description mistake that often occurs in many general sites.
つまり、上位のバグは、Webコンテンツ等が脆弱性を突くようには作成されていない例外である可能性が高い、このような例外は脆弱性を持たないように開発時に考慮されている可能性が高い。一方で、下位のバグは、Webコンテンツ等が脆弱性を突く可能性が高いことが考えられ、このような例外は開発段階で考慮することが難しく、悪用される可能性が高い。そこで、バグ検出部20は、例外処理を発生させているものの出現回数が少ない例外を悪質なバグとして検出する。なお、集計結果の上位や下位と判断する閾値は任意に設定できる。
In other words, high-order bugs are likely to be exceptions that have not been created so that Web content etc. exploits vulnerabilities, and such exceptions may be considered during development so that they do not have vulnerabilities Is expensive. On the other hand, it is considered that the low-order bugs are likely to be vulnerable to Web contents, and such exceptions are difficult to consider at the development stage and are likely to be abused. Therefore, the
[例外パターン収集処理の流れ]
図7は、第1の実施形態に係る例外パターン収集処理の流れを示すフローチャートである。図7に示すように、情報処理装置10のWebアクセス部16は、監視対象プログラム13aをメモリにロードしてWebブラウザを起動する(S101)。
[Flow of exception pattern collection processing]
FIG. 7 is a flowchart showing a flow of exception pattern collection processing according to the first embodiment. As shown in FIG. 7, the Web access unit 16 of the
そして、Webアクセス部16は、所定のWebサイトへアクセスする(S102)。このとき、Webアクセス部16は、Webサイトで様々なWebコンテンツを読み込むために、適宜プログラムモジュール13bをメモリにロードして、該当モジュールを実行する。一方で、モジュール読込監視部17は、プログラムモジュールのイベント実行を監視し、プログラムモジュールがロードされたメモリ上の先頭アドレスや末尾アドレスやモジュール名を取得して、モジュール読込情報DB13cに格納する。
Then, the web access unit 16 accesses a predetermined website (S102). At this time, in order to read various Web contents on the Web site, the Web access unit 16 appropriately loads the
その後、例外処理が発生すると(S103:Yes)、例外監視部18の特定部18aは、例外処理が発生したアドレス情報を取得し(S104)、例外処理を発生させたモジュールがメモリにロードされているか否かを判定する(S105)。なお、例外処理が発生せずにWebサイトの閲覧が終了した場合には(S103:No)、S113が実行される。 Thereafter, when exception processing occurs (S103: Yes), the specifying unit 18a of the exception monitoring unit 18 acquires address information where the exception processing has occurred (S104), and the module that caused the exception processing is loaded into the memory. It is determined whether or not there is (S105). In addition, when browsing of a Web site is completed without generating exception processing (S103: No), S113 is executed.
そして、特定部18aは、例外処理を発生させたモジュールがメモリにロードされていると判定した場合(S105:Yes)、モジュール名を取得するとともに例外の種類を特定し(S106)、オフセットを算出する(S107)。一方、特定部18aは、例外処理を発生させたモジュールがメモリにロードされていないと判定した場合(S105:No)、モジュール名をnullに決定するとともに例外の種類を特定し(S108)、オフセットを例外が発生したアドレスである例外発生アドレスに決定する(S109)。なお、例外の種類は、例外処理の内容等から特定できるものであり、S104で特定してもよい。 If the specifying unit 18a determines that the module that caused the exception processing is loaded in the memory (S105: Yes), the module 18a acquires the module name, specifies the type of exception (S106), and calculates the offset. (S107). On the other hand, when determining that the module that caused the exception processing is not loaded in the memory (S105: No), the specifying unit 18a determines the module name to be null and specifies the type of exception (S108), and the offset. Is determined as the exception occurrence address which is the address where the exception occurred (S109). The type of exception can be specified from the contents of exception processing or the like, and may be specified in S104.
続いて、例外監視部18の計数部18bは、取得または決定されたモジュール名とオフセットと例外の種類との組み合わせが、例外パターンDB13dに記憶されているか否かを判定する(S110)。 Subsequently, the counting unit 18b of the exception monitoring unit 18 determines whether or not the combination of the acquired module name, offset, and exception type is stored in the exception pattern DB 13d (S110).
そして、計数部18bは、モジュール名とオフセットと例外の種類との組み合わせが、例外パターンDB13dに記憶されていると判定した場合(S110:Yes)、対応する出現回数をインクリメントする(S111)。一方、計数部18bは、モジュール名とオフセットと例外の種類との組み合わせが、例外パターンDB13dに記憶されていないと判定した場合(S110:No)、出現回数を1に設定した、対応するレコードを生成する(S112)。 When the counting unit 18b determines that the combination of the module name, the offset, and the type of exception is stored in the exception pattern DB 13d (S110: Yes), the counting unit 18b increments the corresponding number of appearances (S111). On the other hand, when the counting unit 18b determines that the combination of the module name, the offset, and the type of exception is not stored in the exception pattern DB 13d (S110: No), the counting unit 18b selects a corresponding record in which the number of appearances is set to 1. Generate (S112).
その後、Webアクセス部16は、例外パターン収集のために指定された対象サイトが他にもある場合(S113:Yes)、S102以降の処理を繰り返す。一方、例外パターン収集のために指定された対象サイトが他にない場合(S113:No)、処理を終了する。 Thereafter, when there are other target sites designated for exception pattern collection (S113: Yes), the Web access unit 16 repeats the processing from S102 onward. On the other hand, when there is no other target site designated for exception pattern collection (S113: No), the process is terminated.
[例外処理の原因特定処理の流れ]
図8は、第1の実施形態に係る例外処理の原因特定処理の流れを示すフローチャートである。図8に示すように、情報処理装置10のWebアクセス部20aは、監視対象プログラム13aをメモリにロードしてWebブラウザを起動する(S201)。
[Flow of cause identification processing of exception processing]
FIG. 8 is a flowchart showing a flow of exception identification cause identification processing according to the first embodiment. As shown in FIG. 8, the
そして、Webアクセス部20aは、安全性が保障されていない所定のWebサイトへアクセスする(S202)。このとき、Webアクセス部20aは、Webサイトで様々なWebコンテンツを読み込むために、適宜プログラムモジュール13bをメモリにロードして、該当モジュールを実行する。
Then, the
その後、例外処理が発生すると(S203:Yes)、判定部20bは、例外処理が発生したアドレス情報を取得し(S204)、例外処理を発生させたモジュールがメモリにロードされているか否かを判定する(S205)。なお、例外処理が発生せずにWebサイトの閲覧が終了した場合には(S203:No)、処理を終了する。 Thereafter, when exception processing occurs (S203: Yes), the determination unit 20b acquires address information where the exception processing has occurred (S204), and determines whether the module that caused the exception processing is loaded in the memory. (S205). Note that if browsing of the Web site is terminated without exception processing (S203: No), the processing is terminated.
そして、判定部20bは、例外処理を発生させたモジュールがメモリにロードされていると判定した場合(S205:Yes)、モジュール名を取得するとともに例外の種類を特定し(S206)、オフセットを算出する(S207)。一方、判定部20bは、例外処理を発生させたモジュールがメモリにロードされていないと判定した場合(S205:No)、モジュール名をnullに決定するとともに例外の種類を特定し(S208)、オフセットを例外が発生したアドレスである例外発生アドレスに決定する(S209)。 If the determination unit 20b determines that the module that caused the exception processing is loaded in the memory (S205: Yes), the module 20b acquires the module name, specifies the type of exception (S206), and calculates the offset. (S207). On the other hand, if the determination unit 20b determines that the module that caused the exception processing is not loaded in the memory (S205: No), the module name is determined to be null and the type of exception is specified (S208), and the offset is determined. Is determined as the exception occurrence address which is the address where the exception occurred (S209).
続いて、判定部20bは、取得または決定されたモジュール名とオフセットと例外の種類との組み合わせが、例外パターンDB13dに記憶されているか否かを判定する(S210)。 Subsequently, the determination unit 20b determines whether or not the combination of the acquired module name, offset, and exception type is stored in the exception pattern DB 13d (S210).
そして、判定部20bは、モジュール名とオフセットと例外の種類との組み合わせが、例外パターンDB13dに記憶されていると判定した場合(S210:Yes)、対応する出現回数が所定値以上か否かを判定する(S211)。 If the determination unit 20b determines that the combination of the module name, the offset, and the type of exception is stored in the exception pattern DB 13d (S210: Yes), it determines whether the corresponding number of appearances is equal to or greater than a predetermined value. Determination is made (S211).
続いて、検出部20cは、例外処理「モジュール名とオフセットと例外の種類との組合せ」に対応する出現回数が所定値以上であると判定した場合(S211:Yes)、当該例外処理を通常のバグとして決定する(S212)。
Subsequently, when the
一方、検出部20cは、例外処理「モジュール名とオフセットと例外の種類との組合せ」に対応する出現回数が所定値未満であると判定した場合(S211:No)、当該例外処理を悪質なバグとして決定する(S213)。そして、検出部20cは、当該例外処理を発生させた、アクセス中のWebサイトのURLを取得し(S214)、取得したURLを悪性サイトDB13eに登録する(S215)。なお、判定部20bが、モジュール名とオフセットと例外の種類との組み合わせが、例外パターンDB13dに記憶されていないと判定した場合も(S210:No)、S213以降が実行される。
On the other hand, if the
[効果]
このように、第1の実施形態では、一般のWebサイトをWebブラウザでアクセスし、例外発生時の情報を収集する。集計結果の上位は多くの一般サイトに含まれるものであり、集計結果の下位はある特定のサイトにのみ含まれることを意味する。この例外情報の集計結果を用いて、集計結果の上位に含まれるものを、多くの一般サイトでよく発生する単なる記述ミスに基づくバグであると判断できる。なお、集計結果の上位や下位と判断する閾値は任意に設定できる。
[effect]
As described above, in the first embodiment, a general Web site is accessed by a Web browser, and information when an exception occurs is collected. It means that the higher rank of the tabulation result is included in many general sites, and the lower rank of the tabulation result is included only in a specific site. Using the exception information tabulation result, it is possible to determine that the one included in the higher rank of the tabulation result is a bug based on a simple description mistake that often occurs at many general sites. Note that the threshold value for determining the upper or lower order of the aggregation result can be arbitrarily set.
プログラムリリース後、安全性が保障されていない疑わしいWebサイトにWebブラウザでアクセスして、例外発生時の情報を収集する。この時発生した例外情報が、一般サイトの例外情報の集計結果に含まれないもしくは集計結果に含まれていたとしても上位には含まれない場合は、脆弱性を悪用した攻撃に繋がる例外であると判断できる。この結果、Webブラウザに関してマルウェア感染等の攻撃に繋がるバグを効率的に発見することができる。 After the program is released, a Web browser is accessed to a suspicious Web site whose safety is not guaranteed, and information on the occurrence of an exception is collected. If the exception information generated at this time is not included in the total site exception information summary result or is not included in the top level even if it is included in the summary result, it is an exception that leads to an attack that exploits the vulnerability. It can be judged. As a result, it is possible to efficiently find bugs that lead to attacks such as malware infection on the Web browser.
また、Webブラウザに対して、膨大なテストデータ作成とそれを入力してテストを行う必要なく、プログラムリリース後に、一般サイトのコンテンツを読み込ませることで現実的に存在するコンテンツに起因する例外によりバグを発見することができる。また、その集計結果に基づいて信頼できない疑わしいWebサイトで発生した例外が前述の一般サイトでは発生しない、もしくは発生したとしてもその件数が著しく少ない場合において、当該例外が攻撃に繋がるバグであることを効率的に判断する事ができる。 Also, it is not necessary to create a huge amount of test data and test it by inputting it to the Web browser. After the program is released, loading the contents of a general site will cause a bug due to an exception caused by content that actually exists. Can be found. In addition, if the exception that occurred on a suspicious website that cannot be relied on based on the result of the aggregation does not occur on the aforementioned general site, or if it occurs, the exception is a bug that leads to an attack. Can be judged efficiently.
したがって、WebブラウザでWebサイトにアクセスし、その時に発生した例外情報を、予め集計した例外発生情報と比較し、攻撃に悪用される脆弱性と判断できた場合は、Webブラウザが読み込んでいるWebコンテンツのURLを悪性サイトとして発見することができる。これにより、攻撃を受けた瞬間にリアルタイムで検知する事ができる。したがって、数時間や数日間隔でバッチ処理を集計する場合と比べて、バッチの間隔だけ早く対処可能である。 Therefore, when the Web site is accessed by a Web browser and the exception information generated at that time is compared with the exception occurrence information that has been aggregated in advance, and it can be determined that the vulnerability is exploited by an attack, the Web browser is reading The URL of the content can be found as a malicious site. This allows real-time detection at the moment of attack. Therefore, it is possible to cope with the batch interval earlier than the case where the batch processing is aggregated at intervals of several hours or days.
また、攻撃に繋がる脆弱性であると判断した場合にWebブラウザがアクセスしていたURLについては、悪性なWebコンテンツを配布していることから、これらのURLをブラックリストとしてリスト化できる。このブラックリストは、悪性サイトからWebクライアントを保護するためのファイルタリングや、当該Webサイトの運営者に対する注意喚起等に活用できる。 Further, since URLs accessed by the Web browser when it is determined that the vulnerability is linked to an attack, malicious Web contents are distributed, so these URLs can be listed as a black list. This black list can be used for file tallying for protecting a Web client from a malicious site, alerting the operator of the Web site, or the like.
また、例外が発生したメモリアドレスはバグとなるプログラムの付近である事が言えるため、この箇所を特定することでバグを迅速に修正するための情報として活用できる。例えば、プログラムモジュール名がmshtml.dllでオフセットが1000バイトの場合、mshtml.dllの先頭から1000バイト近辺にバグの原因個所が存在すると推測できる。 In addition, since it can be said that the memory address where the exception occurred is in the vicinity of the program causing the bug, specifying this location can be used as information for quickly correcting the bug. For example, if the program module name is mshtml.dll and the offset is 1000 bytes, it can be inferred that the cause of the bug exists around 1000 bytes from the beginning of mshtml.dll.
[第2の実施形態]
さて、これまで本発明の実施形態について説明したが、本発明は上述した第1の実施形態以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に異なる実施形態を説明する。
[Second Embodiment]
The embodiments of the present invention have been described above, but the present invention may be implemented in various different forms other than the first embodiment described above. Therefore, different embodiments will be described below.
(対象プログラム)
第1の実施形態では、監視対象プログラムの一例としてWebブラウザを例にして説明したが、これに限定されるものではない。例えば、モジュールを読み込んで処理するプログラムなど、プロセッサが実行する様々なプログラムについても同様に処理することができる。
(Target program)
In the first embodiment, the Web browser has been described as an example of the monitoring target program, but the present invention is not limited to this. For example, various programs executed by the processor, such as a program for reading and processing a module, can be similarly processed.
(例外パターンの収集先)
例えば、例外パターンDB13dに記憶される例外パターンの情報を収集するために、安全性が保障されたWebサイトにアクセスして収集することもできる。このようにすることで、安全性が保障されているWebサイトで発生する通常のバグを収集できる。また、例外パターンDB13dに記憶される例外パターンの情報を収集するために、安全性が保障されたWebサイトと安全性が保障されていないWebサイトの両方にアクセスして収集することもできる。
(Exception pattern collection destination)
For example, in order to collect exception pattern information stored in the exception pattern DB 13d, it is also possible to access and collect a secure website. In this way, it is possible to collect normal bugs that occur on a website where safety is guaranteed. In addition, in order to collect exception pattern information stored in the exception pattern DB 13d, it is also possible to access and collect both websites that are secured and websites that are not secured.
また、情報処理装置10は、安全性が保障されたWebサイトにアクセスして例外パターンを集計し、同様に、安全性が保障されていないWebサイトにアクセスして例外パターンを集計し、これらの集計結果を突合させる。そして、情報処理装置10は、安全性が保障されていないWebサイトで発生した例外パターンが、安全性が保障されたWebサイトを用いて集計した結果において上位に位置する場合には、当該例外パターンを単なるバグとして検出する。一方で、情報処理装置10は、安全性が保障されていないWebサイトで発生した例外パターンが、安全性が保障されたWebサイトを用いて集計した結果において下位に位置する場合、または、安全性が保障されたWebサイトを用いて集計した結果に含まれない場合には、悪質なバグとして検出することもできる。
In addition, the
(例外パターンの項目)
第1の実施形態で説明した例外パターンの項目は、あくまで一例であり、任意に設定変更することができる。例えば、オフセットではなくメモリの絶対アドレスを用いてもよい。また、例外の種類を例外パターンの項目から除外することで、例外パターンをマクロな視点で収集することができる。また、例外パターンの項目を増やすことで、例外パターンをミクロな視点で収集することができる。
(Exception pattern items)
The exception pattern items described in the first embodiment are merely examples, and can be arbitrarily changed. For example, an absolute memory address may be used instead of an offset. Also, by excluding exception types from exception pattern items, exception patterns can be collected from a macro perspective. Also, by increasing the number of exception pattern items, exception patterns can be collected from a micro perspective.
例外発生時にモジュール名が取得できない場合、つまり、例外発生場所がモジュールが読み込まれたアドレスではない場合や例外パターンのモジュール名がnullの場合がある。これらの場合、このようにバグの種類によっては、命令ポインタが、プログラムモジュールがロードされていないアドレスを示すことにより、例外を発生させ異常終了する事がある。この際、示すアドレスは毎回変化する場合があり、同一原因のバグであったとしても、例外パターンとしては毎回異なることがあり、統計的に下位に出現してしまう。よって、このような同一原因のバグに起因するが毎回例外発生アドレスが異なる例外パターンについて、モジュール名がnullであることを条件として集計から除外してもよい。 There are cases where the module name cannot be acquired when an exception occurs, that is, the exception occurrence location is not the address where the module is read, or the module name of the exception pattern is null. In these cases, depending on the type of bug, the instruction pointer may indicate an address at which the program module is not loaded, thereby causing an exception and abnormal termination. At this time, the indicated address may change every time, and even if it is a bug of the same cause, it may be different every time as an exception pattern, so that it appears statistically at a lower level. Therefore, exception patterns caused by such bugs having the same cause but having different exception occurrence addresses may be excluded from the aggregation on condition that the module name is null.
(適用システム)
攻撃からホストシステムを保護するためのホスト型侵入検知システムや、おとりのホストシステムとして動作するハニーポット、特にWebブラウザとして動作するWebクライアントハニーポットにおいて、第1の実施形態で説明した手法を用いることで攻撃を検知できる。
(Applicable system)
Use the method described in the first embodiment in a host-type intrusion detection system for protecting a host system from an attack, a honeypot that operates as a decoy host system, particularly a Web client honeypot that operates as a Web browser. Can detect attacks.
第1の実施形態で説明した手法を搭載したホスト型侵入検知システム上では、実際にユーザがWebブラウザを利用して様々なWebサイトにアクセスしているため、ホスト型侵入検知システムに例外情報が蓄積される。同様に、第1の実施形態で説明した手法を搭載したWebクライアントハニーポットでは、検査対象のWebサイトについての例外情報が蓄積される。この時、Webブラウザを標的とする攻撃コードがWebブラウザに含まれた場合は、その例外情報が、今まで集計した例外情報に含まれるか否か、もしくは含まれる件数の少なさによって、攻撃である可能性が高いと判断できる。 On the host-type intrusion detection system equipped with the method described in the first embodiment, since the user actually accesses various websites using a web browser, exception information is stored in the host-type intrusion detection system. Accumulated. Similarly, in the Web client honeypot equipped with the method described in the first embodiment, exception information about the Web site to be inspected is accumulated. At this time, if an attack code targeting the Web browser is included in the Web browser, the attack information depends on whether or not the exception information is included in the exception information that has been collected so far. It can be judged that there is a high possibility.
特に、ゼロデイ攻撃のような未知の脆弱性を利用した攻撃では、発生した例外情報が今までに蓄積した例外情報に全く含まれないことが想定できるため、ある程度蓄積した例外情報に対して、まったく新しい例外情報が出現した場合は、ゼロデイ攻撃の可能性があるとして特定できる。 In particular, in attacks using unknown vulnerabilities such as zero-day attacks, it can be assumed that the exception information that has occurred is not included in the exception information that has been accumulated so far. If new exception information appears, it can be identified as a possible zero-day attack.
(システム構成等)
図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示された構成要素と同一であることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
(System configuration etc.)
Each component of each illustrated device is functionally conceptual, and does not necessarily need to be the same as the physically illustrated component. In other words, the specific form of distribution / integration of each device is not limited to that shown in the figure, and all or a part thereof may be functionally or physically distributed or arbitrarily distributed in arbitrary units according to various loads or usage conditions. Can be integrated and configured.
また、実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。 In addition, among the processes described in the embodiment, all or a part of the processes described as being automatically performed can be manually performed. Further, all or any part of each processing function performed in each device may be realized by a CPU and a program analyzed and executed by the CPU, or may be realized as hardware by wired logic.
(プログラム)
また、実施形態に係る情報処理装置が実行する処理をコンピュータが実行可能な言語で記述したバグ判定プログラムを作成することもできる。この場合、コンピュータがバグ判定プログラムを実行することにより、上記実施形態と同様の効果を得ることができる。さらに、かかるバグ判定プログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたバグ検出プログラムをコンピュータに読み込ませて実行することにより上記実施形態と同様の処理を実現してもよい。以下に、図2等に示した情報処理装置と同様の機能を実現するバグ判定プログラムを実行するコンピュータの一例を説明する。
(program)
It is also possible to create a bug determination program in which processing executed by the information processing apparatus according to the embodiment is described in a language that can be executed by a computer. In this case, when the computer executes the bug determination program, the same effect as in the above embodiment can be obtained. Further, the same processing as in the above embodiment may be realized by recording such a bug determination program on a computer-readable recording medium, and causing the computer to read and execute the bug detection program recorded on the recording medium. Good. An example of a computer that executes a bug determination program that realizes the same function as the information processing apparatus shown in FIG. 2 will be described below.
図9は、バグ判定プログラムを実行するコンピュータを示す図である。図9に示すように、コンピュータ1000は、例えば、メモリ1010と、CPU1020と、ハードディスクドライブインタフェース1030と、ディスクドライブインタフェース1040と、シリアルポートインタフェース1050と、ビデオアダプタ1060と、ネットワークインタフェース1070とを有する。これらの各部は、バス1080によって接続される。
FIG. 9 is a diagram illustrating a computer that executes a bug determination program. As illustrated in FIG. 9, the
メモリ1010は、ROM(Read Only Memory)1011およびRAM1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1090に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1100に接続される。ディスクドライブ1100には、例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース1050には、例えば、マウス1110およびキーボード1120が接続される。ビデオアダプタ1060には、例えば、ディスプレイ1130が接続される。
The
ここで、図9に示すように、ハードディスクドライブ1090は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093およびプログラムデータ1094を記憶する。上記実施形態で説明した各DBは、例えばハードディスクドライブ1090やメモリ1010に記憶される。
Here, as shown in FIG. 9, the hard disk drive 1090 stores, for example, an
また、バグ判定プログラムは、例えば、コンピュータ1000によって実行される指令が記述されたプログラムモジュール1093として、例えばハードディスクドライブ1090に記憶される。具体的には、上記実施形態で説明したWebアクセス部16と同様の情報処理を実行するWebアクセス手順と、モジュール読込監視部17と同様の情報処理を実行するモジュール読込監視手順と、例外監視部18と同様の情報処理を実行する例外監視手順と、バグ検出部20と同様の情報処理を実行するバグ検出手順とが記述されたプログラムモジュール1093が、ハードディスクドライブ1090に記憶される。
Further, the bug determination program is stored in, for example, the hard disk drive 1090 as a
また、バグ検出プログラムによる情報処理に用いられるデータは、プログラムデータ1094として、例えば、ハードディスクドライブ1090に記憶される。そして、CPU1020が、ハードディスクドライブ1090に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出して、上述した各手順を実行する。
Also, data used for information processing by the bug detection program is stored as
なお、バグ検出プログラムに係るプログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1090に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ1100等を介してCPU1020によって読み出されてもよい。あるいは、バグ検出プログラムに係るプログラムモジュール1093やプログラムデータ1094は、LAN(Local Area Network)やWAN(Wide Area Network)等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
The
1、2、3 Webサーバ
10 情報処理装置
11 通信部
13 記憶部
13a 監視対象プログラム
13b プログラムモジュール
13c モジュール読込情報DB
13d 例外パターンDB
13e 悪性サイトDB
14 制御部
15 収集部
16 Webアクセス部
17 モジュール読込監視部
18 例外監視部
18a 特定部
18b 計数部
20 バグ検出部
20a Webアクセス部
20b 判定部
20c 検出部
1000 コンピュータ
1010 メモリ
1011 ROM
1012 RAM
1020 CPU
1030 ハードディスクドライブインタフェース
1040 ディスクドライブインタフェース
1050 シリアルポートインタフェース
1060 ビデオアダプタ
1070 ネットワークインタフェース
1080 バス
1090 ハードディスクドライブ
1091 OS
1092 アプリケーションプログラム
1093 プログラムモジュール
1094 プログラムデータ
1100 ディスクドライブ
1110 マウス
1120 キーボード
1130 ディスプレイ
1, 2, 3
13d Exception pattern DB
13e Malicious Site DB
DESCRIPTION OF SYMBOLS 14
1012 RAM
1020 CPU
1030 Hard
1092
本願の開示するバグ判定装置およびバグ判定方法は、一つの態様において、例外処理を発生させたプログラムモジュールを識別する識別情報と、当該プログラムモジュールが発生させた例外処理の発生回数とを対応付けて記憶する回数記憶部と、実行されたプログラムで例外処理が発生した場合に、前記例外処理を発生させたプログラムが実行するプログラムモジュールを特定する特定部と、前記特定部が特定したプログラムモジュールの識別情報に対応付けられて前記回数記憶部に記憶される前記例外処理の発生回数が所定値以下か否かを判定する判定部と、を有し、前記回数記憶部は、安全性が保障されたWebサイトにアクセスした際に例外処理を発生させたプログラムモジュールを識別する識別情報と、前記例外処理の発生回数とを対応付けて記憶し、前記特定部は、コンテンツビューアを用いてアクセスした、安全性が保障されていないWebサイトで例外処理が発生した場合に、前記例外処理を発生させたコンテンツビューアが実行するプログラムモジュールを特定し、前記判定部は、前記特定部が特定したプログラムモジュールの識別情報に対応付けられて前記回数記憶部に記憶される前記例外処理の発生回数が所定値以下の場合に、前記Webサイトを悪質なサイトとして検出することを特徴とする。 In one aspect, the bug determination apparatus and the bug determination method disclosed in the present application associate identification information for identifying a program module that has caused exception processing with the number of occurrences of exception processing that has been generated by the program module. The number of times to be stored, the identification unit that identifies the program module that is executed by the program that generated the exception processing when exception processing occurs in the executed program, and the identification of the program module that is identified by the identification unit A determination unit that determines whether or not the number of occurrences of the exception process stored in the number storage unit in association with information is equal to or less than a predetermined value , and the number storage unit is secured for safety Identification information for identifying the program module that caused the exception processing when accessing the Web site, and the number of occurrences of the exception processing A program stored by the content viewer that is executed by the content viewer that has generated the exception processing when the exception processing has occurred in a Web site that is accessed by using the content viewer and is not guaranteed to be safe The module is identified, and the determination unit associates the Web when the number of occurrences of the exception process stored in the number storage unit in association with the identification information of the program module identified by the identification unit is equal to or less than a predetermined value. It is characterized by detecting a site as a malicious site .
Claims (5)
実行されたプログラムで例外処理が発生した場合に、前記例外処理を発生させたプログラムが実行するプログラムモジュールを特定する特定部と、
前記特定部が特定したプログラムモジュールの識別情報に対応付けられて前記回数記憶部に記憶される前記例外処理の発生回数が所定値以下か否かを判定する判定部と
を有することを特徴とするバグ判定装置。 A number-of-times storage unit that stores identification information for identifying a program module that has caused exception processing and the number of occurrences of exception processing that has been generated by the program module in association with each other;
A specific unit that identifies a program module that is executed by the program that generated the exception handling when an exception handling occurs in the executed program;
A determination unit that determines whether or not the number of occurrences of the exception processing stored in the number storage unit in association with the identification information of the program module specified by the specification unit is equal to or less than a predetermined value. Bug determination device.
前記特定部は、コンテンツビューアを用いてアクセスした、安全性が保障されていないWebサイトで例外処理が発生した場合に、前記例外処理を発生させたコンテンツビューアが実行するプログラムモジュールを特定し、
前記判定部は、前記特定部が特定したプログラムモジュールの識別情報に対応付けられて前記回数記憶部に記憶される前記例外処理の発生回数が所定値以下の場合に、前記Webサイトを悪質なサイトとして検出することを特徴とする請求項1に記載のバグ判定装置。 The number-of-times storage unit stores identification information for identifying a program module that has caused an exception process when accessing a secure website and the number of occurrences of the exception process in association with each other.
The specifying unit specifies a program module to be executed by the content viewer that has generated the exception process when an exception process occurs in a website that is accessed using the content viewer and the security is not guaranteed.
The determination unit determines that the Web site is a malicious site when the number of occurrences of the exception process stored in the number-of-times storage unit in association with the identification information of the program module specified by the specifying unit is equal to or less than a predetermined value. The bug determination apparatus according to claim 1, wherein the bug determination apparatus detects the bug.
前記特定部は、前記例外処理が発生した場合に、前記例外処理を発生させたプログラムモジュールの前記オフセットをさらに特定し、
前記判定部は、前記特定部が特定したプログラムモジュールの識別情報と前記オフセットとの組合せに対応付けられて前記回数記憶部に記憶される前記例外処理の発生回数が所定値以下か否かを判定することを特徴とする請求項1〜3のいずれか一つに記載のバグ判定装置。 The number-of-times storage unit further associates and stores an offset from a start address at which the program module is loaded to an address at which exception processing has occurred;
The specifying unit further specifies the offset of the program module that caused the exception processing when the exception processing occurs;
The determination unit determines whether the number of occurrences of the exception processing stored in the number-of-times storage unit is associated with a combination of the identification information of the program module specified by the specifying unit and the offset is equal to or less than a predetermined value. The bug determination device according to any one of claims 1 to 3, wherein
実行されたプログラムで例外処理が発生した場合に、例外処理を発生させたプログラムが実行するプログラムモジュールを特定する特定工程と、
前記例外処理を発生させたプログラムモジュールを識別する識別情報と、当該プログラムモジュールが発生させた例外処理の発生回数とを対応付けて記憶する回数記憶部を参照し、前記特定工程が特定したプログラムモジュールの識別情報に対応付けられる前記例外処理の発生回数が所定値以下か否かを判定する判定工程と
を含んだことを特徴とするバグ判定方法。 A bug determination method executed by an information processing apparatus,
A specific step of identifying a program module to be executed by a program that has generated an exception process when an exception process occurs in the executed program;
The program module identified by the specific process with reference to the number storage unit that stores the identification information for identifying the program module that generated the exception process and the number of occurrences of the exception process generated by the program module in association with each other And a determination step of determining whether or not the number of occurrences of the exception processing associated with the identification information is a predetermined value or less.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012168276A JP5425980B2 (en) | 2012-07-30 | 2012-07-30 | Bug determination apparatus and bug determination method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012168276A JP5425980B2 (en) | 2012-07-30 | 2012-07-30 | Bug determination apparatus and bug determination method |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2014026580A true JP2014026580A (en) | 2014-02-06 |
JP5425980B2 JP5425980B2 (en) | 2014-02-26 |
Family
ID=50200134
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012168276A Active JP5425980B2 (en) | 2012-07-30 | 2012-07-30 | Bug determination apparatus and bug determination method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5425980B2 (en) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6353654A (en) * | 1986-08-22 | 1988-03-07 | Nec Corp | System for continuously executing and processing program in case of occurrence of exception |
JP2001142737A (en) * | 1999-11-10 | 2001-05-25 | Matsushita Electric Ind Co Ltd | Memory management device |
JP2003122599A (en) * | 2001-10-11 | 2003-04-25 | Hitachi Ltd | Computer system, and method of executing and monitoring program in computer system |
JP2004109001A (en) * | 2002-09-19 | 2004-04-08 | Toshiba Corp | System and method for weather forecast |
-
2012
- 2012-07-30 JP JP2012168276A patent/JP5425980B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6353654A (en) * | 1986-08-22 | 1988-03-07 | Nec Corp | System for continuously executing and processing program in case of occurrence of exception |
JP2001142737A (en) * | 1999-11-10 | 2001-05-25 | Matsushita Electric Ind Co Ltd | Memory management device |
JP2003122599A (en) * | 2001-10-11 | 2003-04-25 | Hitachi Ltd | Computer system, and method of executing and monitoring program in computer system |
JP2004109001A (en) * | 2002-09-19 | 2004-04-08 | Toshiba Corp | System and method for weather forecast |
Also Published As
Publication number | Publication date |
---|---|
JP5425980B2 (en) | 2014-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12019734B2 (en) | Methods and apparatus for control and detection of malicious content using a sandbox environment | |
US10587647B1 (en) | Technique for malware detection capability comparison of network security devices | |
JP5507176B2 (en) | Method and apparatus for measuring software reliability | |
JP5793764B2 (en) | Method and apparatus for reducing false detection of malware | |
US9251343B1 (en) | Detecting bootkits resident on compromised computers | |
US9679136B2 (en) | Method and system for discrete stateful behavioral analysis | |
US8572750B2 (en) | Web application exploit mitigation in an information technology environment | |
US20130152200A1 (en) | Predictive Heap Overflow Protection | |
CN108664793B (en) | Method and device for detecting vulnerability | |
US10033761B2 (en) | System and method for monitoring falsification of content after detection of unauthorized access | |
JP6909770B2 (en) | Systems and methods for creating antivirus records | |
JP6001781B2 (en) | Unauthorized access detection system and unauthorized access detection method | |
US9507933B2 (en) | Program execution apparatus and program analysis apparatus | |
Gajrani et al. | A robust dynamic analysis system preventing SandBox detection by Android malware | |
CN111460445A (en) | Method and device for automatically identifying malicious degree of sample program | |
CN108369541B (en) | System and method for threat risk scoring of security threats | |
WO2016121348A1 (en) | Anti-malware device, anti-malware system, anti-malware method, and recording medium in which anti-malware program is stored | |
JP2010092174A (en) | Method, device and program for detecting fraudulence, and information processing system | |
JP5752642B2 (en) | Monitoring device and monitoring method | |
TWI470468B (en) | System and method for detecting web malicious programs and behaviors | |
CN116340943A (en) | Application program protection method, device, equipment, storage medium and program product | |
CN105791250A (en) | Application detection method and device | |
JP5386015B1 (en) | Bug detection apparatus and bug detection method | |
US20220245249A1 (en) | Specific file detection baked into machine learning pipelines | |
JP5425980B2 (en) | Bug determination apparatus and bug determination method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20131111 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20131126 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20131127 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5425980 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |