WO2018230194A1 - 特定支援装置、特定支援方法及び特定支援プログラム - Google Patents

特定支援装置、特定支援方法及び特定支援プログラム Download PDF

Info

Publication number
WO2018230194A1
WO2018230194A1 PCT/JP2018/017787 JP2018017787W WO2018230194A1 WO 2018230194 A1 WO2018230194 A1 WO 2018230194A1 JP 2018017787 W JP2018017787 W JP 2018017787W WO 2018230194 A1 WO2018230194 A1 WO 2018230194A1
Authority
WO
WIPO (PCT)
Prior art keywords
difference
source code
correction
unit
extraction unit
Prior art date
Application number
PCT/JP2018/017787
Other languages
English (en)
French (fr)
Inventor
明日香 中島
誠 岩村
剛男 針生
Original Assignee
日本電信電話株式会社
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 日本電信電話株式会社 filed Critical 日本電信電話株式会社
Priority to US16/619,986 priority Critical patent/US11609998B2/en
Priority to JP2019525199A priority patent/JP6734479B2/ja
Publication of WO2018230194A1 publication Critical patent/WO2018230194A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/74Reverse engineering; Extracting design information from source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Definitions

  • the present invention relates to a specific support device, a specific support method, and a specific support program.
  • Non-Patent Document 1 a technique for performing analysis using a binary comparison tool that finds and compares similar functions between executable files is known (for example, see Non-Patent Document 1). Also, a technique called DarunGrim that supports analysis by scoring a point called SIS (Security Implication Score) based on the features of the vulnerability correction part, focusing on the part that increased in the corrected function at the time of patch difference (For example, see Non-Patent Document 2).
  • SIS Security Implication Score
  • the conventional technology has a problem that it may not be possible to analyze software vulnerabilities if the knowledge and experience of the analyst are insufficient. For example, even if one location of the source code is modified, there are cases where a plurality of locations in the executable file have changed before and after modification due to differences in the compiler and link environment. In such a case, analysts are required to have deep knowledge and various experiences in order to identify the location of the vulnerability correction from the comparison result of the executable file before and after correction by the binary comparison tool. In addition, in DarunGrim, the function to be focused on and how to assign points are determined based on the experience of the analyst, so it is difficult to perform the analysis if the analyst's knowledge and experience are insufficient.
  • the vulnerability correction is performed on the executable file converted from the source code and the executable file converted from the source code after the vulnerability correction is performed on the source code.
  • a first difference extraction unit for extracting a difference between points
  • a feature calculation unit for calculating a feature of the difference extracted by the first difference extraction unit, an executable file converted from the source code, and the source code
  • a second difference extraction unit that extracts a difference between predetermined portions of the execution file converted from the source code after the correction is performed, and the predetermined portion calculated by the second difference extraction unit.
  • a similarity calculation unit that calculates a similarity between the difference and the difference feature of the portion where the vulnerability correction is performed, which is calculated by the feature calculation unit.
  • FIG. 1 is a diagram illustrating an example of a configuration of a specific support apparatus according to the first embodiment.
  • FIG. 2 is a diagram for explaining identification of a correction portion by the identification support device according to the first embodiment.
  • FIG. 3 is a diagram for explaining function identification by the identification support device according to the first embodiment.
  • FIG. 4 is a diagram illustrating an example of a program code.
  • FIG. 5 is a diagram for explaining extraction of a difference by the specific support apparatus according to the first embodiment.
  • FIG. 6 is a diagram illustrating an example of an instruction normalization rule.
  • FIG. 7 is a diagram illustrating an example of a vulnerability correction location candidate.
  • FIG. 8 is a flowchart showing the flow of processing of the identification support device according to the first embodiment.
  • FIG. 8 is a flowchart showing the flow of processing of the identification support device according to the first embodiment.
  • FIG. 9 is a flowchart showing a flow of processing of the identification support device according to the first embodiment.
  • FIG. 10 is a flowchart illustrating a process flow of the identification support device according to the first embodiment.
  • FIG. 11 is a diagram illustrating an example of a computer that executes a specific support program.
  • FIG. 1 is a diagram illustrating an example of a configuration of a specific support apparatus according to the first embodiment.
  • the identification support device 10 includes a learning unit 100 and a candidate calculation unit 200.
  • the learning unit 100 learns vulnerability correction characteristics and correction characteristics other than vulnerability correction.
  • the candidate calculation unit 200 calculates a corrected part where the vulnerability is corrected among the corrected parts of the software based on the features learned by the learning unit 100.
  • a vulnerability is a bug (fault) existing in software that can be exploited by a third party.
  • Vulnerable software can be used for malware infection and the like, and can cause great damage to users.
  • Vulnerabilities are corrected immediately by each software vendor as soon as they are discovered or reported to minimize damage. Further, the information on the corrected vulnerability is disclosed on a vulnerability database (Common Vulnerabilities and Exposures), software vendor websites, and the like. At this time, the information to be disclosed varies widely, such as the type and severity of the vulnerability, but there is almost no specific information such as the corrected part of the vulnerability in the software.
  • the learning unit 100 includes a source code 21 before and after correction, which is source code before and after vulnerability correction, and a source code before correction which is source code before and after correction other than vulnerability correction. 31 and the modified source code 32 are input.
  • the candidate calculation unit 200 also receives a pre-correction execution file 41 and a post-correction execution file 42 which are execution files before and after a predetermined correction is performed.
  • the identification support apparatus 10 according to the present embodiment supports the identification of the portion where the vulnerability has been corrected among the corrected portions of the corrected execution file 42.
  • source code is a description of a series of instructions for a computer using a programming language.
  • An executable file is a source code converted into a format that can be understood and executed by a computer using a compiler.
  • a compiler is software that converts source code written in a high-level language into a computer-executable format. Compiling is a conversion process performed by a compiler.
  • the learning unit 100 includes a correction location specifying unit 101, a conversion unit 102, a difference extraction unit 103, and a feature calculation unit 104. Further, the learning unit 100 calculates a difference feature 120 before and after vulnerability correction and a difference feature 130 before and after correction other than vulnerability correction. Hereinafter, a process in which the learning unit 100 calculates the difference feature 120 using the uncorrected source code 21 and the corrected source code 22 will be described. Through the same processing, the learning unit 100 can calculate the difference feature 130 using the uncorrected source code 31 and the corrected source code 32.
  • the correction location specifying unit 101 compares the source code 21 before correction and the source code 22 after correction, and specifies a portion where a difference has occurred.
  • FIG. 2 is a diagram for explaining identification of a correction portion by the identification support device according to the first embodiment. As illustrated in FIG. 2, the correction location specifying unit 101 uses the diff program or the like to acquire the number of lines where the difference has occurred. In the example of FIG. 2, the corrected part specifying unit 101 specifies that five lines from the 193rd line of the corrected source code 22 are the corrected parts.
  • the corrected part specifying unit 101 specifies a function including a part where the specified difference has occurred.
  • the correction location specifying unit 101 acquires the first and last lines of each function by using source code analysis software such as ctags. For example, the correction location specifying unit 101 acquires the first line of the function, searches for the terminal symbol based on the first line, and sets the line where the terminal symbol exists as the terminal line.
  • FIG. 3 is a diagram for explaining function identification by the identification support apparatus according to the first embodiment.
  • the correction location specifying unit 101 acquires the 178th row as the leading row and the 252nd row as the end row of the BN_hex2bn function. Since the function BN_hex2bn is defined from the 178th line to the 252nd line, the corrected part specifying unit 101 specifies that the corrected part for five lines from the 193rd line is a difference part of the BN_hex2bn function. That is, the correction location specifying unit 101 specifies that the BN_hex2bn function includes a correction location.
  • the conversion unit 102 converts the source code and the execution file into a predetermined format.
  • the conversion unit 102 compiles the uncorrected source code 21 and the corrected source code 22 with the same compile option using the same compiler, and further performs disassembly.
  • disassembly is a process of converting a computer-executable format into source code described in assembly language.
  • assembling is a process of converting source code described in an assembly language, which is a low-level language, into a computer-executable format.
  • the software that performs assembly is called an assembler.
  • disassembler software that performs disassembly is called disassembler.
  • a program obtained as a result of disassembly is expressed as a program code.
  • FIG. 4 is a diagram showing an example of the program code.
  • FIG. 4 shows a program code obtained by the disassembly unit 102 performing disassembly on the BN_hex2bn function. As shown in FIG. 4, in the program code, each instruction is described as a machine language instruction.
  • the conversion unit 102 can use a known disassembly method.
  • a known disassembly method a method using a linear sweep method or a recursive traversal method (reference 1: B. Schwarz, S. K. Debray, and G. R. Andrews. Disassembly of executable code revisited. In Proc. IEEE 2002 Working Conference on Reverse Engineering (WCRE), October 2002.) and a method using a probabilistic model (Reference 2: Patent No. 5009186) are known.
  • the difference extraction unit 103 determines the location where the vulnerability has been corrected between the executable file converted from the source code and the executable file converted from the source code after the vulnerability correction has been performed on the source code. Extract the difference.
  • the difference extraction unit 103 also includes the vulnerability between the executable file converted from the source code and the executable file converted from the source code after the source code is modified for the purpose other than vulnerability countermeasures. It is possible to further extract a difference in a place where a correction other than for the sex measure is performed. At this time, in this embodiment, the difference extraction unit 103 extracts the difference between the executable files based on the program code obtained as a result of the disassembly by the conversion unit 102.
  • the difference extraction unit 103 extracts the difference before and after the correction from the program code of the function specified to include the correction part.
  • the difference extraction unit 103 can extract differences not only in function units but also in basic block units or machine language instruction units.
  • a function is a block of program code that exists in software and has a specific procedure for achieving a specific purpose.
  • a basic block is a block of program code that has one entrance and one exit and does not include a branch inside.
  • the difference extraction unit 103 can extract a difference based on at least one of a machine language instruction, a call function, and an immediate value.
  • the difference extraction unit 103 can extract the difference in the number of appearances of the predetermined information in the executable file before and after correction.
  • the difference extraction unit 103 can extract an increase and a decrease of predetermined information in the executable file before and after correction as a difference.
  • the difference extraction unit 103 extracts an increase or decrease in the number of appearances of the machine language instruction “push” before and after the correction in the correction portion of the program code as a difference.
  • the difference extraction unit 103 may extract the difference after normalizing and abstracting each element.
  • a method for extracting a difference after normalizing elements will be described with reference to FIG.
  • FIG. 5 is a diagram for explaining extraction of a difference by the specific support apparatus according to the first embodiment.
  • the difference extraction unit 103 includes a list of machine language instructions included in the corrected portion before the vulnerability correction and the machine included in the corrected portion after the vulnerability correction. From the list of word instructions, the increment of the appearing instruction set is extracted as an incremental instruction set.
  • the difference extraction unit 103 has a machine language instruction “mov” appearing once in the corrected part before the vulnerability correction, and a machine language instruction “mov” appears three times in the corrected part after the vulnerability correction. In this case, since 1 is subtracted from 3 times, the increment instruction set includes two machine language instructions “mov”.
  • the difference extraction unit 103 performs similar processing for other machine language instructions.
  • the difference extraction unit 103 normalizes the incremental instruction set.
  • the difference extraction unit 103 performs normalization by replacing machine language instructions with normalization instructions in accordance with the normalization rules shown in FIG.
  • FIG. 6 is a diagram illustrating an example of an instruction normalization rule. As shown in FIG. 6, for example, “jns”, “jle”, “jne”, “jge”, “jae”, “jmp”, “js”, “jl”, “je”, “jg”, “ The machine language instructions “ja”, “jb”, and “jbe” are all “branch” as instruction types and are replaced by “jump”. Then, as shown in (3) of FIG. 5, the difference extraction unit 103 extracts the appearance frequency for each normalized instruction in the incremented instruction set after normalization as a difference.
  • the feature calculation unit 104 calculates the difference feature extracted by the difference extraction unit 103.
  • the feature calculation unit 104 may learn the difference extracted by the difference extraction unit 103 and create a linear classifier.
  • the linear classifier created by the difference extraction unit 103 inputs the difference before and after the correction of the execution file whose correction purpose is unknown, the linear classifier outputs the similarity between the difference and the difference before and after the vulnerability correction.
  • the difference extraction unit 103 extracts not only the difference between the correction points of the vulnerability correction but also the difference between the correction points other than the vulnerability. For this reason, the feature calculation unit 104 may generate a cluster analysis algorithm that classifies the difference due to the correction into a vulnerability correction cluster and a correction cluster other than the vulnerability.
  • the candidate calculation unit 200 includes a conversion unit 201, a difference extraction unit 202, a similarity calculation unit 203, and a list generation unit 204. In addition, the candidate calculation unit 200 generates a vulnerability correction location candidate 250.
  • the conversion unit 201 converts the execution file into a predetermined format.
  • the conversion unit 201 converts the pre-correction execution file 41 and the post-correction execution file 42 into program codes by performing disassembly.
  • the conversion unit 201 performs disassembly by the same method as the conversion unit 102.
  • the difference extraction unit 202 performs the vulnerability correction of the pre-correction execution file 41 converted from the source code and the post-correction execution file 42 converted from the source code after the source code is corrected. The difference of the broken part is extracted. In this embodiment, the difference extraction unit 202 extracts the difference between the executable files based on the program code obtained as a result of the disassembly by the conversion unit 201. Note that the source code that is the source of the pre-correction execution file 41 and the post-correction execution file 42 is not necessary for the difference extraction by the difference extraction unit 202. Further, it may be unknown whether the correction performed on the pre-correction execution file 41 is a vulnerability correction.
  • the difference extraction unit 202 extracts the difference before and after the correction from the program code, similarly to the difference extraction unit 103. Similar to the difference extraction unit 103, the difference extraction unit 202 can extract a difference not only in function units but also in units of basic blocks or machine language instructions. Similarly to the difference extraction unit 103, the difference extraction unit 202 can extract a difference based on at least one of a machine language instruction, a call function, and an immediate value. Similar to the difference extraction unit 103, the difference extraction unit 202 can extract the difference in the number of appearances of the predetermined information in the executable file before and after correction. Similar to the difference extraction unit 103, the difference extraction unit 202 can extract an increase and a decrease of predetermined information in the executable file before and after correction as a difference. Further, the difference extraction unit 202 may extract the difference after normalizing and abstracting each element in the same manner as the difference extraction unit 103.
  • the similarity calculation unit 203 is similar to the difference feature of the predetermined part calculated by the difference extraction unit 202 and the difference feature of the part corrected for the vulnerability countermeasure calculated by the feature calculation unit 104. Calculate the degree.
  • the similarity calculation unit 203 has a feature of a difference of a predetermined part calculated by the difference extraction unit 202 and a part subjected to a correction other than the vulnerability countermeasure calculated by the feature calculation unit 104. The similarity is calculated.
  • the similarity calculation unit 203 inputs the difference extracted by the difference extraction unit 202 to the linear classifier created by the feature calculation unit 104, and outputs the similarity between the difference and the difference before and after vulnerability correction. You may let them.
  • the similarity calculation unit 203 uses the cluster analysis algorithm generated by the feature calculation unit 104 to calculate the difference extracted by the difference extraction unit 202 as a vulnerability correction cluster or a non-vulnerability correction cluster. You may classify into either.
  • the list generation unit 204 generates and outputs a list of similarities for each correction location calculated by the similarity calculation unit 203. For example, the list generation unit 204 generates a list of similarities for each function included in the corrected execution file 42 and outputs it as a vulnerability correction location candidate 250.
  • FIG. 7 is a diagram illustrating an example of a vulnerability correction location candidate. As shown in FIG. 7, in the vulnerability correction location candidate 250, the similarity for each function is represented as a score. For example, the similarity with the difference feature of vulnerability correction of the functionA function is 43.5. For example, the similarity with the feature of the difference in vulnerability correction of the functionD function is 5.3.
  • FIGS. 8 to 10 are flowcharts showing the flow of processing of the identification support device according to the first embodiment.
  • the learning unit 100 learns a difference feature between a correction location where vulnerability correction has been performed and a correction location where correction other than vulnerability correction has been performed (step S100).
  • the candidate calculation unit 200 calculates a candidate for a portion where the vulnerability has been corrected from the corrected execution file based on the difference feature learned by the learning unit 100 (step S200).
  • the correction location specifying unit 101 specifies a correction location from the source code (step S101).
  • the conversion unit 102 converts the source code into an execution file, and further converts the execution file into a program code (step S102).
  • the conversion unit 102 can perform conversion using, for example, a compiler and a disassembler.
  • the difference extraction unit 103 extracts the difference before and after correction from the program code (step S103). For example, the difference extraction unit 103 can extract an increase and a decrease before and after the correction of the machine language instruction as a difference.
  • the feature calculation unit 104 calculates the difference feature before and after correction extracted by the difference extraction unit 103 (step S104). For example, the feature calculation unit 104 may create a linear classifier based on the difference feature.
  • the step S200 in FIG. 8 will be described in detail with reference to FIG.
  • the conversion unit 201 converts the executable file before and after the correction into a program code (step S201).
  • the difference extraction unit 202 extracts the difference before and after correction from the program code (step S202).
  • the similarity calculation unit 203 calculates the similarity between the difference before and after correction extracted by the difference extraction unit 202 and the feature learned by the learning unit 100 (step S203). For example, the similarity calculation unit 203 may calculate the similarity using the linear classifier created by the feature calculation unit 104.
  • the list generation unit 204 generates a list of vulnerability correction location candidates (step S204).
  • the difference extraction unit 103 determines the location where the vulnerability has been corrected between the executable file converted from the source code and the executable file converted from the source code after the vulnerability correction has been performed on the source code. Extract the difference.
  • the feature calculation unit 104 calculates the feature of the difference extracted by the difference extraction unit 103.
  • the difference extraction unit 202 extracts a difference in a predetermined portion between the execution file converted from the source code and the execution file converted from the source code after the source code is corrected.
  • the similarity calculation unit 203 calculates the similarity between the difference of the predetermined part calculated by the difference extraction unit 202 and the difference feature of the part subjected to vulnerability correction calculated by the feature calculation unit 104. To do.
  • the analyst only needs to input the execution file before and after the correction to the identification support device 10, and the processing related to the specification of the candidate for the vulnerability correction portion is automatically performed by the identification support device 10. For this reason, according to this embodiment, even if it is a case where an analyst's knowledge and experience are insufficient, a software analysis can be performed.
  • the difference extraction unit 103 and the difference extraction unit 202 can extract a difference in any one of a function unit, a basic block unit, and a machine language instruction unit.
  • the difference extraction unit 103 and the difference extraction unit 202 can extract a difference based on at least one of a machine language instruction, a call function, and an immediate value.
  • the difference extraction unit 103 and the difference extraction unit 202 can extract the difference in the number of appearances of predetermined information in the executable file before and after the correction. Thereby, even if it is a case where an analyst's knowledge and experience are insufficient, the specific assistance apparatus 10 can analyze based on the predetermined reference
  • the difference extraction unit 103 and the difference extraction unit 202 can extract an increase and a decrease in predetermined information in the executable file before and after correction as a difference. By extracting not only the increase but also the decrease as a difference in this way, it becomes possible to specify the corrected part of the vulnerability that could not be specified only by the increase.
  • the difference extraction unit 103 corrects the execution file converted from the source code and the execution file converted from the source code after the correction other than the vulnerability correction is performed on the source code, other than the vulnerability correction. It is possible to further extract the difference between the places where the operation is performed.
  • the similarity calculation unit 203 calculates the difference between the predetermined part calculated by the difference extraction unit 202 and the difference feature of the part subjected to correction other than the vulnerability correction calculated by the feature calculation unit 104. Calculate similarity. In this way, by calculating the similarity with not only the vulnerability correction but also the correction other than the vulnerability, the vulnerability correction candidate can be identified with higher accuracy.
  • each component of each illustrated device is functionally conceptual and does not necessarily need to be physically configured as illustrated.
  • the specific form of distribution / integration of each device is not limited to the one shown in the figure, and all or a part of the distribution / integration is functionally or physically distributed in arbitrary units according to various loads or usage conditions. Can be integrated and configured. Further, all or any part of each processing function performed in each device is realized by a CPU (Central Processing Unit) and a program analyzed and executed by the CPU, or hardware by wired logic Can be realized as
  • CPU Central Processing Unit
  • the identification support apparatus 10 can be implemented by installing a specific support program that executes the above-described vulnerability correction location identification support as package software or online software on a desired computer.
  • the information processing apparatus can function as the specific support apparatus 10 by causing the information processing apparatus to execute the specific support program.
  • the information processing apparatus referred to here includes a desktop or notebook personal computer.
  • the information processing apparatus includes mobile communication terminals such as smartphones, mobile phones and PHS (Personal Handyphone System), and slate terminals such as PDA (Personal Digital Assistant).
  • the specific support apparatus 10 can be implemented as a specific support server apparatus that uses a terminal device used by a user as a client and provides the client with a service related to the above-described vulnerability correction location specific support.
  • the specific support server device is implemented as a server device that provides a specific support service that receives an executable file before and after correction and outputs a candidate for a vulnerability correction portion.
  • the specific support server device may be implemented as a Web server, or may be implemented as a cloud that provides services related to the above-described vulnerability correction location support by outsourcing.
  • FIG. 11 is a diagram illustrating an example of a computer that executes a specific support program.
  • the computer 1000 includes a memory 1010 and a CPU 1020, for example.
  • the computer 1000 also includes 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.
  • the memory 1010 includes a ROM (Read Only Memory) 1011 and a RAM (Random Access Memory) 1012.
  • the ROM 1011 stores a boot program such as BIOS (Basic Input Output System).
  • 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.
  • the serial port interface 1050 is connected to a mouse 1110 and a keyboard 1120, for example.
  • the video adapter 1060 is connected to the display 1130, for example.
  • the hard disk drive 1090 stores, for example, an OS 1091, an application program 1092, a program module 1093, and program data 1094. That is, a program that defines each process of the specific support apparatus 10 is implemented as a program module 1093 in which a code executable by a computer is described.
  • the program module 1093 is stored in the hard disk drive 1090, for example.
  • a program module 1093 for executing processing similar to the functional configuration in the specific support apparatus 10 is stored in the hard disk drive 1090.
  • the hard disk drive 1090 may be replaced by an SSD (Solid State Drive).
  • the setting data used in the processing of the above-described embodiment is stored as program data 1094 in, for example, the memory 1010 or the hard disk drive 1090. Then, the CPU 1020 reads the program module 1093 and the program data 1094 stored in the memory 1010 and the hard disk drive 1090 to the RAM 1012 and executes them as necessary.
  • the program module 1093 and the program data 1094 are not limited to being stored in the hard disk drive 1090, but may be stored in, for example, a removable storage medium and read by the CPU 1020 via the disk drive 1100 or the like. Alternatively, the program module 1093 and the program data 1094 may be stored in another computer connected via a network (LAN (Local Area Network), WAN (Wide Area Network), etc.). Then, the program module 1093 and the program data 1094 may be read by the CPU 1020 from another computer via the network interface 1070.
  • LAN Local Area Network
  • WAN Wide Area Network

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Stored Programmes (AREA)

Abstract

差分抽出部(103)は、ソースコードから変換された実行ファイルと、当該ソースコードに脆弱性修正が行われた後のソースコードから変換された実行ファイルと、の当該脆弱性修正が行われた箇所の差分を抽出する。また、特徴算出部(104)は、差分抽出部(103)によって抽出された差分の特徴を算出する。また、差分抽出部(202)は、ソースコードから変換された実行ファイルと、当該ソースコードに修正が行われた後のソースコードから変換された実行ファイルと、の所定の箇所の差分を抽出する。また、類似度算出部(203)は、差分抽出部(202)によって算出された所定の箇所の差分の、特徴算出部(104)によって算出された脆弱性修正が行われた箇所の差分の特徴との類似度を算出する。

Description

特定支援装置、特定支援方法及び特定支援プログラム
 本発明は、特定支援装置、特定支援方法及び特定支援プログラムに関する。
 ソフトウェアの脆弱性は、マルウェア感染等に利用され、ユーザに大きな被害をもたらす可能性があることから、発見又は報告され次第、各ソフトウェアベンダによってただちに修正される。また、実行ファイルの配布等により脆弱性の対策は可能であることから、修正された脆弱性の箇所の情報が公開されることはほとんどない。一方で、修正された脆弱性の箇所に関する情報は、セキュリティ製品の開発者等にとっては重要な情報となる。
 そこで、従来、実行ファイル間の類似関数の発見及び比較を行うバイナリ比較ツールを用いて解析を行う技術が知られている(例えば、非特許文献1を参照)。また、パッチ差分時に、修正後の関数で増加した部分に着目し、脆弱性修正箇所の特徴に基づいて、SIS(Security Implication Score)と呼ばれる点数付けを行い、解析を支援するDarunGrimという技術が提案されている(例えば、非特許文献2を参照)。
H. Flake, "Structural comparison of executable objects," in DIMVA, 2004, pp. 161-173. ExploitSpotting: Locating Vulnerabilities Out Of Vendor Patches Automatically, Black Hat USA 2010, Las Vegas, USA. Jeongwook "Matt" Oh
 しかしながら、従来の技術には、解析者の知見や経験が不足している場合、ソフトウェアの脆弱性の解析を行うことができない場合があるという問題があった。例えば、ソースコードのある1箇所が修正された場合であっても、コンパイラやリンク環境の違いから、実行ファイルでは複数の箇所が修正前後で変化している場合がある。このような場合、バイナリ比較ツールによる修正前後の実行ファイルの比較結果から脆弱性の修正箇所を特定するには、解析者に深い知識や多様な経験が要求される。また、DarunGrimでは、着目する関数や点数の付け方は、解析者の経験に基づいて決定されるため、解析者の知見や経験が不足している場合、解析を行うことは困難である。
 本発明の特定支援装置は、ソースコードから変換された実行ファイルと、当該ソースコードに脆弱性修正が行われた後のソースコードから変換された実行ファイルと、の当該脆弱性修正が行われた箇所の差分を抽出する第1の差分抽出部と、前記第1の差分抽出部によって抽出された差分の特徴を算出する特徴算出部と、ソースコードから変換された実行ファイルと、当該ソースコードに修正が行われた後のソースコードから変換された実行ファイルと、の所定の箇所の差分を抽出する第2の差分抽出部と、前記第2の差分抽出部によって算出された前記所定の箇所の差分の、前記特徴算出部によって算出された前記脆弱性修正が行われた箇所の差分の特徴との類似度を算出する類似度算出部と、を有することを特徴とする。
 本発明によれば、解析者の知見や経験が不足している場合であっても、ソフトウェアの脆弱性の解析を行うことができる。
図1は、第1の実施形態に係る特定支援装置の構成の一例を示す図である。 図2は、第1の実施形態に係る特定支援装置による修正箇所の特定について説明するための図である。 図3は、第1の実施形態に係る特定支援装置による関数の特定について説明するための図である。 図4は、プログラムコードの一例を示す図である。 図5は、第1の実施形態に係る特定支援装置による差分の抽出について説明するための図である。 図6は、命令の正規化規則の一例を示す図である。 図7は、脆弱性修正箇所候補の一例を示す図である。 図8は、第1の実施形態に係る特定支援装置の処理の流れを示すフローチャートである。 図9は、第1の実施形態に係る特定支援装置の処理の流れを示すフローチャートである。 図10は、第1の実施形態に係る特定支援装置の処理の流れを示すフローチャートである。 図11は、特定支援プログラムを実行するコンピュータの一例を示す図である。
 以下に、本願に係る特定支援装置、特定支援方法及び特定支援プログラムの実施形態を図面に基づいて詳細に説明する。なお、本発明は、以下に説明する実施形態により限定されるものではない。
[第1の実施形態の構成]
 まず、図1を用いて、第1の実施形態に係る特定支援装置の構成について説明する。図1は、第1の実施形態に係る特定支援装置の構成の一例を示す図である。図1に示すように、特定支援装置10は、学習部100及び候補算出部200を有する。
 学習部100は、脆弱性修正の特徴と、脆弱性修正以外の修正の特徴と、を学習する。また、候補算出部200は、学習部100によって学習された特徴に基づき、ソフトウェアの修正箇所のうち、脆弱性修正が行われた修正箇所を算出する。
 ここで、脆弱性とは、ソフトウェアに存在するバグ(不具合)のうち、第三者によって悪用可能なものである。脆弱性を有するソフトウェアは、マルウェアの感染等に悪用されることで、ユーザに大きな被害をもたらすことがある。脆弱性は、被害を最小限にするため、発見又は報告され次第、各ソフトウェアベンダによってただちに修正される。また、修正された脆弱性の情報は、脆弱性データベース(共通脆弱性識別子、CVE:Common Vulnerabilities and Exposures)や、ソフトウェアベンダのWebサイト等で公表される。このとき、公表される情報は、脆弱性の種類や深刻度等多岐にわたるが、ソフトウェアにおける脆弱性の修正箇所等の具体的な情報が掲載されることはほとんどない。
 学習部100には、脆弱性修正が行われる前後のソースコードである修正前ソースコード21及び修正後ソースコード22と、脆弱性修正以外の修正が行われる前後のソースコードである修正前ソースコード31及び修正後ソースコード32と、が入力される。また、候補算出部200には、所定の修正が行われた前後の実行ファイルである修正前実行ファイル41及び修正後実行ファイル42が入力される。本実施形態の特定支援装置10は、修正後実行ファイル42の修正箇所のうち、脆弱性修正が行われた箇所の特定を支援するものである。
 ここで、ソースコードとは、コンピュータに対する一連の指示を、プログラミング言語を用いて記述したものである。また、実行ファイルとは、ソースコードを、コンピュータが理解及び実行ができる形式にコンパイラを用いて変換したものである。また、コンパイラとは、高級言語で記述されたソースコードを、コンピュータで実行可能な形式に変換するソフトウェアである。また、コンパイルとは、コンパイラによって行われる変換処理である。
[学習部の構成]
 図1に示すように、学習部100は、修正箇所特定部101、変換部102、差分抽出部103及び特徴算出部104を有する。また、学習部100は、脆弱性修正の前後の差分の特徴120、及び、脆弱性修正以外の修正の前後の差分の特徴130を算出する。以下では、学習部100が、修正前ソースコード21及び修正後ソースコード22を用いて、差分の特徴120を算出する処理について説明する。同様の処理により、学習部100は、修正前ソースコード31及び修正後ソースコード32を用いて、差分の特徴130を算出することができる。
 修正箇所特定部101は、修正前ソースコード21と修正後ソースコード22とを比較し、差分が発生している部分を特定する。図2は、第1の実施形態に係る特定支援装置による修正箇所の特定について説明するための図である。図2に示すように、修正箇所特定部101は、diffプログラム等を利用して差分が発生している箇所の行数を取得する。図2の例では、修正箇所特定部101は、修正後ソースコード22の193行目から5行分が修正箇所であることを特定している。
 そして、修正箇所特定部101は、特定した差分が発生している部分を含む関数を特定する。修正箇所特定部101は、ctags等のソースコード解析ソフトウェアを用いること等により、各関数の先頭及び終端の行を取得する。例えば、修正箇所特定部101は、関数の先頭行を取得し、先頭行を基に終端記号を探索し、終端記号が存在していた行を終端行とする。
 図3は、第1の実施形態に係る特定支援装置による関数の特定について説明するための図である。まず、図3に示すように、修正箇所特定部101は、BN_hex2bn関数の先端行として178行目を取得し、終端行として252行目を取得する。修正箇所特定部101は、関数BN_hex2bnが178行目から252行目にかけて定義されていることから、193行目から5行分の修正箇所が、BN_hex2bn関数の差分箇所であったことを特定する。つまり、修正箇所特定部101は、BN_hex2bn関数が修正箇所を含んでいることを特定する。
 変換部102は、ソースコード及び実行ファイルを所定の形式に変換する。変換部102は、修正前ソースコード21と修正後ソースコード22とを、同じコンパイラを用いて同じコンパイルオプションでコンパイルした後、さらに逆アセンブルを行う。
 ここで、逆アセンブルとは、コンピュータで実行可能な形式からアセンブリ言語で記述されたソースコードに変換する処理である。一方、アセンブルとは、低級言語であるアセンブリ言語で記述されたソースコードをコンピュータで実行可能な形式に変換する処理である。また、アセンブルを行うソフトウェアをアセンブラという。同様に、逆アセンブルを行うソフトウェアを逆アセンブラという。また、以降の説明では、逆アセンブルの結果得られたプログラムの事をプログラムコードと表記する。
 図4は、プログラムコードの一例を示す図である。図4は、変換部102がBN_hex2bn関数に対して逆アセンブルを行うことによって得られたプログラムコードである。図4に示すように、プログラムコードにおいては、各命令が機械語命令として記載されている。
 変換部102は、既知の逆アセンブル手法を用いることができる。既知の逆アセンブル手法としては、リニア・スイープ法やリカーシブ・トラバーサル法を利用した手法(参考文献1:B. Schwarz, S. K. Debray, and G. R. Andrews. Disassembly of executable code revisited. In Proc. IEEE 2002 Working Conference on Reverse Engineering (WCRE), October 2002.)や、確率モデルを利用した手法(参考文献2:特許第5009186号公報)が知られている。
 差分抽出部103は、ソースコードから変換された実行ファイルと、当該ソースコードに脆弱性修正が行われた後のソースコードから変換された実行ファイルと、の当該脆弱性修正が行われた箇所の差分を抽出する。また、差分抽出部103は、ソースコードから変換された実行ファイルと、当該ソースコードに脆弱性対策以外を目的とする修正が行われた後のソースコードから変換された実行ファイルと、の当該脆弱性対策以外を目的とする修正が行われた箇所の差分をさらに抽出することができる。このとき、本実施形態では、差分抽出部103は、実行ファイルの差分を、変換部102による逆アセンブルの結果得られたプログラムコードを基に抽出する。
 差分抽出部103は、修正箇所を含んでいることが特定された関数のプログラムコードから、修正前後の差分を抽出する。差分抽出部103は、関数単位だけでなく、基本ブロック単位、機械語命令単位のいずれかの単位で差分を抽出することができる。なお、関数とは、ソフトウェア中に存在する、ある特定の目的を果たすための特定の手順のプログラムコードの塊である。一方、基本ブロックとは、1つの入り口と1つの出口を持ち、内部に分岐を含まないプログラムコードの塊である。
 また、差分抽出部103は、機械語命令、呼出し関数、即値のうちの少なくともいずれかに基づいて差分を抽出することができる。差分抽出部103は、修正前後の実行ファイルにおける、所定の情報の出現回数の差分を抽出することができる。差分抽出部103は、修正前後の実行ファイルにおける、所定の情報の増加分及び減少分を差分として抽出することができる。例えば、差分抽出部103は、プログラムコードの修正箇所において、修正の前後で「push」という機械語命令の出現回数の増加分、又は減少分を差分として抽出する。
 また、差分抽出部103は、各要素を正規化し抽象化したうえで差分を抽出してもよい。図5を用いて、要素を正規化したうえで差分を抽出する方法について説明する。図5は、第1の実施形態に係る特定支援装置による差分の抽出について説明するための図である。まず、図5の(1)に示すように、差分抽出部103は、脆弱性修正前の修正箇所に含まれていた機械語命令の一覧と脆弱性修正後の修正箇所に含まれていた機械語命令の一覧とから、出現命令集合の増分を増分命令集合として抽出する。差分抽出部103は、例えば、脆弱性修正前の修正箇所に「mov」という機械語命令が1回出現し、脆弱性修正後の修正箇所に「mov」という機械語命令が3回出現している場合、3回から1回を引くと2なので、増分命令集合には、「mov」という機械語命令を2個含める。差分抽出部103は、他の機械語命令についても同様の処理を行う。
 そして、図5の(2)に示すように、差分抽出部103は、増分命令集合を正規化する。ここで、差分抽出部103は、図6に示す正規化規則に従って機械語命令を正規化命令に置き換えることで正規化を行う。図6は、命令の正規化規則の一例を示す図である。図6に示すように、例えば、「jns」、「jle」、「jne」、「jge」、「jae」、「jmp」、「js」、「jl」、「je」、「jg」、「ja」、「jb」、「jbe」という機械語命令は、いずれも命令の種類としては「分岐」であり、「jump」に置き換えられる。そして、図5の(3)に示すように、差分抽出部103は、正規化後の増分命令集合における、正規化命令ごとの出現頻度を差分として抽出する。
 特徴算出部104は、差分抽出部103によって抽出された差分の特徴を算出する。特徴算出部104は、例えば、差分抽出部103によって抽出された差分を学習し、線形分類器を作成してもよい。例えば、差分抽出部103によって作成される線形分類器は、修正目的が未知の実行ファイルの修正前後の差分を入力すると、当該差分と脆弱性修正前後の差分との類似度を出力する。
 前述の通り、差分抽出部103は、脆弱性修正の修正箇所の差分だけでなく、脆弱性以外の修正箇所の差分を抽出する。そのため、特徴算出部104は、修正による差分を、脆弱性修正のクラスタと、脆弱性以外の修正のクラスタとに分類するクラスタ分析のアルゴリズムを生成してもよい。
[候補算出部の構成]
 図1に示すように、候補算出部200は、変換部201、差分抽出部202、類似度算出部203及び一覧生成部204を有する。また、候補算出部200は、脆弱性修正箇所候補250を生成する。
 変換部201は、実行ファイルを所定の形式に変換する。変換部201は、修正前実行ファイル41及び修正後実行ファイル42を、逆アセンブルを行うことによりプログラムコードに変換する。変換部201は、変換部102と同様の手法により逆アセンブルを行う。
 差分抽出部202は、ソースコードから変換された修正前実行ファイル41と、当該ソースコードに修正が行われた後のソースコードから変換された修正後実行ファイル42と、の当該脆弱性修正が行われた箇所の差分を抽出する。本実施形態では、差分抽出部202は、実行ファイルの差分を、変換部201による逆アセンブルの結果得られたプログラムコードを基に抽出する。なお、差分抽出部202による差分の抽出には、修正前実行ファイル41及び修正後実行ファイル42の元となったソースコードは不要である。また、修正前実行ファイル41に対して行われた修正が脆弱性修正であるか否かは未知であってよい。
 差分抽出部202は、差分抽出部103と同様に、プログラムコードから修正前後の差分を抽出する。差分抽出部202は、差分抽出部103と同様に、関数単位だけでなく、基本ブロック単位、機械語命令単位のいずれかの単位で差分を抽出することができる。また、差分抽出部202は、差分抽出部103と同様に、機械語命令、呼出し関数、即値のうちの少なくともいずれかに基づいて差分を抽出することができる。差分抽出部202は、差分抽出部103と同様に、修正前後の実行ファイルにおける、所定の情報の出現回数の差分を抽出することができる。差分抽出部202は、差分抽出部103と同様に、修正前後の実行ファイルにおける、所定の情報の増加分及び減少分を差分として抽出することができる。また、差分抽出部202は、差分抽出部103と同様に、各要素を正規化し抽象化したうえで差分を抽出してもよい。
 類似度算出部203は、差分抽出部202によって算出された所定の箇所の差分の、特徴算出部104によって算出された脆弱性対策を目的とする修正が行われた箇所の差分の特徴との類似度を算出する。また、類似度算出部203は、差分抽出部202によって算出された所定の箇所の差分の、特徴算出部104によって算出された脆弱性対策以外を目的とする修正が行われた箇所の差分の特徴との類似度を算出する。
 例えば、類似度算出部203は、特徴算出部104によって作成された線形分類器に、差分抽出部202によって抽出された差分を入力し、当該差分と脆弱性修正前後の差分との類似度を出力させてもよい。また、類似度算出部203は、特徴算出部104によって生成されたクラスタ分析のアルゴリズムを用いて、差分抽出部202によって抽出された差分を、脆弱性修正のクラスタ又は脆弱性以外の修正のクラスタのいずれかに分類してもよい。
 一覧生成部204は、類似度算出部203によって算出された修正箇所ごとの類似度の一覧を生成し出力する。例えば、一覧生成部204は、修正後実行ファイル42に含まれる関数ごとの類似度の一覧を生成し、脆弱性修正箇所候補250として出力する。図7は、脆弱性修正箇所候補の一例を示す図である。図7に示すように、脆弱性修正箇所候補250では、関数ごとの類似度が点数として表される。例えば、functionA関数の脆弱性修正の差分の特徴との類似度は43.5である。また、例えば、functionD関数の脆弱性修正の差分の特徴との類似度は5.3である。
[第1の実施形態の処理]
 図8~10を用いて、特定支援装置10の処理の流れについて説明する。図8~10は、第1の実施形態に係る特定支援装置の処理の流れを示すフローチャートである。図8に示すように、学習部100は、脆弱性修正が行われた修正箇所、及び脆弱性修正以外の修正が行われた修正箇所の差分の特徴を学習する(ステップS100)。次に、候補算出部200は、学習部100によって学習された差分の特徴を基に、修正が行われた実行ファイルから、脆弱性修正が行われた箇所の候補を算出する(ステップS200)。
 図9を用いて、図8のステップS100について詳細に説明する。図9に示すように、修正箇所特定部101は、ソースコードから修正箇所を特定する(ステップS101)。変換部102は、ソースコードを実行ファイルに変換し、さらに実行ファイルをプログラムコードに変換する(ステップS102)。変換部102は、例えば、コンパイラ及び逆アセンブラを用いて変換を行うことができる。差分抽出部103は、プログラムコードから修正前後の差分を抽出する(ステップS103)。差分抽出部103は、例えば、機械語命令の修正前後における増加分及び減少分を差分として抽出することができる。また、特徴算出部104は、差分抽出部103が抽出した修正前後の差分の特徴を算出する(ステップS104)。例えば、特徴算出部104は、差分の特徴を基に線形分類器を作成してもよい。
 図10を用いて、図8のステップS200について詳細に説明する。変換部201は、修正前後の実行ファイルをプログラムコードに変換する(ステップS201)。差分抽出部202は、プログラムコードから修正前後の差分を抽出する(ステップS202)。類似度算出部203は、差分抽出部202が抽出した修正前後の差分と、学習部100によって学習済みの特徴との類似度を算出する(ステップS203)。例えば、類似度算出部203は、特徴算出部104によって作成された線形分類器を用いて類似度を算出してもよい。一覧生成部204は、脆弱性修正箇所候補の一覧を生成する(ステップS204)。
[第1の実施形態の効果]
 差分抽出部103は、ソースコードから変換された実行ファイルと、当該ソースコードに脆弱性修正が行われた後のソースコードから変換された実行ファイルと、の当該脆弱性修正が行われた箇所の差分を抽出する。また、特徴算出部104は、差分抽出部103によって抽出された差分の特徴を算出する。また、差分抽出部202は、ソースコードから変換された実行ファイルと、当該ソースコードに修正が行われた後のソースコードから変換された実行ファイルと、の所定の箇所の差分を抽出する。また、類似度算出部203は、差分抽出部202によって算出された所定の箇所の差分の、特徴算出部104によって算出された脆弱性修正が行われた箇所の差分の特徴との類似度を算出する。本実施形態によれば、解析者は修正前後の実行ファイルを特定支援装置10入力するだけでよく、脆弱性修正箇所の候補の特定に関する処理は、特定支援装置10によって自動的に行われる。このため、本実施形態によれば、解析者の知見や経験が不足している場合であっても、ソフトウェアの解析を行うことができる。
 差分抽出部103及び差分抽出部202は、関数単位、基本ブロック単位、機械語命令単位のいずれかの単位で差分を抽出することができる。また、差分抽出部103及び差分抽出部202は、機械語命令、呼出し関数、即値のうちの少なくともいずれかに基づいて差分を抽出することができる。差分抽出部103及び差分抽出部202は、修正前後の実行ファイルにおける、所定の情報の出現回数の差分を抽出することができる。これにより、解析者の知見や経験が不足している場合であっても、特定支援装置10はあらかじめ定められた基準に基づいて解析を行うことができる。
 差分抽出部103及び差分抽出部202は、修正前後の実行ファイルにおける、所定の情報の増加分及び減少分を差分として抽出することができる。このように増加分だけでなく減少分を差分として抽出することで、増加分だけでは特定することができなかった脆弱性の修正箇所を特定することが可能となる。
 差分抽出部103は、ソースコードから変換された実行ファイルと、当該ソースコードに脆弱性修正以外の修正が行われた後のソースコードから変換された実行ファイルと、の当該脆弱性修正以外の修正が行われた箇所の差分をさらに抽出することができる。このとき、類似度算出部203は、差分抽出部202によって算出された所定の箇所の差分の、特徴算出部104によって算出された脆弱性修正以外の修正が行われた箇所の差分の特徴との類似度を算出する。このように、脆弱性修正だけでなく、脆弱性以外の修正との類似度を計算することで、脆弱性修正の候補をより高い精度で特定できる。
[システム構成等]
 また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示のように構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。さらに、各装置にて行われる各処理機能は、その全部又は任意の一部が、CPU(Central Processing Unit)及び当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
 また、本実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
[プログラム]
 一実施形態として、特定支援装置10は、パッケージソフトウェアやオンラインソフトウェアとして上記の脆弱性修正箇所の特定支援を実行する特定支援プログラムを所望のコンピュータにインストールさせることによって実装できる。例えば、上記の特定支援プログラムを情報処理装置に実行させることにより、情報処理装置を特定支援装置10として機能させることができる。ここで言う情報処理装置には、デスクトップ型又はノート型のパーソナルコンピュータが含まれる。また、その他にも、情報処理装置にはスマートフォン、携帯電話機やPHS(Personal Handyphone System)等の移動体通信端末、さらには、PDA(Personal Digital Assistant)等のスレート端末等がその範疇に含まれる。
 また、特定支援装置10は、ユーザが使用する端末装置をクライアントとし、当該クライアントに上記の脆弱性修正箇所の特定支援に関するサービスを提供する特定支援サーバ装置として実装することもできる。例えば、特定支援サーバ装置は、修正前後の実行ファイルを入力とし、脆弱性修正箇所の候補を出力とする特定支援サービスを提供するサーバ装置として実装される。この場合、特定支援サーバ装置は、Webサーバとして実装することとしてもよいし、アウトソーシングによって上記の脆弱性修正箇所の特定支援に関するサービスを提供するクラウドとして実装することとしてもかまわない。
 図11は、特定支援プログラムを実行するコンピュータの一例を示す図である。コンピュータ1000は、例えば、メモリ1010、CPU1020を有する。また、コンピュータ1000は、ハードディスクドライブインタフェース1030、ディスクドライブインタフェース1040、シリアルポートインタフェース1050、ビデオアダプタ1060、ネットワークインタフェース1070を有する。これらの各部は、バス1080によって接続される。
 メモリ1010は、ROM(Read Only Memory)1011及びRAM(Random Access Memory)1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1090に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1100に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ1100に挿入される。シリアルポートインタフェース1050は、例えばマウス1110、キーボード1120に接続される。ビデオアダプタ1060は、例えばディスプレイ1130に接続される。
 ハードディスクドライブ1090は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093、プログラムデータ1094を記憶する。すなわち、特定支援装置10の各処理を規定するプログラムは、コンピュータにより実行可能なコードが記述されたプログラムモジュール1093として実装される。プログラムモジュール1093は、例えばハードディスクドライブ1090に記憶される。例えば、特定支援装置10における機能構成と同様の処理を実行するためのプログラムモジュール1093が、ハードディスクドライブ1090に記憶される。なお、ハードディスクドライブ1090は、SSD(Solid State Drive)により代替されてもよい。
 また、上述した実施形態の処理で用いられる設定データは、プログラムデータ1094として、例えばメモリ1010やハードディスクドライブ1090に記憶される。そして、CPU1020が、メモリ1010やハードディスクドライブ1090に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出して実行する。
 なお、プログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1090に記憶される場合に限らず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ1100等を介してCPU1020によって読み出されてもよい。あるいは、プログラムモジュール1093及びプログラムデータ1094は、ネットワーク(LAN(Local Area Network)、WAN(Wide Area Network)等)を介して接続された他のコンピュータに記憶されてもよい。そして、プログラムモジュール1093及びプログラムデータ1094は、他のコンピュータから、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
 10 特定支援装置
 21、31 修正前ソースコード
 22、32 修正後ソースコード
 41 修正前実行ファイル
 42 修正後実行ファイル
 100 学習部
 101 修正箇所特定部
 102、201 変換部
 103、202 差分抽出部
 104 特徴算出部
 120、130 差分の特徴
 200 候補算出部
 203 類似度算出部
 204 一覧生成部
 250 脆弱性修正箇所候補

Claims (8)

  1.  ソースコードから変換された実行ファイルと、当該ソースコードに脆弱性修正が行われた後のソースコードから変換された実行ファイルと、の当該脆弱性修正が行われた箇所の差分を抽出する第1の差分抽出部と、
     前記第1の差分抽出部によって抽出された差分の特徴を算出する特徴算出部と、
     ソースコードから変換された実行ファイルと、当該ソースコードに修正が行われた後のソースコードから変換された実行ファイルと、の所定の箇所の差分を抽出する第2の差分抽出部と、
     前記第2の差分抽出部によって算出された前記所定の箇所の差分の、前記特徴算出部によって算出された前記脆弱性修正が行われた箇所の差分の特徴との類似度を算出する類似度算出部と、
     を有することを特徴とする特定支援装置。
  2.  前記第1の差分抽出部及び前記第2の差分抽出部は、関数単位、基本ブロック単位、機械語命令単位のいずれかの単位で差分を抽出することを特徴とする請求項1に記載の特定支援装置。
  3.  前記第1の差分抽出部及び前記第2の差分抽出部は、機械語命令、呼出し関数、即値のうちの少なくともいずれかに基づいて差分を抽出することを特徴とする請求項1又は2に記載の特定支援装置。
  4.  前記第1の差分抽出部及び前記第2の差分抽出部は、修正前後の実行ファイルにおける、所定の情報の出現回数の差分を抽出することを特徴とする請求項1から3のいずれか1項に記載の特定支援装置。
  5.  前記第1の差分抽出部及び前記第2の差分抽出部は、修正前後の実行ファイルにおける、所定の情報の増加分及び減少分を差分として抽出することを特徴とする請求項1から3のいずれか1項に記載の特定支援装置。
  6.  前記第1の差分抽出部は、ソースコードから変換された実行ファイルと、当該ソースコードに脆弱性修正以外の修正が行われた後のソースコードから変換された実行ファイルと、の当該脆弱性修正以外の修正が行われた箇所の差分をさらに抽出し、
     前記類似度算出部は、前記第2の差分抽出部によって算出された前記所定の箇所の差分の、前記特徴算出部によって算出された前記脆弱性修正以外の修正が行われた箇所の差分の特徴との類似度を算出することを特徴とする請求項1から5のいずれか1項に記載の特定支援装置。
  7.  コンピュータによって実行される特定支援方法であって、
     ソースコードから変換された実行ファイルと、当該ソースコードに脆弱性修正が行われた後のソースコードから変換された実行ファイルと、の当該脆弱性修正が行われた箇所の差分を抽出する第1の差分抽出工程と、
     前記第1の差分抽出工程によって抽出された差分の特徴を算出する特徴算出工程と、
     ソースコードから変換された実行ファイルと、当該ソースコードに修正が行われた後のソースコードから変換された実行ファイルと、の所定の箇所の差分を抽出する第2の差分抽出工程と、
     前記第2の差分抽出工程によって算出された前記所定の箇所の差分の、前記特徴算出工程によって算出された前記脆弱性修正が行われた箇所の差分の特徴との類似度を算出する類似度算出工程と、
     を含んだことを特徴とする特定支援方法。
  8.  コンピュータを、請求項1から6のいずれか1項に記載の特定支援装置として機能させるための特定支援プログラム。
PCT/JP2018/017787 2017-06-14 2018-05-08 特定支援装置、特定支援方法及び特定支援プログラム WO2018230194A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US16/619,986 US11609998B2 (en) 2017-06-14 2018-05-08 Device, method, and computer program for supporting specification
JP2019525199A JP6734479B2 (ja) 2017-06-14 2018-05-08 特定支援装置、特定支援方法及び特定支援プログラム

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2017116668 2017-06-14
JP2017-116668 2017-06-14

Publications (1)

Publication Number Publication Date
WO2018230194A1 true WO2018230194A1 (ja) 2018-12-20

Family

ID=64660442

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2018/017787 WO2018230194A1 (ja) 2017-06-14 2018-05-08 特定支援装置、特定支援方法及び特定支援プログラム

Country Status (3)

Country Link
US (1) US11609998B2 (ja)
JP (1) JP6734479B2 (ja)
WO (1) WO2018230194A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111310178A (zh) * 2020-01-20 2020-06-19 武汉理工大学 跨平台场景下的固件漏洞检测方法及系统

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11768945B2 (en) * 2020-04-07 2023-09-26 Allstate Insurance Company Machine learning system for determining a security vulnerability in computer software

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120011493A1 (en) * 2010-07-08 2012-01-12 Microsoft Corporation Binary code change vulnerability prioritization
WO2017061270A1 (ja) * 2015-10-09 2017-04-13 日本電信電話株式会社 脆弱性発見装置、脆弱性発見方法、および、脆弱性発見プログラム

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090013405A1 (en) * 2007-07-06 2009-01-08 Messagelabs Limited Heuristic detection of malicious code
KR20090065977A (ko) * 2007-12-18 2009-06-23 삼성에스디에스 주식회사 파일의 바이러스 감염여부 판정방법
JP5009186B2 (ja) 2008-02-12 2012-08-22 日本電信電話株式会社 逆アセンブル方法および逆アセンブル装置
US20090313700A1 (en) * 2008-06-11 2009-12-17 Jefferson Horne Method and system for generating malware definitions using a comparison of normalized assembly code
TWI515598B (zh) * 2013-08-23 2016-01-01 國立交通大學 產生純化惡意程式的方法、偵測惡意程式之方法及其系統
CN106575337A (zh) * 2014-08-20 2017-04-19 日本电信电话株式会社 漏洞发现装置、漏洞发现方法以及漏洞发现程序
US10043009B2 (en) * 2014-09-24 2018-08-07 Intel Corporation Technologies for software basic block similarity analysis
US10289843B2 (en) * 2016-04-06 2019-05-14 Nec Corporation Extraction and comparison of hybrid program binary features

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120011493A1 (en) * 2010-07-08 2012-01-12 Microsoft Corporation Binary code change vulnerability prioritization
WO2017061270A1 (ja) * 2015-10-09 2017-04-13 日本電信電話株式会社 脆弱性発見装置、脆弱性発見方法、および、脆弱性発見プログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ASAKURA, YASUO: "Considerations of creating exploit code by using vulnerable patch", 19 January 2010 (2010-01-19), pages 1 - 6 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111310178A (zh) * 2020-01-20 2020-06-19 武汉理工大学 跨平台场景下的固件漏洞检测方法及系统
CN111310178B (zh) * 2020-01-20 2024-01-23 武汉理工大学 跨平台场景下的固件漏洞检测方法及系统

Also Published As

Publication number Publication date
US11609998B2 (en) 2023-03-21
JPWO2018230194A1 (ja) 2019-11-07
JP6734479B2 (ja) 2020-08-05
US20200097664A1 (en) 2020-03-26

Similar Documents

Publication Publication Date Title
Cheng et al. Deepwukong: Statically detecting software vulnerabilities using deep graph neural network
Alrabaee et al. Fossil: a resilient and efficient system for identifying foss functions in malware binaries
Bao et al. {BYTEWEIGHT}: Learning to recognize functions in binary code
Crussell et al. Andarwin: Scalable detection of android application clones based on semantics
US11775414B2 (en) Automated bug fixing using deep learning
US9141806B2 (en) Mining source code for violations of programming rules
US20170286692A1 (en) Vulnerability finding device, vulnerability finding method, and vulnerability finding program
NL2029110B1 (en) Method and system for static analysis of executable files
JP2013536522A5 (ja)
RU2722692C1 (ru) Способ и система выявления вредоносных файлов в неизолированной среде
Alam et al. Droidclone: Detecting android malware variants by exposing code clones
WO2018230194A1 (ja) 特定支援装置、特定支援方法及び特定支援プログラム
Sexton et al. Subroutine based detection of APT malware
Zhang et al. An optimized positive-unlabeled learning method for detecting a large scale of malware variants
WO2021144954A1 (en) Attack information processing apparatus, attack information processing method, and computer readable medium
Pranav et al. Detection of botnets in IoT networks using graph theory and machine learning
McClanahan et al. Automatically locating mitigation information for security vulnerabilities
KR102415494B1 (ko) 에뮬레이션 기반의 임베디드 기기 취약점 점검 및 검증 방법
WO2022172437A1 (ja) 影響推定装置、影響推定方法、および、影響推定プログラム
CN110096873A (zh) 通过补丁变换的自动诱饵推导
EP4276670A1 (en) Information processing device, information processing method, and information processing program
Xu et al. PatchDiscovery: Patch Presence Test for Identifying Binary Vulnerabilities Based on Key Basic Blocks
CN116561768B (zh) 设备固件漏洞检测方法、装置、设备及存储介质
JP7355211B2 (ja) シグネチャ生成装置、シグネチャ生成方法およびシグネチャ生成プログラム
US20240037215A1 (en) Program analysis device, program analysis method, and computer-readable medium

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 18818529

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2019525199

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 18818529

Country of ref document: EP

Kind code of ref document: A1