JP5386015B1 - Bug detection apparatus and bug detection method - Google Patents

Bug detection apparatus and bug detection method Download PDF

Info

Publication number
JP5386015B1
JP5386015B1 JP2012168275A JP2012168275A JP5386015B1 JP 5386015 B1 JP5386015 B1 JP 5386015B1 JP 2012168275 A JP2012168275 A JP 2012168275A JP 2012168275 A JP2012168275 A JP 2012168275A JP 5386015 B1 JP5386015 B1 JP 5386015B1
Authority
JP
Japan
Prior art keywords
exception
program
program module
unit
counting
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.)
Active
Application number
JP2012168275A
Other languages
Japanese (ja)
Other versions
JP2014026579A (en
Inventor
満昭 秋山
毅 八木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2012168275A priority Critical patent/JP5386015B1/en
Application granted granted Critical
Publication of JP5386015B1 publication Critical patent/JP5386015B1/en
Publication of JP2014026579A publication Critical patent/JP2014026579A/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】潜在的に脆弱性を持ったバグを早期に発見することを課題とする。
【解決手段】情報処理装置は、複数のプログラムを実行し、実行されたプログラムで例外処理が発生した場合に、例外処理を発生させたプログラムが実行するプログラムモジュールを特定する。そして、情報処理装置は、特定されたプログラムモジュールを識別する識別情報に対応付けて、プログラムモジュールで発生した例外処理の発生回数を計数する。その後、情報処理装置は、計数された例外処理の発生回数のうち、所定値未満の発生回数に対応するプログラムモジュールを検出する。
【選択図】図2
An object of the present invention is to find bugs that are potentially vulnerable at an early stage.
An information processing apparatus executes a plurality of programs and, when exception processing occurs in the executed program, specifies a program module to be executed by the program that generated the exception processing. Then, the information processing apparatus counts the number of times exception processing has occurred in the program module in association with identification information for identifying the specified program module. Thereafter, the information processing apparatus detects a program module corresponding to the occurrence count less than a predetermined value among the counted occurrence counts of exception processing.
[Selection] Figure 2

Description

本発明は、バグ検出装置およびバグ検出方法に関する。   The present invention relates to a bug detection device and a bug detection 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.

Barton Miller、「Fuzz Testing of Application Reliability」、[平成24年7月3日検索]、インターネット<URL:http://pages.cs.wisc.edu/〜bart/fuzz/>Barton Miller, “Fuzz Testing of Application Reliability”, [searched July 3, 2012], Internet <URL: http://pages.cs.wisc.edu/~bart/fuzz/>

しかしながら、上記技術では、潜在的に脆弱性を持ったバグを見落とす可能性が高く、早期に発見することができないという問題がある。   However, there is a problem in the above-mentioned technology that there is a high possibility that a potentially vulnerable bug is overlooked, and it cannot be detected early.

例えば、近年のプログラムが巨大化していることもあり、ホワイトボックステストでプログラムの網羅的な試験を実施する事が困難である。また、プログラムは入力値によって内部の処理動作が変化するので、入力値によってバグが顕在化することもあるが、入力値としては無数に考えられる。このため、ファジングによって、膨大なテストデータ作成とそれを入力したプログラムのテストを、無数にある入力値に対して網羅的に実行することは困難である。   For example, recent programs have become huge, and it is difficult to carry out a comprehensive test of the program by a white box test. In addition, since the internal processing operation of the program varies depending on the input value, bugs may become apparent depending on the input value, but there are an infinite number of input values. For this reason, it is difficult to comprehensively execute the creation of a huge amount of test data and the test of the program that has input it by fuzzing for an infinite number of input values.

特に、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 thereof is to provide a bug detection device and a bug detection method capable of finding a potentially vulnerable bug at an early stage.

本願の開示するバグ検出装置およびバグ検出方法は、一つの態様において、複数のプログラムを実行する実行部と、前記実行部によって実行されたプログラムで例外処理が発生した場合に、例外処理を発生させたプログラムが実行するプログラムモジュールを特定する特定部と、前記特定部によって特定されたプログラムモジュールを識別する識別情報に対応付けて、前記プログラムモジュールで発生した例外処理の発生回数を計数する計数部と、前記計数部によって計数された例外処理の発生回数のうち、所定値未満の発生回数に対応するプログラムモジュールを、潜在的に脆弱性を持つバグとして検出する検出部とを有する。   In one aspect, a bug detection device and a bug detection method disclosed in the present application, when an exception process occurs in an execution unit that executes a plurality of programs and a program executed by the execution unit, generates an exception process. A specifying unit for specifying a program module to be executed by the program, and a counting unit for counting the number of occurrences of exception processing generated in the program module in association with identification information for identifying the program module specified by the specifying unit; And a detection unit that detects a program module corresponding to the number of occurrences of exception processing counted less than a predetermined value among the number of occurrences of exception processing counted by the counting unit as a potentially vulnerable bug.

本願の開示するバグ検出装置およびバグ検出方法の一つの態様によれば、潜在的に脆弱性を持ったバグを早期に発見することができるという効果を奏する。   According to one aspect of the bug detection apparatus and the bug detection method disclosed in the present application, there is an effect that a potentially vulnerable bug can be found early.

図1は、第1の実施形態に係るシステムの全体構成例を示す図である。FIG. 1 is a diagram illustrating an example of the overall configuration of a system according to the first embodiment. 図2は、第1の実施形態に係る情報処理装置の機能構成を示す機能ブロック図である。FIG. 2 is a functional block diagram illustrating a functional configuration of the information processing apparatus according to the first embodiment. 図3は、モジュール読込情報DBが記憶する情報の例を示す図である。FIG. 3 is a diagram illustrating an example of information stored in the module read information DB. 図4は、例外パターンDBが記憶する情報の例を示す図である。FIG. 4 is a diagram illustrating an example of information stored in the exception pattern DB. 図5は、モジュール名とオフセットとの関係を説明する図である。FIG. 5 is a diagram for explaining the relationship between the module name and the offset. 図6は、第1の実施形態に係る例外パターン収集から潜在的なバグ検出までの処理の流れを示すフローチャートである。FIG. 6 is a flowchart showing a flow of processing from exception pattern collection to potential bug detection according to the first embodiment. 図7は、バグ検出プログラムを実行するコンピュータを示す図である。FIG. 7 is a diagram illustrating a computer that executes a bug detection program.

以下に、本願の開示するバグ検出装置およびバグ検出方法の実施形態を図面に基づいて詳細に説明する。なお、この実施形態によりこの発明が限定されるものではない。   Embodiments of a bug detection device and a bug detection method disclosed in the present application will be described below in detail with reference to the drawings. In addition, this invention is not limited by this embodiment.

[第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 server 1, a Web server 2, a Web server 3, and an information processing apparatus 10 so that they can communicate with each other. The number of servers and the like is merely an example, and is not limited to this.

Webサーバ1とWebサーバ2は、Webコンテンツを含むWebサイトをユーザに提供するサーバであり、安全性が保障されている。Webサーバ3は、Webコンテンツを含むWebサイトをユーザに提供するサーバであり、安全性が保障されていない。安全性が保障されているとは、例えば第3者機関によってセキュリティが高いと認定されていたり、過去のウィルス検出回数や障害回数が所定値以下であったり、任意の方法で認定することができる。   The Web server 1 and the Web server 2 are servers that provide a user with a Web site including Web content, and safety is guaranteed. The web server 3 is a server that provides a user with a website including web content, and safety is not guaranteed. Security is guaranteed to be certified by a third party, for example, as having high security, past virus detection count or fault count is below a predetermined value, or can be certified by any method .

情報処理装置10は、各WebサーバへアクセスするWebクライアントであり、例えばパーソナルコンピュータやサーバなどの装置である。この情報処理装置10は、複数のプログラムを実行し、実行されたプログラムで例外処理が発生した場合に、例外処理を発生させたプログラムが実行するプログラムモジュールを特定する。そして、情報処理装置10は、特定されたプログラムモジュールを識別する識別情報に対応付けて、プログラムモジュールで発生した例外処理の発生回数を計数する。その後、情報処理装置10は、計数された例外処理の発生回数のうち、所定値未満の発生回数に対応するプログラムモジュールを検出する。   The information processing apparatus 10 is a Web client that accesses each Web server, such as a personal computer or a server. The information processing apparatus 10 executes a plurality of programs, and when an exception process occurs in the executed program, specifies the program module to be executed by the program that generated the exception process. Then, the information processing apparatus 10 counts the number of times exception processing has occurred in the program module in association with identification information for identifying the specified program module. Thereafter, the information processing apparatus 10 detects a program module corresponding to the occurrence count less than a predetermined value among the counted occurrence counts of exception processing.

つまり、情報処理装置10は、一般のWebサイトで発生していることを根拠に、集計された発生回数が上位の例外処理を単なるバグと判定する。一方で、情報処理装置10は、一般のWebサイトでは発生している回数が少ないことを根拠に、集計された発生回数が下位の例外処理を、潜在的に脆弱性を持つバグと判定する。   That is, the information processing apparatus 10 determines that an exception process with the highest number of occurrences is a mere bug based on the occurrence on a general Web site. On the other hand, the information processing apparatus 10 determines that an exception process whose total occurrence count is lower is a potentially vulnerable bug based on the fact that the occurrence count is low on a general Web site.

このように、情報処理装置10は、発生回数が少ないためにパッチの提供が遅くなり、悪用される可能性の高いバグを優先的に検出するので、潜在的に脆弱性を持ったバグを早期に発見することができる。   As described above, the information processing apparatus 10 preferentially detects bugs that are likely to be misused because the patch generation is slow because the number of occurrences is small, so that potentially vulnerable bugs are detected early. Can be found in.

[情報処理装置の構成]
次に、情報処理装置の構成を説明する。なお、各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 information processing apparatus 10 includes a communication unit 11, a storage unit 13, and a control unit 14. Note that the control unit and the like shown here are merely examples, and may include an input unit such as a mouse, a display unit such as a display, and the like.

通信部11は、他の装置と通信を実行する処理部である。例えば、通信部11は、各Webサーバとのコネクションを確立し、Webブラウザ等を用いた通信を制御する。   The communication unit 11 is a processing unit that performs communication with other devices. For example, the communication unit 11 establishes a connection with each Web server and controls communication using a Web browser or the like.

記憶部13は、監視対象プログラム13a、プログラムモジュール13b、モジュール読込情報DB(DataBase)13c、例外パターンDB13dを保持する記憶装置である。例えば、記憶部13には、半導体素子やHDD(Hard Disk Drive)などの記憶装置を用いることができる。   The storage unit 13 is a storage device that holds a monitoring target program 13a, a program module 13b, a module read information DB (DataBase) 13c, and an exception pattern DB 13d. For example, the storage unit 13 may be a storage device such as a semiconductor element or an HDD (Hard Disk Drive).

監視対象プログラム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 program module 13b is a program module executed by the monitoring target program 13a. For example, it is a processing module that is executed when a Web browser reads a Web site or Web content on the Web site.

モジュール読込情報DB13cは、メモリにロードされたプログラムモジュール13bの情報を記憶する。ここで記憶される情報は、後述するモジュール読込監視部17等によって更新される。図3は、モジュール読込情報DBが記憶する情報の例を示す図である。図3に示すように、モジュール読込情報DB13cは、「モジュール名、先頭アドレス、末尾アドレス」を対応付けて記憶する。   The module read information DB 13c stores information on the program module 13b loaded in the memory. The information stored here is updated by a module reading monitoring unit 17 or the like which will be described later. FIG. 3 is a diagram illustrating an example of information stored in the module read information DB. As illustrated in FIG. 3, the module read information DB 13c stores “module name, start address, end address” in association with each other.

ここで記憶される「モジュール名」は、メモリにロードされたモジュールの名称、すなわち実行されたプログラムモジュールの名称である。「先頭アドレス」は、ロードされる先頭のアドレス、すなわち、プログラムモジュールがロードされた先のメモリの先頭アドレスである。「末尾アドレス」は、ロードされる末尾のアドレス、すなわち、プログラムモジュールがロードされた先のメモリの末尾アドレスである。図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.

制御部14は、収集部15とバグ検出部20とを有し、これらによって、潜在的に脆弱性を有するバグを検出する処理部である。制御部14は、例えばプロセッサなどであり、制御部14が有する各処理部は、プロセッサなどが実行する処理部である。   The control unit 14 includes a collection unit 15 and a bug detection unit 20, and is a processing unit that detects a potentially vulnerable bug. The control unit 14 is, for example, a processor, and each processing unit included in the control unit 14 is a processing unit executed by the processor.

収集部15は、Webアクセス部16、モジュール読込監視部17、例外監視部18を有し、これらによって、例外処理の発生を監視し、例外処理の情報を収集する処理部である。Webアクセス部16は、記憶部13に記憶される監視対象プログラム13aを実行し、Webブラウザを用いてWebサーバへアクセスする処理部である。Webアクセス部16は、監視対象プログラムをメモリにロードして実行する。このWebアクセス部16は、アクセスしたWebサイトやWebコンテンツに応じて、必要なプログラムモジュール13bを実行する。また、Webアクセス部16がアクセスするWebサイトは、安全性が保障されているいないに関わらず、管理者等によって予め指定されていてもよく、ランダムに実行してもよい。   The collection unit 15 includes a Web access unit 16, a module reading monitoring unit 17, and an exception monitoring unit 18, which monitors the occurrence of exception processing and collects exception processing information. The web access unit 16 is a processing unit that executes the monitoring target program 13a stored in the storage unit 13 and accesses the web server using a web browser. The web access unit 16 loads the monitoring target program into the memory and executes it. The Web access unit 16 executes a necessary program module 13b according to the accessed Web site and Web content. The Web site accessed by the Web access unit 16 may be designated in advance by an administrator or the like, or may be executed at random, regardless of whether the security is not guaranteed.

モジュール読込監視部17は、Webアクセス部16がロードしたプログラムモジュールを監視する処理部である。具体的には、モジュール読込監視部17は、Webアクセス部16がプログラムモジュールをメモリにロードしたことを検知すると、ロードされたプログラムモジュールの名称、ロードされた先頭アドレス、ロードされた末尾アドレスを検出する。そして、モジュール読込監視部17は、取得したプログラムモジュールの名称、先頭アドレス、末尾アドレスを対応付けてモジュール読込情報DB13cに格納する。   The module reading monitoring unit 17 is a processing unit that monitors the program module loaded by the Web access unit 16. Specifically, when the module reading monitoring unit 17 detects that the Web access unit 16 has loaded the program module into the memory, the module reading monitoring unit 17 detects the name of the loaded program module, the loaded start address, and the loaded end address. To do. Then, the module reading monitoring unit 17 stores the acquired program module name, the start address, and the end address in association with each other in the module reading information DB 13c.

例えば、モジュール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 unit 17 detects the module A, the start address “100000”, and the end address “110000”, Store in the module read information DB 13c. As described above, the module reading monitoring unit 17 monitors the event that the program module is loaded, and when the event occurs, the program module name (for example, kernel32.dll) and the program module are loaded. The start address and end address are acquired and stored in the module read information DB 13c.

例外監視部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は、計数部18bによって計数された例外処理の発生回数のうち、所定値未満の発生回数に対応するプログラムモジュールを、潜在的に脆弱性を持つバグとして検出する処理部である。例えば、バグ検出部20は、例外パターンDB13dに格納されるレコードのうち、出現回数が600未満のモジュールとオフセットと例外の種類の組み合わせを、潜在的に脆弱性を持つバグとして検出する。   The bug detection unit 20 is a processing unit that detects a program module corresponding to the number of occurrences of exception processing counted by the counting unit 18b that is less than a predetermined value as a potentially vulnerable bug. For example, the bug detection unit 20 detects a combination of a module having an appearance count of less than 600, an offset, and an exception type among the records stored in the exception pattern DB 13d as a potentially vulnerable bug.

すなわち、例外パターンDB13dに格納される集計結果の上位は、多くの一般サイトに含まれるものであり、集計結果の下位は、ある特定のサイトにのみ含まれることを意味する。この例外情報の集計結果を用いて、集計結果の上位に含まれるものを、多くの一般のサイトでよく発生する単なる記述ミスに基づくバグであると判断できる。   That is, the higher rank of the tabulation results stored in the exception pattern DB 13d is included in many general sites, and the lower rank of the tabulation 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は、例外処理を発生させているものの出現回数が少ない例外を、潜在的に脆弱性を持つバグとして検出する。なお、集計結果の上位や下位と判断する閾値は任意に設定できる。   That is, there is a high possibility that the upper bug is an exception that is not created so that the Web content or the like is vulnerable. Such exceptions are likely to be considered during development so as not to be vulnerable. 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 bug detection unit 20 detects an exception that causes exception processing but has a small number of appearances as a potentially vulnerable bug. Note that the threshold value for determining the upper or lower order of the aggregation result can be arbitrarily set.

[処理の流れ]
図6は、第1の実施形態に係る例外パターン収集から潜在的なバグ検出までの処理の流れを示すフローチャートである。図6に示すように、情報処理装置10のWebアクセス部16は、監視対象プログラム13aをメモリにロードしてWebブラウザを起動する(S101)。
[Process flow]
FIG. 6 is a flowchart showing a flow of processing from exception pattern collection to potential bug detection according to the first embodiment. As shown in FIG. 6, the Web access unit 16 of the information processing apparatus 10 loads the monitoring target program 13a into the memory and starts the Web browser (S101).

そして、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 program module 13b into the memory and executes the corresponding module. On the other hand, the module reading monitoring unit 17 monitors the event execution of the program module, acquires the top address, end address, and module name on the memory loaded with the program module, and stores them in the module reading information DB 13c.

その後、例外処理が発生すると(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)、バグ検出部20は、例外パターンDB13dを参照し(S114)、出現回数が所定値以下のモジュールを特定する(S115)。そして、バグ検出部20は、特定したモジュールを潜在的なバグとして検出する(S116)。このとき、バグ検出部20は、所定値以下の出現回数に対応するモジュール名、オフセット、例外の種類の組み合わせを特定する。また、ここで特定されたバグすなわち上記組み合わせが、優先的にパッチ適用の対象として処理される。   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 bug detection unit 20 refers to the exception pattern DB 13d (S114), and identifies a module whose appearance count is equal to or smaller than a predetermined value. (S115). Then, the bug detection unit 20 detects the identified module as a potential bug (S116). At this time, the bug detection unit 20 specifies a combination of a module name, an offset, and an exception type corresponding to the number of appearances equal to or less than a predetermined value. Also, the bug identified here, that is, the above combination is preferentially processed as a patch application target.

[効果]
このように、第1の実施形態では、Webブラウザに対して、膨大なテストデータ作成とそれを入力してテストを行う必要がなく、プログラムリリース後に、一般サイトのコンテンツを読み込ませることで現実的に存在するコンテンツに起因する例外によりバグを発見できる。また、その例外の発生箇所や例外の種類に応じて集計することで、システムの利用者が対処すべきバグを判断できるため、効率的にバグの対処が可能になる。
[effect]
As described above, in the first embodiment, it is not necessary to create a huge amount of test data and input it to the web browser for testing, and it is realistic to read the contents of a general site after the program is released. Bugs can be found by exceptions caused by content present in Also, by counting according to the location of the exception and the type of exception, it is possible to determine the bug that the system user should deal with, so that the bug can be dealt with efficiently.

また、Webブラウザに関してバグを効率的に発見するために、一般のWebサイトをWebブラウザでアクセスし、例外発生時の情報を収集する。これにより、一般のサイトでよく発生する誤ったWebコンテンツの記述に基づく単なるバグによる例外情報を収集できる。これはWebコンテンツが脆弱性を突くようには作成されていない例外である可能性が高い。このような例外は脆弱性を持たないように開発時に考慮されている可能性が高い。このため、この時の例外情報を正常例外パターンとして識別することができる。   Further, in order to efficiently find bugs in the Web browser, a general Web site is accessed by the Web browser, and information at the time of occurrence of an exception is collected. This makes it possible to collect exception information due to simple bugs based on erroneous Web content descriptions that often occur on general sites. There is a high possibility that this is an exception that has not been created so that the Web content is vulnerable. Such exceptions are likely to be considered during development so as not to be vulnerable. Therefore, the exception information at this time can be identified as a normal exception pattern.

また、通常利用時に正常動作として認識され、潜在的に脆弱性を持った見落とされがちなバグを発見できる。また、Webブラウザに対して、膨大なテストデータ作成とそれを入力してテストを行う必要がなく、プログラムリリース後に、一般サイトのコンテンツを読み込ませることで現実的に存在するコンテンツに起因する例外によりバグを発見できる。また、その例外の発生箇所や例外の種類に応じて集計することで、第1の実施形態で説明した情報処理装置を搭載したシステムの利用者が対処すべきバグを判断できるため、効率的にバグの対処が可能になる。   In addition, bugs that are recognized as normal operations during normal use and are often overlooked with potential vulnerabilities can be found. In addition, it is not necessary to create a huge amount of test data and test it by inputting it to a Web browser. After the program is released, the content of a general site can be read and an exception caused by content that actually exists Can find bugs. Also, by counting according to the location where the exception occurred and the type of exception, it is possible to efficiently determine the bug to be dealt with by the user of the system equipped with the information processing apparatus described in the first embodiment. Bugs can be dealt with.

また、例外が発生したメモリアドレスはバグとなるプログラムの付近である事が言えるため、この箇所を特定することでバグを迅速に修正するための情報として活用できる。例えば、プログラムモジュール名が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サイトであっても、一般的には気付かないバグ、すなわち、例外処理の発生回数が少ないバグを検出することができる。この結果、悪意のあるユーザが使用する可能性が高い小さな脆弱性を検出することができる。
(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. By doing so, it is possible to detect a bug that is not generally noticed, that is, a bug with a small number of occurrences of exception processing, even for a Web site whose safety is guaranteed. As a result, it is possible to detect small vulnerabilities that are likely to be used by malicious users.

また、情報処理装置10は、安全性が保障されたWebサイトにアクセスして例外パターンを集計し、同様に、安全性が保障されていないWebサイトにアクセスして例外パターンを集計し、これらの集計結果を突合させる。そして、情報処理装置10は、安全性が保障されていないWebサイトで発生した例外パターンが、安全性が保障されたWebサイトを用いて集計した結果において上位に位置する場合には、当該例外パターンを単なるバグとして検出する。一方で、情報処理装置10は、安全性が保障されていないWebサイトで発生した例外パターンが、安全性が保障されたWebサイトを用いて集計した結果において下位に位置する場合、または、安全性が保障されたWebサイトを用いて集計した結果に含まれない場合には、当該例外パターンを潜在的に脆弱性を持ったバグとして検出する。   In addition, the information processing apparatus 10 accesses a website where safety is guaranteed and aggregates exception patterns. Similarly, the information processing apparatus 10 accesses websites where safety is not guaranteed and totals exception patterns. Match the counting results. Then, the information processing apparatus 10 determines that the exception pattern generated in a website whose safety is not guaranteed is higher than the result of counting using the website whose safety is guaranteed. Is detected as a mere bug. On the other hand, the information processing apparatus 10 is configured so that an exception pattern generated in a website whose safety is not guaranteed is positioned in a lower position in the result of aggregation using the website where safety is guaranteed, or safety If the exception pattern is not included in the result of aggregation using a guaranteed Web site, the exception pattern is detected as a potentially vulnerable bug.

このように、実際の攻撃サイトおよび、攻撃サイトである可能性のあるサイトと、通常のサイトの例外発生の統計的データの突合により、閾値以下の例外を攻撃に利用される可能性のあるバグとして抽出することもできる。また、例外パターンにWebサイトのURL(Uniform Resource Locator)を対応付けて集計することで、悪質なWebサイトを検出することもできる。   In this way, bugs that can use exceptions below the threshold for attacks due to a match between the actual attack site and the site that may be the attack site and the statistical data of the occurrence of exceptions in the normal site Can also be extracted. In addition, it is possible to detect a malicious website by associating the exception pattern with the URL (Uniform Resource Locator) of the website.

(例外パターンの項目)
第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 detection 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 detection program, the same effect as in the above embodiment can be obtained. Furthermore, the bug detection program may be recorded on a computer-readable recording medium, and the bug detection program recorded on the recording medium may be read and executed by the computer to execute the same processing as in the above embodiment. Good. An example of a computer that executes a bug detection program that implements the same function as the information processing apparatus shown in FIG.

図7は、バグ検出プログラムを実行するコンピュータを示す図である。図7に示すように、コンピュータ1000は、例えば、メモリ1010と、CPU1020と、ハードディスクドライブインタフェース1030と、ディスクドライブインタフェース1040と、シリアルポートインタフェース1050と、ビデオアダプタ1060と、ネットワークインタフェース1070とを有する。これらの各部は、バス1080によって接続される。   FIG. 7 is a diagram illustrating a computer that executes a bug detection program. As illustrated in FIG. 7, the computer 1000 includes, for example, a memory 1010, a CPU 1020, a hard disk drive interface 1030, a disk drive interface 1040, a serial port interface 1050, a video adapter 1060, and a network interface 1070. These units are connected by a bus 1080.

メモリ1010は、ROM(Read Only Memory)1011およびRAM1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1090に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1100に接続される。ディスクドライブ1100には、例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース1050には、例えば、マウス1110およびキーボード1120が接続される。ビデオアダプタ1060には、例えば、ディスプレイ1130が接続される。   The memory 1010 includes a ROM (Read Only Memory) 1011 and a RAM 1012. The ROM 1011 stores a boot program such as BIOS (Basic Input Output System). The hard disk drive interface 1030 is connected to the hard disk drive 1090. The disk drive interface 1040 is connected to the disk drive 1100. A removable storage medium such as a magnetic disk or an optical disk is inserted into the disk drive 1100, for example. For example, a mouse 1110 and a keyboard 1120 are connected to the serial port interface 1050. For example, a display 1130 is connected to the video adapter 1060.

ここで、図7に示すように、ハードディスクドライブ1090は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093およびプログラムデータ1094を記憶する。上記実施形態で説明した各DBは、例えばハードディスクドライブ1090やメモリ1010に記憶される。   Here, as shown in FIG. 7, the hard disk drive 1090 stores, for example, an OS 1091, an application program 1092, a program module 1093, and program data 1094. Each DB described in the above embodiment is stored in, for example, the hard disk drive 1090 or the memory 1010.

また、バグ検出プログラムは、例えば、コンピュータ1000によって実行される指令が記述されたプログラムモジュール1093として、例えばハードディスクドライブ1090に記憶される。具体的には、上記実施形態で説明したWebアクセス部16と同様の情報処理を実行するWebアクセス手順と、モジュール読込監視部17と同様の情報処理を実行するモジュール読込監視手順と、例外監視部18と同様の情報処理を実行する例外監視手順と、バグ検出部20と同様の情報処理を実行するバグ検出手順とが記述されたプログラムモジュール1093が、ハードディスクドライブ1090に記憶される。   Further, the bug detection program is stored in, for example, the hard disk drive 1090 as a program module 1093 in which an instruction to be executed by the computer 1000 is described. Specifically, a Web access procedure for executing information processing similar to that of the Web access unit 16 described in the above embodiment, a module reading monitoring procedure for executing information processing similar to that of the module reading monitoring unit 17, and an exception monitoring unit The hard disk drive 1090 stores a program module 1093 in which an exception monitoring procedure for executing the same information processing as in FIG. 18 and a bug detection procedure for executing the same information processing as in the bug detection unit 20 are described.

また、バグ検出プログラムによる情報処理に用いられるデータは、プログラムデータ1094として、例えば、ハードディスクドライブ1090に記憶される。そして、CPU1020が、ハードディスクドライブ1090に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出して、上述した各手順を実行する。   Also, data used for information processing by the bug detection program is stored as program data 1094 in, for example, the hard disk drive 1090. Then, the CPU 1020 reads out the program module 1093 and the program data 1094 stored in the hard disk drive 1090 to the RAM 1012 as necessary, and executes the above-described procedures.

なお、バグ検出プログラムに係るプログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1090に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ1100等を介してCPU1020によって読み出されてもよい。あるいは、バグ検出プログラムに係るプログラムモジュール1093やプログラムデータ1094は、LAN(Local Area Network)やWAN(Wide Area Network)等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。   The program module 1093 and the program data 1094 related to the bug detection program are not limited to being stored in the hard disk drive 1090. For example, the program module 1093 and the program data 1094 are stored in a removable storage medium and read by the CPU 1020 via the disk drive 1100 or the like. May be issued. Alternatively, the program module 1093 and the program data 1094 related to the bug detection program are stored in another computer connected via a network such as a LAN (Local Area Network) or a WAN (Wide Area Network), and are transmitted via the network interface 1070. May be read by the CPU 1020.

1、2、3 Webサーバ
10 情報処理装置
11 通信部
13 記憶部
13a 監視対象プログラム
13b プログラムモジュール
13c モジュール読込情報DB
13d 例外パターンDB
14 制御部
15 収集部
16 Webアクセス部
17 モジュール読込監視部
18 例外監視部
18a 特定部
18b 計数部
20 バグ検出部
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 Web server 10 Information processing device 11 Communication unit 13 Storage unit 13a Monitored program 13b Program module 13c Module read information DB
13d Exception pattern DB
DESCRIPTION OF SYMBOLS 14 Control part 15 Collection part 16 Web access part 17 Module reading monitoring part 18 Exception monitoring part 18a Identification part 18b Counting part 20 Bug detection part 1000 Computer 1010 Memory 1011 ROM
1012 RAM
1020 CPU
1030 Hard disk drive interface 1040 Disk drive interface 1050 Serial port interface 1060 Video adapter 1070 Network interface 1080 Bus 1090 Hard disk drive 1091 OS
1092 Application Program 1093 Program Module 1094 Program Data 1100 Disk Drive 1110 Mouse 1120 Keyboard 1130 Display

Claims (5)

複数のプログラムを実行する実行部と、
前記実行部によって実行されたプログラムで例外処理が発生した場合に、前記例外処理を発生させたプログラムが実行するプログラムモジュールを特定する特定部と、
前記特定部によって特定されたプログラムモジュールを識別する識別情報に対応付けて、前記プログラムモジュールで発生した例外処理の発生回数を計数する計数部と、
前記計数部によって計数された例外処理の発生回数のうち、所定値未満の発生回数に対応するプログラムモジュールを検出する検出部と
を有することを特徴とするバグ検出装置。
An execution unit for executing a plurality of programs;
When an exception process occurs in the program executed by the execution unit, a specifying unit that specifies a program module to be executed by the program that generated the exception process;
A counting unit that counts the number of times exception processing has occurred in the program module in association with identification information that identifies the program module specified by the specifying unit;
A bug detection device comprising: a detection unit that detects a program module corresponding to a number of occurrences of exception processing counted less than a predetermined value among the number of occurrences of exception processing counted by the counting unit.
前記実行部は、コンテンツビューアのプログラムを実行し、実行させたコンテンツビューアを用いて複数のWebサイトにアクセスし、
前記特定部は、前記実行部によってアクセスされたWebサイトで例外処理が発生した場合に、例外処理を発生させた前記コンテンツビューアが実行するプログラムモジュールを特定することを特徴とする請求項1に記載のバグ検出装置。
The execution unit executes a content viewer program, accesses a plurality of websites using the executed content viewer,
The said specific | specification part specifies the program module which the said content viewer which generated exception processing specifies, when exception processing generate | occur | produces in the Web site accessed by the said execution part. Bug detection device.
前記実行部は、安全性が保障された複数のWebサイトと、安全性が保障されていない複数のWebサイトとにアクセスし、
前記特定部は、前記安全性が保障された複数のWebサイトで例外処理が発生した場合に、例外処理を発生させた前記プログラムモジュールを特定するとともに、前記安全性が保障されていない複数のWebサイトで例外処理が発生した場合に、例外処理を発生させた前記プログラムモジュールを特定し、
前記計数部は、前記安全性が保障された複数のWebサイトごとに前記例外処理の発生回数を計数した集計結果を生成するとともに、前記安全性が保障されていない複数のWebサイトごとに前記例外処理の発生回数を計数した集計結果を生成し、
前記検出部は、前記計数部が生成した各集計結果を突合し、前記安全性が保障されていないWebサイトの集計結果から、前記所定値未満の発生回数に対応するプログラムモジュールを検出することを特徴とする請求項2に記載のバグ検出装置。
The execution unit accesses a plurality of websites whose safety is guaranteed and a plurality of websites whose safety is not guaranteed,
The specifying unit specifies the program module that caused the exception processing when the exception processing occurs in the plurality of Web sites that are guaranteed the safety, and the plurality of Webs that are not guaranteed the safety. When exception processing occurs on the site, the program module that caused the exception processing is identified,
The counting unit generates a total result obtained by counting the number of occurrences of the exception processing for each of the plurality of websites for which the safety is guaranteed, and the exception for each of the plurality of websites for which the safety is not guaranteed. Generate a count result that counts the number of processing occurrences,
The detecting unit collates each counting result generated by the counting unit, and detects a program module corresponding to the number of occurrences less than the predetermined value from the counting result of the Web site whose safety is not guaranteed. The bug detection device according to claim 2.
前記特定部は、前記プログラムモジュールがロードされる先頭アドレスから例外処理が発生したアドレスまでのオフセットをさらに特定し、
前記計数部は、前記識別情報と前記オフセットとの組合せに対応付けて、前記例外処理の発生回数を計数し、
前記検出部は、前記計数部によって計数された例外処理の発生回数のうち、所定値未満の発生回数に対応する前記プログラムモジュールおよび前記オフセットの組み合わせを検出することを特徴とする請求項1〜3のいずれか一つに記載のバグ検出装置。
The specifying unit further specifies an offset from a start address at which the program module is loaded to an address at which exception processing has occurred,
The counting unit counts the number of occurrences of the exception handling in association with the combination of the identification information and the offset,
The said detection part detects the combination of the said program module and the said offset corresponding to the frequency | count of generation | occurrence | production less than predetermined value among the generation | occurrence | production counts of the exception process counted by the said counting part. The bug detection device according to any one of the above.
情報処理装置で実行されるバグ検出方法であって、
複数のプログラムを実行する実行工程と、
前記実行工程によって実行されたプログラムで例外処理が発生した場合に、前記例外処理を発生させたプログラムが実行するプログラムモジュールを特定する特定工程と、
前記特定工程によって特定されたプログラムモジュールを識別する識別情報に対応付けて、前記プログラムモジュールで発生した例外処理の発生回数を計数する計数工程と、
前記計数工程によって計数された例外処理の発生回数のうち、所定値未満の発生回数に対応するプログラムモジュールを検出する検出工程と
を含んだことを特徴とするバグ検出方法。
A bug detection method executed by an information processing apparatus,
An execution process for executing a plurality of programs;
A specific step of specifying a program module to be executed by the program that generated the exception process when an exception process occurs in the program executed by the execution step;
A counting step of counting the number of occurrences of exception processing occurring in the program module in association with identification information for identifying the program module specified in the specifying step;
A bug detecting method comprising: detecting a program module corresponding to the number of occurrences of exception processing counted in the counting step that is less than a predetermined value.
JP2012168275A 2012-07-30 2012-07-30 Bug detection apparatus and bug detection method Active JP5386015B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012168275A JP5386015B1 (en) 2012-07-30 2012-07-30 Bug detection apparatus and bug detection method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012168275A JP5386015B1 (en) 2012-07-30 2012-07-30 Bug detection apparatus and bug detection method

Publications (2)

Publication Number Publication Date
JP5386015B1 true JP5386015B1 (en) 2014-01-15
JP2014026579A JP2014026579A (en) 2014-02-06

Family

ID=50036619

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012168275A Active JP5386015B1 (en) 2012-07-30 2012-07-30 Bug detection apparatus and bug detection method

Country Status (1)

Country Link
JP (1) JP5386015B1 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6680979B2 (en) * 2016-06-23 2020-04-15 富士通株式会社 Test support program, test support device, and test support method
WO2022230189A1 (en) * 2021-04-30 2022-11-03 日本電信電話株式会社 Test support device, test support method, and program

Also Published As

Publication number Publication date
JP2014026579A (en) 2014-02-06

Similar Documents

Publication Publication Date Title
US20240121266A1 (en) Malicious script detection
US10235524B2 (en) Methods and apparatus for identifying and removing malicious applications
JP5507176B2 (en) Method and apparatus for measuring software reliability
JP5793764B2 (en) Method and apparatus for reducing false detection of malware
US11176247B2 (en) System and method for container assessment using sandboxing
US9507933B2 (en) Program execution apparatus and program analysis apparatus
CN111460445A (en) Method and device for automatically identifying malicious degree of sample program
JP6717206B2 (en) Anti-malware device, anti-malware system, anti-malware method, and anti-malware program
JP5752642B2 (en) Monitoring device and monitoring method
US10701087B2 (en) Analysis apparatus, analysis method, and analysis program
CN116340943A (en) Application program protection method, device, equipment, storage medium and program product
JP5656266B2 (en) Blacklist extraction apparatus, extraction method and extraction program
JP6623128B2 (en) Log analysis system, log analysis method, and log analysis device
JP5386015B1 (en) Bug detection apparatus and bug detection method
Bhatt et al. Categorization of vulnerabilities in a software
JP2016525750A (en) Identifying misuse of legal objects
JP5425980B2 (en) Bug determination apparatus and bug determination method
JP5679347B2 (en) Failure detection device, failure detection method, and program
KR20210076455A (en) Method and apparatus for automated verifying of xss attack
WO2022137883A1 (en) Attack information generation device, control method, and non-transitory computer-readable medium
WO2020170345A1 (en) History output device, control method, and program
JP6296915B2 (en) Analysis apparatus, analysis method, and program
CN114785542A (en) Trojan horse detection method and system, electronic equipment and storage medium
KR20230055096A (en) Cyber security report generation method of electronic apparatus
JP2022002036A (en) Detection device, detection system and detection program

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131004

R150 Certificate of patent or registration of utility model

Ref document number: 5386015

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