WO2022079840A1 - 解析機能付与装置、解析機能付与方法および解析機能付与プログラム - Google Patents
解析機能付与装置、解析機能付与方法および解析機能付与プログラム Download PDFInfo
- Publication number
- WO2022079840A1 WO2022079840A1 PCT/JP2020/038801 JP2020038801W WO2022079840A1 WO 2022079840 A1 WO2022079840 A1 WO 2022079840A1 JP 2020038801 W JP2020038801 W JP 2020038801W WO 2022079840 A1 WO2022079840 A1 WO 2022079840A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- function
- input
- analysis
- output
- propagation
- Prior art date
Links
- 238000004458 analytical method Methods 0.000 title claims abstract description 178
- 238000000034 method Methods 0.000 title claims description 83
- 230000006870 function Effects 0.000 claims abstract description 283
- 238000013515 script Methods 0.000 claims abstract description 160
- 238000006243 chemical reaction Methods 0.000 claims abstract description 109
- 238000012360 testing method Methods 0.000 claims abstract description 38
- 230000001902 propagating effect Effects 0.000 claims abstract description 6
- 238000001514 detection method Methods 0.000 claims description 124
- 238000012545 processing Methods 0.000 description 34
- 238000010586 diagram Methods 0.000 description 23
- 239000000284 extract Substances 0.000 description 13
- 230000006399 behavior Effects 0.000 description 11
- 238000004422 calculation algorithm Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 230000003211 malignant effect Effects 0.000 description 7
- 230000000644 propagated effect Effects 0.000 description 6
- 230000003068 static effect Effects 0.000 description 6
- 101100480512 Caenorhabditis elegans tag-51 gene Proteins 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 238000005206 flow analysis Methods 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000003921 particle size analysis Methods 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/034—Test or assess a computer or a system
Definitions
- the present invention relates to an analysis function addition device, an analysis function addition method, and an analysis function addition program.
- malware malware
- fileless malware the threat of attacks by scripts showing malicious behavior (malignant scripts) has become apparent.
- a malicious script is a script with malicious behavior, and is a program that exploits the functions provided by the script engine to realize an attack.
- an attack is carried out using a script engine provided by an operating system (OS: Operating System) by default, or a script engine provided by a specific application such as a Web browser or a document file viewer.
- OS Operating System
- a script engine provided by a specific application such as a Web browser or a document file viewer.
- script engines may require user permission, behavior via the system such as file operations, network communication, and process startup can also be realized. Therefore, an attack using a malicious script poses a threat to the user, similar to an attack using malware in an executable file.
- the method called dynamic analysis which knows the behavior by executing a script and monitoring its behavior, is not affected by the above-mentioned obfuscation. Therefore, in the analysis of malignant scripts, a method based on dynamic analysis is mainly used.
- control flow control flow
- data flow data flow
- the analyst can grasp the attributes of the data (for example, whether it is a decryption key or a command from an attacker). This makes it possible to clarify the behavior of malicious scripts in more detail.
- Taint analysis is a technique for analyzing data flow by adding attribute information called a taint tag (hereinafter referred to as a tag) to data and propagating it according to the movement of the data.
- a tag taint tag
- Non-Patent Document 1 a tag propagation rule is implemented for a virtual machine (VM: Virtual Machine) of PHP's Zend framework to realize taint analysis. .. With this technique, you can analyze the data flow of PHP scripts.
- VM Virtual Machine
- Non-Patent Document 2 a propagation rule is implemented for a JavaScript VM to realize tint analysis. According to this method, the data flow of a JavaScript script can be analyzed.
- Non-Patent Document 3 describes a method for realizing taint analysis using an abstract machine instead of a JavaScript VM. According to this method, data flow analysis can be realized for JavaScript scripts in various execution environments regardless of a specific VM.
- Non-Patent Document 4 describes a method of realizing taint analysis by directly injecting a propagation rule that propagates the tag of the rvalue of each line of the script to the rvalue. According to this method, data flow analysis can be realized regardless of the type of script language.
- Non-Patent Document 1 and Non-Patent Document 2 have a problem that it is necessary to individually design and implement a tint analysis function for each script engine. Further, in order to realize the tint analysis function, there is a problem that it is necessary to know the information of the internal implementation of the virtual machine of the script engine in advance.
- JavaScript does not depend on a specific script engine, there is still a problem that it depends on a specific script language called JavaScript.
- Non-Patent Document 4 it is difficult to deal with the obfuscated script because it is necessary to inject the code into the script body, and the rvalue tag is only propagated to the lvalue. Since it is a particle size analysis, there is a problem that it is not suitable for analysis of malignant scripts.
- the present invention has been made in view of the above, and does not require individual design and implementation for various script engines and script languages, and obfuscated malicious scripts without prior internal implementation information. It is an object of the present invention to provide an apparatus capable of providing a fine-grained tint analysis function that can be applied to the above.
- the analysis function adding device acquires a plurality of execution traces related to branch instructions and memory access by inputting a test script to the script engine and executing the test script.
- the type conversion function detection unit that identifies similar series based on multiple execution traces and detects the function calls included in the specified series as candidates for the type conversion function, and the execution trace.
- Tate analysis for the input / output detector that detects variables related to input / output from the candidate arguments of the type conversion function and the variables of the return value, and the type variable function of the variables related to the input / output of the type conversion function.
- Generates a propagation leak detector that detects a propagation leak function that indicates a type variable function that does not propagate tags between input and output, and a forced propagation rule that forcibly propagates tags to the propagation leak function. It is characterized by including a unit and an analysis function addition unit that imparts a tint analysis function to the script engine based on the forced propagation rule.
- FIG. 1 is a functional block diagram showing a configuration of an analysis function imparting device according to this embodiment.
- FIG. 2 is a diagram showing an example of a test script.
- FIG. 3 is a diagram showing an example of an execution trace.
- FIG. 4 is a diagram (1) for explaining the taint analysis.
- FIG. 5 is a diagram (2) for explaining the taint analysis.
- FIG. 6 is a diagram (3) for explaining the taint analysis.
- FIG. 7 is a diagram (4) for explaining the taint analysis.
- FIG. 8 is a diagram showing an example of the forced propagation rule DB.
- FIG. 9 is a flowchart showing a processing procedure of the execution trace acquisition unit.
- FIG. 10 is a diagram for explaining the processing of the type conversion function detection unit.
- FIG. 9 is a flowchart showing a processing procedure of the execution trace acquisition unit.
- FIG. 10 is a diagram for explaining the processing of the type conversion function detection unit.
- FIG. 11 is a diagram for explaining a modified Smith-Waterman algorithm.
- FIG. 12 is a flowchart showing a processing procedure of the type conversion function detection unit.
- FIG. 13 is a flowchart (1) showing the processing of the modified Smith-Waterman algorithm.
- FIG. 14 is a flowchart (2) showing the processing of the modified Smith-Waterman algorithm.
- FIG. 15 is a diagram for explaining the processing of the input / output detection unit.
- FIG. 16 is a flowchart showing a processing procedure of the input / output detection unit.
- FIG. 17 is a diagram for explaining the processing of the propagation leakage detection unit.
- FIG. 18 is a flowchart showing a processing procedure of the propagation leakage detection unit.
- FIG. 19 is a flowchart showing a processing procedure of the forced propagation rule generation unit.
- FIG. 20 is a flowchart showing a processing procedure of the tint analysis function addition unit.
- FIG. 21 is a flowchart showing a processing procedure of the analysis function imparting device according to the present embodiment.
- FIG. 22 is a diagram showing an example of a computer that executes an analysis function imparting program.
- FIG. 1 is a functional block diagram showing a configuration of an analysis function imparting device according to this embodiment.
- the analysis function imparting device 100 includes a communication control unit 110, an input unit 120, an output unit 130, a storage unit 140, and a control unit 150.
- the analysis function imparting device 100 is realized by a general-purpose computer such as a personal computer.
- the communication control unit 110 is realized by a NIC (Network Interface Card) or the like, and controls communication between an external device and the control unit 150 via a telecommunication line such as a LAN (Local Area Network) or the Internet.
- NIC Network Interface Card
- LAN Local Area Network
- the input unit 120 is realized by using an input device such as a keyboard or a mouse, and inputs various instruction information such as processing start to the control unit 150 in response to an input operation by the operator.
- the output unit 130 is realized by a display device such as a liquid crystal display, a printing device such as a printer, or the like.
- the storage unit 140 has a test script 141, a script engine binary 142, an execution trace DB (Data Base) 143, a tint analysis tool 144, and a forced propagation rule DB 145.
- the test script 141 indicates a test script.
- FIG. 2 is a diagram showing an example of a test script.
- the test script 141 has a script 141A and a script 141B.
- Script engine binary 142 is a binary program of a script engine (VM) that executes a script.
- the storage unit 140 stores data of the instrumentation virtual machine.
- Such an instrumentation virtual machine is a VM that hooks into a binary program and enables monitoring during execution. For example, if a script is executed using the script engine binary 142 hooked on the instrumentation virtual machine, the script can be executed while monitoring the script engine binary 142.
- the execution trace DB 143 holds the trace obtained by executing the test script 141 in the script engine binary 142.
- the trace obtained by causing the script engine binary 142 to execute the test script 141 is referred to as an "execution trace”.
- FIG. 3 is a diagram showing an example of an execution trace.
- the execution trace 10 includes a trace 10a relating to a branch instruction and a trace 10b relating to a memory access.
- the execution trace DB 143 stores the execution trace corresponding to each script.
- the taint analysis tool 144 is a tool that executes taint analysis. By executing the tint analysis, it becomes possible to detect the propagation leakage function.
- Taint analysis is a technique for tracking and analyzing the flow of data in a program.
- attribute information called a taint tag is added to specific data (taint source, hereinafter referred to as source), and the tag is propagated according to the movement of the data.
- source specific data
- sink tag of a certain data
- FIGS. 4 to 7 are diagrams for explaining the taint analysis.
- the VM 20 includes a memory 20a and a virtual CPU 21, and the virtual CPU 21 includes a register 21a.
- the shadow memory 20b and the shadow register 21b are mounted on the VM 20 as an area for tag management.
- the tag 20b-1 is attached to the shadow memory 20b.
- the specific writing corresponds to the I / O (Input Output) of the disk 5.
- the tag 20b-1 is provided with attribute information indicating that it corresponds to, for example, the disk 5.
- tags are propagated as memory is moved or copied. For example, when the area 20a-1 moves to the area 20a-2 of the register 21a, the tag 20b-2 is set in the shadow register 21b. When the data in the area 20a-2 is moved to the area 20a-3 in the memory 20a, the tag 20b-3 is set in the shadow memory 20b.
- the distribution source of data can be specified by checking the tag at the time of reading a specific memory.
- the specific memory reading corresponds to communication or the like connected to the network 6.
- the data distribution source is the disk 5.
- the script may include a function that the tag does not propagate.
- a function that the tag does not propagate it is possible to identify that the tag is not propagated when the tag set in the source is not set in the sink between the source and the sink that originally have a data dependency.
- a function in which the tag does not propagate even though there is a data dependency between input and output is referred to as a "propagation omission function".
- the forced propagation rule DB 145 holds a rule for forcibly propagating a tag for a propagation omission function.
- a rule for forcibly propagating a tag for a propagation omission function is referred to as a "forced propagation rule”.
- FIG. 8 is a diagram showing an example of the forced propagation rule DB. As shown in FIG. 8, the propagation leakage function and the input variable that is the source and the output variable that is the sink are defined by the propagation leakage function. "Funk_offset" indicates the position of the propagation leakage function in the script engine binary as an offset. FIG. 8 shows that this propagation leakage function exists at the position of "0x455af0" from the beginning of the script engine binary.
- “In_arg_idx” and “out_arg_idx” are subscripts indicating the number of arguments or return values of the propagation omission function, respectively, for the input and output variables.
- “in_arg_idx” when “0", it means that the first argument is an input, and when “out_arg_idx” is “-1”, it means that the return value is an output.
- “In_arg_idx” and “out_arg_idx” indicate what type the input and output variables should be interpreted as, respectively.
- this forced propagation rule interprets the "in_arg_idx" variable of the propagation leakage function at the "func_offset” position with the "in_arg_type” type, and if the memory is tagged, the "out_arg_idx” variable is "out_arg_type”. It indicates that it is forcibly propagated to the memory interpreted by the type of "".
- the script engine By inputting a script to the virtual machine binary (script engine) 142 and executing the script, the script engine is given a function to set a value for the propagation leakage function included in the script according to the forced propagation rule. , Propagation leakage can be suppressed.
- the control unit 150 has a reception unit 151, an execution trace acquisition unit 152, a type conversion function detection unit 153, an input / output detection unit 154, a propagation leakage detection unit 155, a forced propagation rule generation unit 156, and a taint analysis function addition unit 157.
- the reception unit 151 receives the input of the test script 141 and the script engine binary 142 from the input unit 120.
- the reception unit 151 stores the test script 141 and the script engine binary 142 in the storage unit 140.
- the reception unit 151 may receive the test script 141 and the script engine binary 142 from the external device via the communication control unit 110.
- the execution trace acquisition unit 152 inputs the test script 141 into the script engine binary 142 and executes it, acquires the trace, and stores the acquired trace in the execution trace DB 143.
- the execution trace acquisition unit 152 sets a hook for acquiring a trace in the script engine binary 142. Hook is a function that interrupts the processing of a program with its own processing.
- FIG. 9 is a flowchart showing the processing procedure of the execution trace acquisition unit.
- the execution trace acquisition unit 152 acquires the test script 141 and the script engine binary 142 (step S10).
- the execution trace acquisition unit 152 sets a hook for acquiring a memory access trace in the script engine binary 142 (step S11).
- the execution trace acquisition unit 152 sets a hook for acquiring a trace of a branch instruction in the script engine binary 142 (step S12).
- the execution trace acquisition unit 152 inputs the test script 141 into the script engine binary 142 and executes it (step S13).
- the execution trace acquisition unit 152 stores the execution trace obtained from the hook of the script engine binary 142 in the execution trace DB 143 (step S14). If the execution trace acquisition unit 152 has not executed all the input test scripts 141 (steps S15 and No), the execution trace acquisition unit 152 proceeds to step S13. On the other hand, when the execution trace acquisition unit 152 executes all the input test scripts 141 (steps S15, Yes), the execution trace acquisition unit 152 ends the process.
- the type conversion function detection unit 153 identifies a similar series based on a plurality of execution traces stored in the execution trace DB 143, and detects a function call included in the specified series as a candidate for the type conversion function. For example, the type conversion function detection unit 153 detects candidates for a type conversion function by using a method called difference execution analysis.
- FIG. 10 is a diagram for explaining the processing of the type conversion function detection unit.
- the execution trace 30A and the execution trace 30B will be described.
- the execution trace 30A is an execution trace obtained by executing the script 141A shown in FIG. 2 with the script engine binary 142.
- the execution trace 30B is an execution trace obtained by executing the script 141B shown in FIG. 2 with the script engine binary 142.
- the time-series direction of the trace related to the branch instruction is the direction 7.
- the type conversion function detection unit 153 compares the sequence of the execution trace 30A with the sequence of the execution trace 30B in the order of the direction 7 of the execution trace 30A, and identifies a similar sequence. For example, it is assumed that the similarity between the sequence 30A-1 and the sequence 30B-1, 30B-2, 30B-3 exceeds a predetermined threshold value.
- the type conversion function detection unit 153 extracts the function calls commonly included in the series 30A-1 and the series 30B-1, 30B-2, and 30B-3 as candidates for the type conversion function.
- the type conversion function detection unit 153 outputs information on candidate type conversion functions to the input / output detection unit 154.
- time.time () is called once and three times, respectively.
- the called result is reflected in the execution trace, and the trace sequence of the branch corresponding to "time.time ()” is once for 30A corresponding to 141A (corresponding to 30A-1), and 30B corresponding to 141B. Appears 3 times (corresponding to 30B-1, 30B-2, 30B-3).
- Type conversion is performed internally in time.time (), and it is expected that there are calls to the type conversion function in 30A-1, 30B-1, 30B-2, and 30B-3, respectively. Will be done.
- the type conversion function detection unit 153 identifies a similar series by the modified Smith-Waterman algorithm.
- FIG. 11 is a diagram for explaining a modified Smith-Waterman algorithm.
- the type conversion function detection unit 153 sets the DP table 40, and sets an execution trace (for example, an execution trace 30A) in which the type variable function is called once on the front side (row) 40l of the DP table 40.
- the type conversion function detection unit 153 sets an execution trace (for example, execution trace 30B) in which the type variable function is called N times at the front head (column) 40C of the DP table 40.
- the type conversion function detection unit 153 sets a value calculated by the match score F (i, j) in each cell (i, j) of the DP table 40. i corresponds to the i-th row and j corresponds to the j-th column. The initial values of i and j are set to "0". For example, the type conversion function detection unit 153 calculates the match score F (i, j) based on the equation (1). The s (i, j) included in the equation (1) is defined by the equation (2). In addition, "-1" is set in d of the equation (1).
- the type conversion function detection unit 153 After setting the match score for each cell, the type conversion function detection unit 153 extracts the cell (4, 4) having the maximum match score, backtracks the extracted cell as a base point, and has the highest homology. Extract the series. The type conversion function detection unit 153 extracts the series "SABC" from the DP table 40 of FIG.
- the type conversion function detection unit 153 generates a new DP table 40a using the part 40-1 excluding the part related to the extracted series.
- the type conversion function detection unit 153 sets a value calculated by the match score F (i, j) in each cell (i, j) of the DP table 40a.
- the type conversion function detection unit 153 After setting the match score for each cell, the type conversion function detection unit 153 extracts the cell (4, 4) having the maximum match score, backtracks the extracted cell as a base point, and has the highest homology. Extract the series. The type conversion function detection unit 153 extracts the series "ABC" from the DP table 40a of FIG.
- the type conversion function detection unit 153 generates a new DP table 40b using the part 40-2 excluding the part related to the extracted series.
- the type conversion function detection unit 153 sets a value calculated by the match score F (i, j) in each cell (i, j) of the DP table 40b.
- the type conversion function detection unit 153 After setting the match score for each cell, the type conversion function detection unit 153 extracts the cell (3, 4) having the maximum match score, backtracks the extracted cell as a base point, and has the highest homology. Extract the series. The type conversion function detection unit 153 extracts the series "ABC" from the DP table 40b of FIG.
- the type conversion function detection unit 153 identifies similar series "SABC”, “ABC”, and “ABC” by executing the above processing.
- FIG. 12 is a flowchart showing the processing procedure of the type conversion function detection unit. As shown in FIG. 12, the type conversion function detection unit 153 acquires an execution trace by the test scripts 141A and 141B from the execution trace DB 143 (step S20).
- the type conversion function detection unit 153 executes the processing of the modified Smith-Waterman algorithm (step S21).
- the type conversion function detection unit 153 outputs the obtained coefficient as a candidate for the type conversion function (step S22).
- FIG. 13 and 14 are flowcharts showing the processing of the modified Smith-Waterman algorithm.
- the type conversion function detection unit 153 acquires an execution trace from the execution trace DB 143 (step S30).
- the type conversion function detection unit 153 sets an execution trace in which the type conversion function is called once on the front side of the DP table (step S31).
- the type conversion function detection unit 153 sets the execution trace in which the type conversion function is called N times at the top of the DP table (step S32).
- the type conversion function detection unit 153 calculates the match score F (i, j) (step S34).
- step S35 When i does not reach the length of the front head (step S35, No), the type conversion function detection unit 153 adds 1 to i (step S36), and proceeds to step S34.
- step S35 when i reaches the length of the front head (step S35, Yes), the type conversion function detection unit 153 shifts to step S37 in FIG.
- step S37 the type conversion function detection unit 153 sets 0 to i, adds 1 to j (step S38), and steps in FIG. Move to S34.
- the type conversion function detection unit 153 extracts the cell having the maximum match score (step S39). The type conversion function detection unit 153 backtracks and extracts the sequence having the highest homology (step S40).
- step S41, No If the type conversion function detection unit 153 has not extracted N series (steps S41, No), the type conversion function detection unit 153 newly creates a DP table in the portion excluding the series extracted in the same row as the extracted series (step S41, No). Step S42), the process proceeds to step S33 of FIG.
- step S41 Yes
- step S43 the type conversion function detection unit 153 calculates the similarity of each of the extracted N series
- step S44, No the type conversion function detection unit 153 processes again by extracting the next largest cell instead of the maximum match score (step S39). Subsequent processing) is carried out (step S45), and the process proceeds to step S31 in FIG.
- the type conversion function detection unit 153 uses the function call included in the extracted series as a candidate for the type conversion function (step S46). ). The type conversion function detection unit 153 outputs a candidate for the type conversion function (step S47).
- the input / output detection unit 154 detects variables related to input / output from the argument and return value of the candidate of the type conversion function in the execution trace.
- the input / output detection unit 154 outputs the information of the variables related to the detected input / output and the type variable function corresponding to the variables to the propagation leakage detection unit 155.
- the type variable function of this variable shall be specified.
- FIG. 15 is a diagram for explaining the processing of the input / output detection unit.
- the input / output detection unit 154 inputs the test script 141 into the script engine binary 142 and executes it, and acquires the execution trace corresponding to the test script 141 from the execution trace DB 143.
- the input / output detection unit 154 expands the execution trace to the memory area 50.
- the input / output detection unit 154 specifies the value "123456789" set in the predetermined function included in the test script 141.
- the value set in the predetermined function is appropriately expressed as "set value”.
- the input / output detection unit 154 identifies an area corresponding to a candidate of the type conversion function among the execution traces expanded in the memory area 50.
- the input / output detection unit 154 executes static analysis for each subregion for the region corresponding to the candidate of the type conversion function, and estimates the type of the structure included in the subregion.
- the input / output detection unit 154 fits a plurality of types and specifies a value corresponding to the fitted type.
- the structure included in the partial region 50a will be described.
- the value becomes "123456789”.
- the input / output detection unit 154 sets the value (return value) to "123456789” when the type "int * " is applied, and matches the input value (determines that the match is high).
- the input / output detection unit 154 specifies that the relationship when the type "char * " is applied to the partial area 50a and the type "int * " is applied to the partial area 50b is the type conversion.
- the input / output detection unit 154 identifies the partial regions 50a and 50b as variables related to input / output. Assuming that the time series direction is 7a, the variable on the input side is the partial area 50a, and the variable on the output side is the partial area 50b.
- FIG. 16 is a flowchart showing the processing procedure of the input / output detection unit.
- the input / output detection unit 154 acquires a candidate for the type conversion function (step S50).
- the input / output detection unit 154 acquires the script engine binary 142 (step S51).
- the input / output detection unit 154 acquires the test script 141 (step S52).
- the input / output detection unit 154 acquires an execution trace corresponding to the test script 141 from the execution trace DB 143 (step S53).
- the input / output detection unit 154 performs static analysis of the script engine binary 142 and collects variable dependencies (step S54).
- the input / output detection unit 154 estimates the type of the structure by a predetermined method based on the dependency of the variables (step S55).
- the input / output detection unit 154 acquires the input value of the type conversion of the test script 141 (step S56).
- the input / output detection unit 154 searches for an argument and a return value that are highly consistent with the input value from the writing of the memory access trace (step S57).
- the input / output detection unit 154 outputs variables related to input / output to the propagation leakage detection unit 155 (step S59) when different types and highly consistent values are found (step S58, Yes). .. On the other hand, when the input / output detection unit 154 has a different type and no highly consistent value is found (step S58, No), the input / output detection unit 154 outputs that the candidate for the type conversion function is not the type conversion function (step S60). ..
- the input / output detection unit 154 detects input / output even when the predetermined function of the test script 141 does not include a value such as "123456789" described above. In that case, the input / output detection unit 154 searches for each variable without deciding the value to be searched in advance, and inputs a variable that satisfies the condition that it is a set of different types and highly consistent values. Detect as output.
- the propagation leakage detection unit 155 executes a tint analysis on the type conversion function of the variable related to the input / output of the type conversion function, and detects the propagation leakage function indicating the type conversion function in which the tag does not propagate.
- the propagation leakage detection unit 155 outputs the input / output information of the propagation leakage function and the propagation leakage function to the forced propagation rule generation unit 156.
- FIG. 17 is a diagram for explaining the processing of the propagation leakage detection unit.
- the propagation leakage detection unit 155 sets the tag 51 with the variable that is the input of the type conversion function as the source, and executes the tint analysis. For example, the propagation leakage detection unit 155 executes the taint analysis by reading and executing the taint analysis tool 144.
- the propagation leakage detection unit 155 uses the variable that is the output of the type conversion function as a sink, if the tag 51 is not propagated and the tag 51 disappears, the type of the variable having an input / output relationship is used.
- the conversion function is detected as a propagation leakage function.
- FIG. 18 is a flowchart showing a processing procedure of the propagation leakage detection unit.
- the propagation leakage detection unit 155 acquires a type conversion function and its input / output variables (step S70).
- the propagation leakage detection unit 155 acquires the taint analysis tool 144 (step S71).
- the propagation leakage detection unit 155 acquires a test script (step S72).
- the propagation leakage detection unit 155 sets the input of the type conversion function to the taint source and sets the output to the taint sync (step S73).
- the propagation leakage detection unit 155 executes the test script while executing it on the taint analysis tool (step S74).
- the propagation leakage detection unit 155 specifies the type conversion function as the propagation leakage function (step S76).
- the propagation leakage detection unit 155 determines that the type conversion function is not the propagation leakage function (step S77).
- the forced propagation rule generation unit 156 generates a forced propagation rule based on the propagation leakage function and the input / output information of the propagation leakage function.
- CHAR_PTR" is generated and the output is structured. If an output value is obtained by interpreting it as a field and interpreting a member variable whose offset is +16 as a uint32t type, "out_arg_type STRUCT
- FIG. 19 is a flowchart showing the processing procedure of the forced propagation rule generation unit. As shown in FIG. 19, the forced propagation rule generation unit 156 acquires a type conversion function and its input / output variables (step S80).
- the forced propagation rule generation unit 156 generates a forced propagation rule for each propagation omission function (step S81).
- the forced propagation rule generation unit 156 stores the forced propagation rule in the forced propagation rule DB 145 (step S82).
- the taint analysis function addition unit 157 adds an analysis function to the script engine binary 142 based on the forced propagation rule.
- the taint analysis function addition unit 157 is set so that the script engine binary 142 can be executed, a hook for confirming the presence or absence of a tag is set in the input of the forced propagation rule, and the tag is found in the input of the forced propagation rule. Set a hook to tag the output.
- the taint analysis function addition unit 157 refers to the input value of the propagation omission function according to the description of the forced propagation rule when executing the script by the script engine binary 142 (forced propagation rule "in_arg_idx" "in_arg_type”. If a tag is attached, refer to the output value of the propagation omission function according to the description of the forced propagation rule (corresponding to the forced propagation rule "out_arg_idx" and "out_arg_type"), and force the tag.
- the analysis function is given to the script engine binary 142 so as to be given.
- the taint analysis function addition unit 157 outputs the script engine binary 142 to which the analysis function is added as a tint analysis tool for the script.
- FIG. 20 is a flowchart showing a processing procedure of the tint analysis function addition unit.
- the taint analysis function adding unit 157 acquires the taint analysis tool 144 (step S90).
- the taint analysis function addition unit 157 sets the script engine binary 142 to be executed on the taint analysis tool 144 (step S91).
- the tint analysis function adding unit 157 acquires the forced propagation rule from the forced propagation rule DB 145 (step S92).
- the taint analysis function addition unit 157 sets a hook in the script engine binary 142 to confirm the presence / absence of a tag by inputting a forced propagation rule (step S93).
- the tint analysis function adding unit 157 sets a hook for attaching a tag to the output when the virtual machine binary has a tag in the input of the forced propagation rule (step S94). If all the forced propagation rules of the forced propagation rule DB are not processed (steps S95 and No), the tint analysis function adding unit 157 proceeds to step S92.
- the taint analysis function adding unit 157 outputs the script engine binary 142 to which the analysis function is added as a tint analysis tool for the script. (Step S96).
- FIG. 21 is a flowchart showing a processing procedure of the analysis function imparting device according to the present embodiment.
- the reception unit 151 of the analysis function imparting device 100 receives the input of the test script 141 and the virtual machine binary (step S101).
- the execution trace acquisition unit 152 of the analysis function adding device 100 executes the execution trace acquisition process (step S102).
- the execution trace acquisition process shown in step S102 corresponds to the process procedure shown in FIG.
- the type conversion function detection unit 153 of the analysis function adding device 100 executes the type conversion function detection process (step S103).
- the type conversion function detection process shown in step S103 corresponds to the process procedure shown in FIG.
- step S104 If the candidate for the type conversion function is not detected (step S104), the analysis function adding device 100 ends the process. On the other hand, when the candidate of the type conversion function is detected (step S104, Yes), the analysis function adding device 100 shifts to step S105.
- the input / output detection unit 154 of the analysis function imparting device 100 executes the input / output detection process (step S105).
- the input / output detection process shown in step S105 corresponds to the process procedure shown in FIG.
- step S106, No If the variable related to input / output is not detected (step S106, No), the analysis function adding device 100 ends the process. On the other hand, when the variable having an input / output relationship is detected (step S106, Yes), the analysis function adding device 100 shifts to step S107.
- the propagation leakage detection unit 155 of the analysis function imparting device 100 executes the propagation leakage detection process (step S107).
- the propagation leakage detection process shown in step S107 corresponds to the process procedure shown in FIG.
- step S108, No If the propagation leakage is not detected (step S108, No), the analysis function adding device 100 ends the process. On the other hand, when the propagation leakage is detected (step S108, Yes), the analysis function imparting device 100 shifts to step S109.
- the forced propagation rule generation unit 156 of the analysis function imparting device 100 executes the forced propagation rule generation process (step S109).
- the forced propagation rule generation process shown in step S109 corresponds to the process procedure shown in FIG.
- the analysis function addition device 100 executes the tint analysis function addition process (step S110).
- the tint analysis function addition process shown in step S110 corresponds to the process procedure shown in FIG.
- the analysis function adding device 100 outputs the script engine binary 142 to which the taint function is added (step S111).
- the analysis function adding device 100 acquires a plurality of execution traces by inputting the test script 141 into the script engine binary 142 and executing the test script 141, and detects candidates for the type conversion function based on the plurality of execution traces.
- the analysis function adding device 100 executes static analysis of the structure and search by value matching for the candidate of the type conversion function, and detects the input / output of the type conversion function.
- the analysis function adding device 100 detects a propagation omission by tint analysis using the input and output of the type conversion function as a source and a sink, and generates a forced propagation rule for the propagation omission.
- the analysis function imparting device 100 forcibly propagates the tag by hooking the script engine binary 142 (script engine) using the forced propagation rule, eliminates the propagation omission, and imparts the taint analysis function.
- the analysis function adding device can realize the taint analysis without the need for individual design and implementation for the script engine and the script language, and without the information of the internal implementation in advance.
- the analysis function adding device 100 does not require code injection into the script body, the taint analysis can be applied to the obfuscated malignant script.
- the tint analysis at the instruction level provided by the tint analysis tool for binary can be applied to the script as it is, it is possible to realize the addition of the fine-grained tint analysis function.
- the analysis function adding device 100 sets a tag in the tint source on the input side, propagates the tag according to the processing (memory movement or copying) related to the function, and performs type conversion when the tag is not output in the tinting. Detect the function as a propagation omission function. This makes it possible to detect a type conversion function that causes propagation omission.
- the analysis function adding device 100 imparts a function to forcibly output the tag input to the input side variable of the propagation omission function from the output side variable based on the forced propagation rule to the script engine binary 142. Therefore, it is possible to suppress propagation leakage.
- the analysis function adding device 100 by analyzing the script engine and adding the tint analysis function afterwards, it is suitable for the analysis of malicious scripts for the script engines of various script languages. It is possible to realize the automatic addition of the analysis function.
- the analysis function imparting device 100 is useful for analyzing the behavior of malignant scripts described in a wide variety of script languages, and performs tint analysis on malignant scripts without being affected by obfuscation. Suitable for scripting. Therefore, the analysis function adding device 100 can analyze the data flow of the malignant script and utilize it for measures such as detection by adding the tint analysis function to various script engines.
- the analysis function adding device 100 can be similarly configured for a language processing system having a mechanism in which a byte code is generated by inputting a source code, and the byte code is interpreted and executed by a virtual machine. Therefore, it can also be implemented for non-scripting languages and execution engines, such as Java and its virtual machine JVM.
- FIG. 22 is a diagram showing an example of a computer that executes an analysis function addition program.
- the computer 1000 has, 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. Each of these parts is connected by a bus 1080.
- the memory 1010 includes a ROM (Read Only Memory) 1011 and a RAM 1012.
- the ROM 1011 stores, for example, a boot program such as a BIOS (Basic Input Output System).
- BIOS Basic Input Output System
- the hard disk drive interface 1030 is connected to the hard disk drive 1031.
- the disk drive interface 1040 is connected to the disk drive 1041.
- a removable storage medium such as a magnetic disk or an optical disk is inserted into the disk drive 1041.
- a mouse 1051 and a keyboard 1052 are connected to the serial port interface 1050.
- a display 1061 is connected to the video adapter 1060.
- the hard disk drive 1031 stores, for example, the OS 1091, the application program 1092, the program module 1093, and the program data 1094. Each piece of information described in the above embodiment is stored in, for example, the hard disk drive 1031 or the memory 1010.
- the analysis function addition program is stored in the hard disk drive 1031 as, for example, a program module 1093 in which a command executed by the computer 1000 is described. Specifically, the program module 1093 in which each process executed by the analysis function imparting device 100 described in the above embodiment is described is stored in the hard disk drive 1031.
- the data used for information processing by the analysis function imparting program is stored as program data 1094 in, for example, the hard disk drive 1031.
- the CPU 1020 reads the program module 1093 and the program data 1094 stored in the hard disk drive 1031 into the RAM 1012 as needed, and executes each of the above-mentioned procedures.
- the program module 1093 and the program data 1094 related to the analysis function imparting program are not limited to the case where they are stored in the hard disk drive 1031. For example, they are stored in a removable storage medium and are stored by the CPU 1020 via the disk drive 1041 or the like. It may be read out. Alternatively, the program module 1093 and the program data 1094 related to the analysis function addition program are stored in another computer connected via a network such as a LAN or WAN (Wide Area Network), and are read by the CPU 1020 via the network interface 1070. It may be issued.
- a network such as a LAN or WAN (Wide Area Network)
- Analysis function addition device 110 Communication control unit 120 Input unit 130 Output unit 140 Storage unit 141 Test script 142 Script engine binary 143 Execution trace DB 144 Tint analysis tool 145 Forced propagation rule DB 150 Control unit 151 Reception unit 152 Execution trace acquisition unit 153 Type conversion function detection unit 154 Input / output detection unit 155 Propagation leakage detection unit 156 Forced propagation rule generation unit 157 Tint analysis function addition unit
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Debugging And Monitoring (AREA)
Abstract
解析機能付与装置(100)は、テストスクリプトをスクリプトエンジンに入力して実行させることで、分岐命令およびメモリアクセスに関する複数の実行トレースを取得する。解析機能付与装置(100)は、複数の実行トレースを基にして類似する系列を特定し、特定した系列に含まれる関数呼び出しを型変換関数の候補として検出する。解析機能付与装置(100)は、実行トレースのうち、型変換関数の候補引数および返り値の変数から、入出力の関係にある変数を検出する。解析機能付与装置(100)は、型変換関数の入出力の関係にある変数の型変数関数に対してテイント解析を実行し、入出力間でタグが伝播しない型変数関数を示す伝播漏れ関数を検出する。解析機能付与装置(100)は、伝播漏れ関数に対して、タグを強制的に伝播させる強制伝播ルールを生成し、強制伝播ルールを基にして、スクリプトエンジンにテイント解析機能を付与する。
Description
本発明は、解析機能付与装置、解析機能付与方法および解析機能付与プログラムに関する。
マルウェアを用いたスパム(マルスパム)やファイルレスマルウェアなどの多様な攻撃の形態が生じるに伴って、悪性な挙動を示すスクリプト(悪性スクリプト)による攻撃の脅威が顕在化している。
悪性スクリプトとは、悪意のある挙動を持ったスクリプトであり、スクリプトエンジンの提供する機能を悪用して攻撃を実現するプログラムである。一般に、オペレーティングシステム(OS:Operating System)がデフォルトで具備するスクリプトエンジンや、Webブラウザや文書ファイルのビューアなど、特定のアプリケーションの具備するスクリプトエンジンを用いて攻撃が実施される。
こうしたスクリプトエンジンの多くは、ユーザの許可が必要な場合もあるものの、ファイル操作やネットワーク通信、プロセスの起動など、システムを介した挙動も実現可能である。したがって、悪性スクリプトを用いた攻撃は、実行ファイルのマルウェアを用いた攻撃と同様に、ユーザに対しての脅威となる。
悪性スクリプトによる攻撃に対策を講じるためには、スクリプトの持つ挙動を正確に把握する必要があるため、スクリプトを解析することで、その挙動を明らかにする技術が求められている。
悪性スクリプトを解析する際に生じる問題として、コードの難読化がある。悪性スクリプトの多くは、難読化と呼ばれる、解析を妨害する処理が施されている。難読化は、故意にコードの複雑さを高めることで、コードの表層的な情報に基づいて解析するのを困難にする。すなわち、スクリプトを実行せずに、コードから得られる情報で解析する、静的解析と呼ばれる解析方法を妨害する。
特に、実行するコードの一部を外部から動的に取得する場合は、そのコードは実行しなければ得られないため、静的には解析できない。したがって、静的解析はその原理上、不可能となる。
一方で、スクリプトを実行し、その振る舞いを監視することで挙動を知る動的解析と呼ばれる手法は、前述のような難読化の影響を受けない。そのため、悪性スクリプトの解析においては、動的解析に基づく手法が主に用いられている。
動的解析に関する、既存の解析技術の多くは、スクリプトの実行における制御の流れ(制御フロー)を追って挙動を解析するが、さらなる詳細な挙動の解析のためには、制御フローの解析のみならず、データの流れ(データフロー)の解析も求められる。
悪性スクリプトが扱うデータの流れを精緻に追跡できれば、解析者はそのデータの属性(たとえば,復号鍵であるか、攻撃者からの指令であるかなど)を把握できる。これにより、悪性スクリプトの挙動をより詳細に明らかにできる。
こうしたデータの追跡を実現する手法として、テイント解析が存在する。テイント解析とは、データにテイントタグ(以降、タグと呼ぶ)という属性情報を付与し、それをデータの移動にあわせて伝播させていくことで、データフローを解析する技術である。
スクリプトに対するテイント解析の実現について、たとえば、非特許文献1には、PHPのZendフレームワークの仮想機械(VM:Virtual Machine)に対して、タグの伝播ルールを実装し、テイント解析を実現している。この手法によれば、PHPのスクリプトのデータフローを解析できる。
また、非特許文献2には、JavaScriptのVMに対して、伝播ルールを実装し、テイント解析を実現している。この手法によれば、JavaScriptのスクリプトのデータフローを解析できる。
非特許文献3には、JavaScriptのVMではなく、抽象機械を用いてテイント解析を実現する手法が記載されている。この手法によれば、特定のVMによらず、様々な実行環境でのJavaScriptのスクリプトに対して、データフローの解析を実現できる。
そして、非特許文献4には、スクリプトの各行の左辺値のタグを右辺値に伝播させる伝播ルールをスクリプトに直接注入することで、テイント解析を実現する手法が記載されている。この手法によれば、スクリプト言語の種類を問わず、データフローの解析を実現できる。
Monga et al.(2009)A hybrid analysis framework for detecting web application vulnerabilities.
Vogt et al.(2007) Cross-Site Scripting Prevention with Dynamic Data Tainting and Static Analysis.
Karim et al.(2018) Platform-Independent Dynamic Taint Analysis for JavaScript.
Xu et al.(2005) Practical Dynamic Taint Analysis for Countering Input Validation Attacks on Web Applications.
しかしながら、上述した従来技術では、様々なスクリプトエンジンに対し、細粒度のテイント解析を実現することができないという問題がある。
たとえば、非特許文献1及び非特許文献2に記載の手法では、スクリプトエンジンごとに個別にテイント解析機能を設計し、実装する必要があるという課題があった。また、テイント解析機能を実現するために、スクリプトエンジンの仮想機械の内部実装の情報を事前に知る必要があるという課題があった。
非特許文献3に記載の手法では、JavaScriptであれば特定のスクリプトエンジンには依存しないものの、やはり、JavaScriptという特定のスクリプト言語に依存するという課題があった。
非特許文献4に記載の手法では、スクリプト本体へのコードの注入が必要であるため難読化されたスクリプトへの対応が困難であることと、右辺値のタグを左辺値に伝播させるのみの粗粒度の解析であることから、悪性スクリプトの解析には適さないという課題があった。
本発明は、上記に鑑みてなされたものであって、多様なスクリプトエンジンやスクリプト言語に対して個別の設計及び実装を要さず、事前の内部実装の情報なしに、難読化された悪性スクリプトにも適用可能な、細粒度のテイント解析機能の付与を実現できる装置を提供することを目的とする。
上述した課題を解決し、目的を達成するために、本発明に係る解析機能付与装置は、テストスクリプトをスクリプトエンジンに入力して実行させることで、分岐命令およびメモリアクセスに関する複数の実行トレースを取得する実行トレース取得部と、複数の実行トレースを基にして類似する系列を特定し、特定した系列に含まれる関数呼び出しを型変換関数の候補として検出する型変換関数検出部と、実行トレースのうち、型変換関数の候補引数および返り値の変数から、入出力の関係にある変数を検出する入出力検出部と、型変換関数の入出力の関係にある変数の型変数関数に対してテイント解析を実行し、入出力間でタグが伝播しない型変数関数を示す伝播漏れ関数を検出する伝播漏れ検出部と、伝播漏れ関数に対して、タグを強制的に伝播させる強制伝播ルールを生成する生成部と、強制伝播ルールを基にして、スクリプトエンジンにテイント解析機能を付与する解析機能付与部とを備えることを特徴とする。
本発明によれば、様々なスクリプトエンジンに対し、細粒度のテイント解析機能の付与を実現することができる。
以下に、本願の開示する解析機能付与装置、解析機能付与方法および解析機能付与プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
本実施例に係る解析機能付与装置の構成について説明する。図1は、本実施例に係る解析機能付与装置の構成を示す機能ブロック図である。図1に示すように、解析機能付与装置100は、通信制御部110と、入力部120と、出力部130と、記憶部140と、制御部150とを有する。解析機能付与装置100は、パソコン等の汎用コンピュータで実現される。
通信制御部110は、NIC(Network Interface Card)等で実現され、LAN(Local Area Network)やインターネットなどの電気通信回線を介した外部の装置と制御部150との通信を制御する。
入力部120は、キーボードやマウス等の入力デバイスを用いて実現され、操作者による入力操作に対応して、制御部150に対して処理開始などの各種指示情報を入力する。出力部130は、液晶ディスプレイなどの表示装置、プリンター等の印刷装置等によって実現される。
記憶部140は、テストスクリプト141と、スクリプトエンジンバイナリ142と、実行トレースDB(Data Base)143と、テイント解析ツール144と、強制伝播ルールDB145とを有する。
テストスクリプト141は、テスト用のスクリプトを示す。図2は、テストスクリプトの一例を示す図である。たとえば、図2に示すように、テストスクリプト141は、スクリプト141Aと、スクリプト141Bとを有する。
スクリプトエンジンバイナリ142は、スクリプトを実行するスクリプトエンジン(VM)のバイナリプログラムである。なお、図示を省略するが、記憶部140には、計装用仮想機械のデータが格納されている。かかる計装用仮想機械は、バイナリプログラムに対してフックをし、実行中の監視を可能にするVMである。たとえば、計装用仮想機械の上でフックをしたスクリプトエンジンバイナリ142を用いてスクリプトを実行すると、スクリプトエンジンバイナリ142を監視しながら、スクリプトを実行することができる。
実行トレースDB143は、テストスクリプト141をスクリプトエンジンバイナリ142に実行させることで得られるトレースを保持する。以下の説明では、テストスクリプト141をスクリプトエンジンバイナリ142に実行させることで得られるトレースを、「実行トレース」と表記する。
図3は、実行トレースの一例を示す図である。図3に示すように、実行トレース10は、分岐命令に関するトレース10aと、メモリアクセスに関するトレース10bが含まれる。複数のスクリプトが実行される場合には、実行トレースDB143には、各スクリプトに対応した実行トレースが格納される。
テイント解析ツール144は、テイント解析を実行するツールである。テイント解析を実行することで、伝播漏れ関数を検出することが可能となる。
テイント解析とは、プログラム中のデータの流れを追跡して解析する技術である。テイント解析では、特定のデータ(テイントソース、以降ソースと呼ぶ)にテイントタグと呼ばれる属性情報を付与し、データの移動に合わせてタグを伝播させていく。そして、テイント解析では、あるデータ(テイントシンク、以降シンクと呼ぶ)のタグを確認し、データの属性を特定する。
図4~図7は、テイント解析を説明するための図である。図4について説明する。VM20には、メモリ20aと、仮想CPU21とが含まれ、仮想CPU21には、レジスタ21aが含まれる。テイント解析では、タグ管理用の領域として、シャドウメモリ20bと、シャドウレジスタ21bとをVM20に実装する。
図5の説明に移行する。テイント解析では、特定の書き込みによって、メモリ20aの領域20a-1にデータが書き込まれた場合、タグ20b-1を、シャドウメモリ20bに付与する。特定の書き込みは、ディスク5のI/O(Input Output)等に対応する。この場合、タグ20b-1には、たとえばディスク5に対応することを示す属性情報を持たせる。
図6の説明に移行する。テイント解析では、メモリの移動やコピーに合わせて、タグを伝播させていく。たとえば、領域20a-1が、レジスタ21aの領域20a-2に移動した場合には、シャドウレジスタ21bに、タグ20b-2を設定する。また、領域20a-2のデータが、メモリ20aの領域20a-3に移動した場合には、シャドウメモリ20bに、タグ20b-3を設定する。
図7の説明に移行する。テイント解析では、特定のメモリ読み込み時に、タグを確認することで、データの流通元を特定することができる。特定のメモリ読み込みは、ネットワーク6に接続する通信等に対応する。たとえば、シャドウメモリ20b、シャドウレジスタ21bのタグを確認することで、データの流通元が、ディスク5であることを特定することができる。
なお、テイント解析によって、タグを伝播させていく過程において、タグが伝播しない関数が、スクリプトに含まれる場合がある。たとえば、テイント解析において、本来はデータに依存関係があるソースとシンクの間で、ソースに設定したタグが、シンクにおいて設定されていない場合に、タグが伝播していないことを特定できる。入出力にデータの依存関係があるにも関わらずタグが伝播しない関数を「伝播漏れ関数」と表記する。
図1の説明に戻る。強制伝播ルールDB145は、伝播漏れ関数に対して、強制的にタグを伝播させるルールを保持する。伝播漏れ関数に対して、強制的にタグを伝播させるルールを「強制伝播ルール」と表記する。図8は、強制伝播ルールDBの一例を示す図である。図8に示すように、伝播漏れ関数と、かかる伝播漏れ関数でソースとなる入力の変数とシンクとなる出力の変数とが定義される。「func_offset」は伝播漏れ関数のスクリプトエンジンバイナリ内での位置を、オフセットで示している。図8では、スクリプトエンジンバイナリの先頭から「0x455af0」の位置に、この伝播漏れ関数が存在することを示している。「in_arg_idx」および「out_arg_idx」は、それぞれ入力と出力の変数が伝播漏れ関数の何番目の引数または返り値にあたるかを示す添字である。図8では、「in_arg_idx」が「0」であることは、第一引数が入力であることを示し、「out_arg_idx」が「-1」であることは、返り値が出力であることを示している。「in_arg_idx」および「out_arg_idx」は、それぞれ入力と出力の変数をどのような型として解釈するべきかを示している。図8では、「in_arg_type」が「STRUCT|OFF_8|CHAR_PTR」であることは、前述の「in_arg_idx」が「0」であることと併せて、第一引数を構造体として解釈し、そのオフセットが+8のメンバ変数をchar*型として解釈すると入力値が得られることを示す。また、「out_arg_type」が「STRUCT|OFF_16|UINT32」であることは、前述の「out_arg_idx」が「-1」であることと併せて、返り値を構造体として解釈し、そのオフセットが+16のメンバ変数をuint32_t型として解釈すると出力値が得られることを示す。したがって、この強制伝播ルールは、「func_offset」の位置の伝播漏れ関数の持つ「in_arg_idx」の変数を「in_arg_type」の型で解釈したメモリにタグが付いていれば、「out_arg_idx」の変数を「out_arg_type」の型で解釈したメモリに強制的に伝播させることを示す。
スクリプトを仮想機械バイナリ(スクリプトエンジン)142に入力して、スクリプトを実行する場合に、強制伝播ルールに従って、スクリプトに含まれる伝播漏れ関数に、値を設定する機能を、スクリプトエンジンに付与することで、伝播漏れを抑止することができる。
制御部150は、受付部151、実行トレース取得部152、型変換関数検出部153、入出力検出部154、伝播漏れ検出部155、強制伝播ルール生成部156、テイント解析機能付与部157を有する。
受付部151は、入力部120から、テストスクリプト141およびスクリプトエンジンバイナリ142の入力を受け付ける。受付部151は、テストスクリプト141およびスクリプトエンジンバイナリ142を、記憶部140に格納する。受付部151は、通信制御部110を介して、外部装置から、テストスクリプト141およびスクリプトエンジンバイナリ142を受け付けてもよい。
実行トレース取得部152は、テストスクリプト141を、スクリプトエンジンバイナリ142に入力して実行させ、トレースを取得し、取得したトレースを実行トレースDB143に格納する。たとえば、実行トレース取得部152は、スクリプトエンジンバイナリ142に、トレースを取得するためのフックを設定する。フックは、プログラムの処理に独自の処理を割り込ませる機能である。
図9は、実行トレース取得部の処理手順を示すフローチャートである。図9に示すように、実行トレース取得部152は、テストスクリプト141およびスクリプトエンジンバイナリ142を取得する(ステップS10)。実行トレース取得部152は、スクリプトエンジンバイナリ142にメモリアクセストレースを取得するためのフックを設定する(ステップS11)。
実行トレース取得部152は、スクリプトエンジンバイナリ142に分岐命令のトレースを取得するためのフックを設定する(ステップS12)。実行トレース取得部152は、テストスクリプト141をスクリプトエンジンバイナリ142に入力して実行する(ステップS13)。
実行トレース取得部152は、スクリプトエンジンバイナリ142のフックから得られる実行トレースを実行トレースDB143に格納する(ステップS14)。実行トレース取得部152は、入力されたテストスクリプト141をすべて実行していない場合には(ステップS15,No)、ステップS13に移行する。一方、実行トレース取得部152は、入力されたテストスクリプト141をすべて実行した場合には(ステップS15,Yes)、処理を終了する。
図1の説明に戻る。型変換関数検出部153は、実行トレースDB143に格納された複数の実行トレースを基にして、類似する系列を特定し、特定した系列に含まれる関数呼び出しを、型変換関数の候補として検出する。たとえば、型変換関数検出部153は、差分実行解析と呼ばれる手法を用いて、型変換関数の候補を検出する。
図10は、型変換関数検出部の処理を説明するための図である。図10に示す例では、実行トレース30Aと、実行トレース30Bとを用いて説明する。実行トレース30Aは、図2に示したスクリプト141Aを、スクリプトエンジンバイナリ142で実行することで得られる実行トレースである。実行トレース30Bは、図2に示したスクリプト141Bを、スクリプトエンジンバイナリ142で実行することで得られる実行トレースである。分岐命令に関するトレースの時系列方向を、方向7とする。
型変換関数検出部153は、実行トレース30Aの方向7の順に、実行トレース30Aの系列と、実行トレース30Bの系列とを比較し、類似する系列を特定する。たとえば、系列30A-1と、系列30B-1,30B-2,30B-3との類似度が所定の閾値を超えるものとする。型変換関数検出部153は、系列30A-1と、系列30B-1,30B-2,30B-3に共通して含まれている関数呼び出しを、型変換関数の候補として抽出する。型変換関数検出部153は、型変換関数の候補の情報を、入出力検出部154に出力する。
ここで、図2に示したテストスクリプト141Aと141Bでは、それぞれ「time.time()」が1回および3回呼び出されている。呼び出された結果は、実行トレースに反映され、「time.time()」に対応する分岐のトレースの系列が141Aに対応する30Aには1回(30A-1に対応)、141Bに対応する30Bには3回(30B-1、30B-2、30B-3に対応)出現する。time.time()の中では型変換が内部的に行われており、30A-1、30B-1、30B-2、30B-3の中にそれぞれその型変換関数の呼び出しが存在することが期待される。
たとえば、型変換関数検出部153は、改造版Smith-Watermanアルゴリズムによって、類似する系列を特定する。図11は、改造版Smith-Watermanアルゴリズムを説明するための図である。型変換関数検出部153は、DP表40を設定し、DP表40の表側(行)40lに、型変数関数を一回呼び出した実行トレース(たとえば、実行トレース30A)を設定する。型変換関数検出部153は、DP表40の表頭(列)40Cに、型変数関数をN回呼び出した実行トレース(たとえば、実行トレース30B)を設定する。
型変換関数検出部153は、DP表40の各セル(i,j)に、マッチスコアF(i,j)によって算出される値を設定する。iはi番目の行に対応し、jはj番目の列に対応する。iおよびjの初期値を「0」とする。たとえば、型変換関数検出部153は、式(1)に基づいて、マッチスコアF(i,j)を計算する。式(1)に含まれるs(i,j)は、式(2)によって定義される。なお、式(1)のdには、「-1」が設定される。
型変換関数検出部153は、各セルにマッチスコアを設定した後に、マッチスコアが最大となるセル(4,4)を抽出し、抽出したセルを基点にバックトラックして、最も相同性の高い系列を抽出する。型変換関数検出部153は、図11のDP表40から、系列「SABC」を抽出する。
型変換関数検出部153は、抽出した系列に関する部分を除いた部分40-1を用いて、新たなDP表40aを生成する。型変換関数検出部153は、DP表40aの各セル(i,j)に、マッチスコアF(i,j)によって算出される値を設定する。
型変換関数検出部153は、各セルにマッチスコアを設定した後に、マッチスコアが最大となるセル(4,4)を抽出し、抽出したセルを基点にバックトラックして、最も相同性の高い系列を抽出する。型変換関数検出部153は、図11のDP表40aから、系列「ABC」を抽出する。
型変換関数検出部153は、抽出した系列に関する部分を除いた部分40-2を用いて、新たなDP表40bを生成する。型変換関数検出部153は、DP表40bの各セル(i,j)に、マッチスコアF(i,j)によって算出される値を設定する。
型変換関数検出部153は、各セルにマッチスコアを設定した後に、マッチスコアが最大となるセル(3,4)を抽出し、抽出したセルを基点にバックトラックして、最も相同性の高い系列を抽出する。型変換関数検出部153は、図11のDP表40bから、系列「ABC」を抽出する。
型変換関数検出部153は、上記処理を実行することで、類似する系列「SABC」、「ABC」、「ABC」を特定する。
図12は、型変換関数検出部の処理手順を示すフローチャートである。図12に示すように、型変換関数検出部153は、実行トレースDB143からテストスクリプト141A、141Bによる実行トレースを取得する(ステップS20)。
型変換関数検出部153は、改造版Smith-Watermanアルゴリズムの処理を実行する(ステップS21)。型変換関数検出部153は、得られた係数を型変換関数の候補として出力する(ステップS22)。
次に、図12のステップS21に示した改造版Smith-Watermanアルゴリズムの処理の一例について説明する。図13、図14は、改造版Smith-Watermanアルゴリズムの処理を示すフローチャートである。
図13について説明する。型変換関数検出部153は、実行トレースDB143から実行トレースを取得する(ステップS30)。型変換関数検出部153は、型変換関数を1回呼び出した実行トレースをDP表の表側に設定する(ステップS31)。
型変換関数検出部153は、型変換関数をN回呼び出した実行トレースをDP表の表頭に設定する(ステップS32)。型変換関数検出部153は、i=0、j=0に設定する(ステップS33)。型変換関数検出部153は、マッチスコアF(i,j)を算出する(ステップS34)。
型変換関数検出部153は、iが表頭の長さに達していない場合には(ステップS35,No)、iに1を加算し(ステップS36)、ステップS34に移行する。
一方、型変換関数検出部153は、iが表頭の長さに達した場合には(ステップS35,Yes)、図14のステップS37に移行する。
図14の説明に移行する。型変換関数検出部153は、jが表側の長さに達していない場合には(ステップS37,No)、iに0を設定し、jに1を加算し(ステップS38)、図13のステップS34に移行する。
型変換関数検出部153は、jが表側の長さに達した場合には(ステップS37,Yes)、マッチスコアが最大となるセルを抽出する(ステップS39)。型変換関数検出部153は、バックトラックして最も相同性の高い系列を抽出する(ステップS40)。
型変換関数検出部153は、N個の系列を取り出していない場合には(ステップS41,No)、抽出した系列と同じ行で抽出した系列を除いた部分で、DP表を新たに作成し(ステップS42)、図13のステップS33に移行する。
型変換関数検出部153は、N個の系列を取り出した場合には(ステップS41,Yes)、抽出した全N個の系列の各々の類似度を算出する(ステップS43)。型変換関数検出部153は、類似度が所定の閾値を超えていない場合には(ステップS44,No)、マッチスコアが最大の代わりに次に大きいセルを抽出することで、再度処理(ステップS39以降の処理)を実施し(ステップS45)、図13のステップS31に移行する。
一方、型変換関数検出部153は、類似度が所定の閾値を超えた場合には(ステップS44,Yes)、抽出した系列に含まれている関数呼び出しを型変換関数の候補とする(ステップS46)。型変換関数検出部153は、型変換関数の候補を出力する(ステップS47)。
図1の説明に戻る。入出力検出部154は、実行トレースのうち、型変換関数の候補の引数および返り値から、入出力の関係にある変数を検出する。入出力検出部154は、検出した入出力の関係にある変数と、かかる変数に対応する型変数関数の情報を、伝播漏れ検出部155に出力する。入出力関係にある変数が特定されると、この変数の型変数関数が特定されるものとする。
図15は、入出力検出部の処理を説明するための図である。入出力検出部154は、スクリプトエンジンバイナリ142にテストスクリプト141を入力して実行し、実行トレースDB143から、テストスクリプト141に対応した実行トレースを取得する。入出力検出部154は、実行トレースを、メモリ領域50に展開する。
入出力検出部154は、テストスクリプト141に含まれる所定の関数に設定された値「123456789」を特定しておく。所定の関数に設定された値を適宜、「設定値」と表記する。入出力検出部154は、メモリ領域50に展開された実行トレースのうち、型変換関数の候補に対応する領域を特定する。
入出力検出部154は、型変換関数の候補に対応する領域に対して、部分領域毎に、静的解析を実行し、部分領域に含まれる構造体の型を推定する。入出力検出部154は、複数種類の型を当てはめ、当てはめた型に対応する値を特定する。
図15に示す例では、部分領域50aに含まれる構造体について説明する。入出力検出部154は、型「int」を当てはめると、値が「34214738」となる。入出力検出部154は、型「int*」を当てはめると、値が「5701715」となる。入出力検出部154は、型「wchar*」を当てはめると、値が「””」となる。入出力検出部154は、型「char*」を当てはめると、値が「123456789」となる。入出力検出部154は、型「char*」を当てはめた場合の値が「123456789」となり、設定値と一致する。入出力検出部154は、型「char*」を当てはめた場合の値「123456789」を入力値として取り出す。
続いて、部分領域50aに含まれる構造体について説明する。入出力検出部154は、型「int*」を当てはめると、値が「123456789」となる。入出力検出部154は、型「int*」を当てはめた場合の値(返り値)が「123456789」となり、入力値と一致(一致性が高いと判定)する。
上記処理によって、入出力検出部154は、部分領域50aに型「char*」を当てはめ、部分領域50bに型「int*」を当てはめた場合の関係が、型変換であることを特定する。入出力検出部154は、入出力の関係にある変数として、部分領域50a,50bを特定する。時系列方向を7aとすると、入力側の変数は、部分領域50aとなり、出力側の変数は、部分領域50bとなる。
図16は、入出力検出部の処理手順を示すフローチャートである。図16に示すように、入出力検出部154は、型変換関数の候補を取得する(ステップS50)。入出力検出部154は、スクリプトエンジンバイナリ142を取得する(ステップS51)。入出力検出部154は、テストスクリプト141を取得する(ステップS52)。
入出力検出部154は、実行トレースDB143からテストスクリプト141に対応した実行トレースを取得する(ステップS53)。入出力検出部154は、スクリプトエンジンバイナリ142の静的解析を実施し、変数の依存関係を収集する(ステップS54)。
入出力検出部154は、変数の依存関係に基づいて所定の方法で構造体の型を推定する(ステップS55)。入出力検出部154は、テストスクリプト141の型変換の入力値を取得する(ステップS56)。入出力検出部154は、メモリアクセストレースの書き込みから、入力値と一致性の高い引数および返り値の値を探索する(ステップS57)。
入出力検出部154は、異なる型でかつ一致性の高い値が見られた場合には(ステップS58,Yes)、入出力の関係にある変数を伝播漏れ検出部155に出力する(ステップS59)。一方、入出力検出部154は、異なる型でかつ一致性の高い値が見られない場合には(ステップS58,No)、型変換関数の候補は型変換関数でない旨を出力する(ステップS60)。
なお、入出力検出部154は、テストスクリプト141の所定の関数に前述の「123456789」のような値が含まれていない場合も、入出力を検出する。その場合は、入出力検出部154は、探索する値を事前に決めずにそれぞれの変数を探索していき、異なる型で一致性の高い値の組であるという条件を満たしたものを、入出力として検出する。
図1の説明に戻る。伝播漏れ検出部155は、型変換関数の入出力の関係にある変数の型変換関数に対してテイント解析を実行し、タグが伝播しない型変換関数を示す伝播漏れ関数を検出する。伝播漏れ検出部155は、伝播漏れ関数と、伝播漏れ関数の入出力の情報を、強制伝播ルール生成部156に出力する。
図17は、伝播漏れ検出部の処理を説明するための図である。伝播漏れ検出部155は、型変換関数の入力となる変数をソースとしてタグ51を設定し、テイント解析を実行する。たとえば、伝播漏れ検出部155は、テイント解析ツール144を読み出して実行することで、テイント解析を実行する。伝播漏れ検出部155は、型変換関数の出力となる変数をシンクとしたとき、タグ51が伝播されておらず、タグ51が消失している場合には、入出力の関係にある変数の型変換関数を、伝播漏れ関数として検出する。
図18は、伝播漏れ検出部の処理手順を示すフローチャートである。図18に示すように、伝播漏れ検出部155は、型変換関数とその入出力の変数とを取得する(ステップS70)。伝播漏れ検出部155は、テイント解析ツール144を取得する(ステップS71)。伝播漏れ検出部155は、テストスクリプトを取得する(ステップS72)。
伝播漏れ検出部155は、型変換関数の入力をテイントソースに設定し、出力をテイントシンクに設定する(ステップS73)。伝播漏れ検出部155は、テイント解析ツールの上で実行しながら、テストスクリプトを実行する(ステップS74)。
伝播漏れ検出部155は、テイントシンクでタグが見られない場合には(ステップS75,No)、型変換関数を、伝播漏れ関数として特定する(ステップS76)。伝播漏れ検出部155は、テイントシンクでタグが見られる場合には(ステップS75,Yes)、型変換関数が伝播漏れ関数ではないと判定する(ステップS77)。
図1の説明に戻る。強制伝播ルール生成部156は、伝播漏れ関数と、伝播漏れ関数の入出力の情報を基にして、強制伝播ルールを生成する。
たとえば、強制伝播ルール生成部156は、伝播漏れ関数のバイナリ上のオフセットが0xとなる場合には、「func_offset=0x455af0」を生成する。伝播漏れ関数の入力が第一引数の場合には「in_arg_idx=0」を生成する。そして、たとえば、伝播漏れ関数の出力が返り値の場合には「out_arg_idx=-1」を生成する。また、たとえば、入力を構造体として解釈し、そのオフセットが+8のメンバ変数をchar*型として解釈すると入力値が得られる場合、「in_arg_type=STRUCT|OFF_8|CHAR_PTR」を生成し、出力を構造体として解釈し、そのオフセットが+16のメンバ変数をuint32t型として解釈すると出力値が得られる場合、「out_arg_type=STRUCT|OFF_16|UINT32」を生成する。
図19は、強制伝播ルール生成部の処理手順を示すフローチャートである。図19に示すように、強制伝播ルール生成部156は、型変換関数とその入出力の変数とを取得する(ステップS80)。
強制伝播ルール生成部156は、各伝播漏れ関数について、強制伝播ルールを生成する(ステップS81)。強制伝播ルール生成部156は、強制伝播ルールを、強制伝播ルールDB145に格納する(ステップS82)。
図1の説明に戻る。テイント解析機能付与部157は、強制伝播ルールを基にして、スクリプトエンジンバイナリ142に、解析機能を付与する。
テイント解析機能付与部157は、スクリプトエンジンバイナリ142を実行できるように設定し、強制伝播ルールの入力でタグの有無を確認するためのフックを設定し、強制伝播ルールの入力でタグがあった場合に、出力にタグを付与するフックを設定する。
たとえば、テイント解析機能付与部157は、スクリプトエンジンバイナリ142によって、スクリプトを実行する際に、伝播漏れ関数の入力値を強制伝播ルールの記載に沿って参照し(強制伝播ルール「in_arg_idx」「in_arg_type」に対応)、タグが付与されている場合には、伝播漏れ関数の出力値を強制伝播ルールの記載に沿って参照し(強制伝播ルール「out_arg_idx」「out_arg_type」に対応)、タグを強制的に付与するように、スクリプトエンジンバイナリ142に解析機能を付与する。テイント解析機能付与部157は、かかる解析機能を付与したスクリプトエンジンバイナリ142を、スクリプト向けのテイント解析ツールとして出力する。
図20は、テイント解析機能付与部の処理手順を示すフローチャートである。図20に示すように、テイント解析機能付与部157は、テイント解析ツール144を取得する(ステップS90)。テイント解析機能付与部157は、スクリプトエンジンバイナリ142をテイント解析ツール144上で実行するように設定する(ステップS91)。
テイント解析機能付与部157は、強制伝播ルールDB145から強制伝播ルールを取得する(ステップS92)。テイント解析機能付与部157は、スクリプトエンジンバイナリ142に、強制伝播ルールの入力でタグの有無を確認するフックを設定する(ステップS93)。
テイント解析機能付与部157は、仮想機械バイナリに、強制伝播ルールの入力でタグがあった場合に、出力にタグを付与するフックを設定する(ステップS94)。テイント解析機能付与部157は、強制伝播ルールDBの強制伝播ルールをすべて処理していない場合には(ステップS95,No)、ステップS92に移行する。
テイント解析機能付与部157は、強制伝播ルールDBの強制伝播ルールをすべて処理した場合には(ステップS95,Yes)、解析機能を付与したスクリプトエンジンバイナリ142を、スクリプト向けのテイント解析ツールとして出力する(ステップS96)。
次に、解析機能付与装置100の処理手順について説明する。図21は、本実施例に係る解析機能付与装置の処理手順を示すフローチャートである。図21に示すように、解析機能付与装置100の受付部151は、テストスクリプト141および仮想機械バイナリの入力を受け付ける(ステップS101)。
解析機能付与装置100の実行トレース取得部152は、実行トレース取得処理を実行する(ステップS102)。ステップS102に示す実行トレース取得処理は、図9に示した処理手順に対応する。
解析機能付与装置100の型変換関数検出部153は、型変換関数検出処理を実行する(ステップS103)。ステップS103に示す型変換関数検出処理は、図12に示した処理手順に対応する。
解析機能付与装置100は、型変換関数の候補が検出されていない場合には(ステップS104)、処理を終了する。一方、解析機能付与装置100は、型変換関数の候補が検出された場合には(ステップS104,Yes)、ステップS105に移行する。
解析機能付与装置100の入出力検出部154は、入出力検出処理を実行する(ステップS105)。ステップS105に示す入出力検出処理は、図16に示した処理手順に対応する。
解析機能付与装置100は、入出力関係にある変数が検出されない場合には(ステップS106,No)、処理を終了する。一方、解析機能付与装置100は、入出力関係にある変数が検出された場合には(ステップS106,Yes)、ステップS107に移行する。
解析機能付与装置100の伝播漏れ検出部155は、伝播漏れ検出処理を実行する(ステップS107)。ステップS107に示す伝播漏れ検出処理は、図18に示した処理手順に対応する。
解析機能付与装置100は、伝播漏れが検出されていない場合には(ステップS108,No)、処理を終了する。一方、解析機能付与装置100は、伝播漏れが検出された場合には(ステップS108,Yes)、ステップS109に移行する。
解析機能付与装置100の強制伝播ルール生成部156は、強制伝播ルール生成処理を実行する(ステップS109)。ステップS109に示す強制伝播ルール生成処理は、図19に示した処理手順に対応する。
解析機能付与装置100は、テイント解析機能付与処理を実行する(ステップS110)。ステップS110に示すテイント解析機能付与処理は、図20に示した処理手順に対応する。解析機能付与装置100は、テイント機能が付与されたスクリプトエンジンバイナリ142を出力する(ステップS111)。
次に、本実施例に係る解析機能付与装置100の効果について説明する。解析機能付与装置100は、テストスクリプト141をスクリプトエンジンバイナリ142に入力して実行することで、複数の実行トレースを取得し、複数の実行トレースを基にして、型変換関数の候補を検出する。解析機能付与装置100は、型変換関数の候補に対して、構造体の静的解析と値の照合による探索を実行し、型変換関数の入出力を検出する。
解析機能付与装置100は、型変換関関数の入力と出力をソースとシンクとしたテイント解析により、伝播漏れを検出し、伝播漏れに対して強制伝播ルールを生成する。解析機能付与装置100は、強制伝播ルールを用いて、スクリプトエンジンバイナリ142(スクリプトエンジン)にフックを施すことで強制的にタグを伝播させ、伝播漏れを解消し、テイント解析機能を付与する。
これによって、バイナリのみしか手に入らないプロプライエタリなスクリプトエンジンに対しても、強制伝播ルールを生成し、人手でのリバースエンジニアリングを要することなく、テイント解析機能の付与を実現できる。
これにより、解析機能付与装置では、スクリプトエンジンやスクリプト言語に対して個別の設計及び実装を要することなく、事前の内部実装の情報なしに、テイント解析を実現できる。
解析機能付与装置100では、スクリプト本体へのコード注入を要さないため、難読化された悪性スクリプトにもテイント解析を適用できる。
解析機能付与装置100では、バイナリ向けのテイント解析ツールの提供する命令レベルでのテイント解析をそのままスクリプトにも適用できるため、細粒度のテイント解析機能の付与を実現できる。
解析機能付与装置100は、入力側のテイントソースにタグを設定し、関数に関する処理(メモリの移動やコピー)に合わせてタグを伝播させていき、テイントシングにおいて、タグが出力されない場合に、型変換関数を伝播漏れ関数として検出する。これによって、伝播漏れを起こす型変換関数を検出することができる。
解析機能付与装置100は、強制伝播ルールを基にして、伝播漏れ関数の入力側の変数に入力したタグを、出力側の変数から強制的に出力させる機能を、スクリプトエンジンバイナリ142に付与することで、伝播漏れを抑止することができる。
このように、解析機能付与装置100によれば、スクリプトエンジンを解析し、テイント解析機能を後付けで付与することにより、多種多様なスクリプト言語のスクリプトエンジンに対して、悪性スクリプトの解析にも適した解析機能の自動的な付与を実現できる。
上述したように、解析機能付与装置100は、多種多様なスクリプト言語で記述される悪性スクリプトの挙動の解析に有用であり、悪性スクリプトに対して、難読化に影響されずに、テイント解析を実施することに適している。このため、解析機能付与装置100は、様々なスクリプトエンジンにテイント解析機能を付与することで、悪性スクリプトのデータフローを解析し、検知などの対策に生かすことが可能である。
ところで、上述した実施例1ではスクリプト言語およびスクリプトエンジンを対象とした説明を記述したが、対象は必ずしもこれらに限定しない。すなわち、解析機能付与装置100は、ソースコードを入力としてバイトコードを生成し、それを仮想機械で解釈して実行する仕組みの言語処理系に対して、同様に構成することができる。そのため、たとえばJavaとその仮想機械のJVMのような、スクリプト言語でない言語および実行エンジンに対しても、実現され得る。
図22は、解析機能付与プログラムを実行するコンピュータの一例を示す図である。コンピュータ1000は、例えば、メモリ1010と、CPU1020と、ハードディスクドライブインタフェース1030と、ディスクドライブインタフェース1040と、シリアルポートインタフェース1050と、ビデオアダプタ1060と、ネットワークインタフェース1070とを有する。これらの各部は、バス1080によって接続される。
メモリ1010は、ROM(Read Only Memory)1011およびRAM1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1031に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1041に接続される。ディスクドライブ1041には、例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース1050には、例えば、マウス1051およびキーボード1052が接続される。ビデオアダプタ1060には、例えば、ディスプレイ1061が接続される。
ここで、ハードディスクドライブ1031は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093およびプログラムデータ1094を記憶する。上記実施形態で説明した各情報は、例えばハードディスクドライブ1031やメモリ1010に記憶される。
また、解析機能付与プログラムは、例えば、コンピュータ1000によって実行される指令が記述されたプログラムモジュール1093として、ハードディスクドライブ1031に記憶される。具体的には、上記実施形態で説明した解析機能付与装置100が実行する各処理が記述されたプログラムモジュール1093が、ハードディスクドライブ1031に記憶される。
また、解析機能付与プログラムによる情報処理に用いられるデータは、プログラムデータ1094として、例えば、ハードディスクドライブ1031に記憶される。そして、CPU1020が、ハードディスクドライブ1031に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出して、上述した各手順を実行する。
なお、解析機能付与プログラムに係るプログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1031に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ1041等を介してCPU1020によって読み出されてもよい。あるいは、解析機能付与プログラムに係るプログラムモジュール1093やプログラムデータ1094は、LANやWAN(Wide Area Network)等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
以上、本発明者によってなされた発明を適用した実施形態について説明したが、本実施形態による本発明の開示の一部をなす記述および図面により本発明は限定されることはない。すなわち、本実施形態に基づいて当業者等によりなされる他の実施形態、実施例および運用技術等は全て本発明の範疇に含まれる。
100 解析機能付与装置
110 通信制御部
120 入力部
130 出力部
140 記憶部
141 テストスクリプト
142 スクリプトエンジンバイナリ
143 実行トレースDB
144 テイント解析ツール
145 強制伝播ルールDB
150 制御部
151 受付部
152 実行トレース取得部
153 型変換関数検出部
154 入出力検出部
155 伝播漏れ検出部
156 強制伝播ルール生成部
157 テイント解析機能付与部
110 通信制御部
120 入力部
130 出力部
140 記憶部
141 テストスクリプト
142 スクリプトエンジンバイナリ
143 実行トレースDB
144 テイント解析ツール
145 強制伝播ルールDB
150 制御部
151 受付部
152 実行トレース取得部
153 型変換関数検出部
154 入出力検出部
155 伝播漏れ検出部
156 強制伝播ルール生成部
157 テイント解析機能付与部
Claims (5)
- テストスクリプトをスクリプトエンジンに入力して実行させることで、分岐命令およびメモリアクセスに関する複数の実行トレースを取得する実行トレース取得部と、
前記複数の実行トレースを基にして類似する系列を特定し、特定した系列に含まれる関数呼び出しを型変換関数の候補として検出する型変換関数検出部と、
前記実行トレースのうち、前記型変換関数の候補引数および返り値の変数から、入出力の関係にある変数を検出する入出力検出部と、
前記型変換関数の入出力の関係にある変数の型変数関数に対してテイント解析を実行し、入出力間でタグが伝播しない型変数関数を示す伝播漏れ関数を検出する伝播漏れ検出部と、
前記伝播漏れ関数に対して、前記タグを強制的に伝播させる強制伝播ルールを生成する生成部と、
前記強制伝播ルールを基にして、前記スクリプトエンジンにテイント解析機能を付与する解析機能付与部と
を備えることを特徴とする解析機能付与装置。 - 前記伝播漏れ検出部は、入力側の変数にタグを設定し、前記型変換関数に関する処理に応じて、タグを伝播させていき、出力側の変数において、前記タグが出力されない場合に、前記型変換関数を、前記伝播漏れ関数として検出することを特徴とする請求項1に記載の解析機能付与装置。
- 前記解析機能付与部は、前記強制伝播ルールを基にして、前記伝播漏れ関数の入力側の変数に入力したタグが、出力側の変数から出力される機能を、前記スクリプトエンジンに付与することを特徴とする請求項1または2に記載の解析機能付与装置。
- 解析機能付与装置で実行される解析機能付与方法であって、
テストスクリプトをスクリプトエンジンに入力して実行させることで、分岐命令およびメモリアクセスに関する複数の実行トレースを取得する実行トレース取得工程と、
前記複数の実行トレースを基にして類似する系列を特定し、特定した系列に含まれる関数呼び出しを型変換関数の候補として検出する型変換関数検出工程と、
前記実行トレースのうち、前記型変換関数の候補引数および返り値の変数から、入出力の関係にある変数を検出する入出力検出工程と、
前記型変換関数の入出力の関係にある変数の型変数関数に対してテイント解析を実行し、入出力間でタグが伝播しない型変数関数を示す伝播漏れ関数を検出する伝播漏れ検出工程と、
前記伝播漏れ関数に対して、前記タグを強制的に伝播させる強制伝播ルールを生成する生成工程と、
前記強制伝播ルールを基にして、前記スクリプトエンジンにテイント解析機能を付与する解析機能付与工程と
を含んだことを特徴とする解析機能付与方法。 - テストスクリプトをスクリプトエンジンに入力して実行させることで、分岐命令およびメモリアクセスに関する複数の実行トレースを取得する実行トレース取得手順と、
前記複数の実行トレースを基にして類似する系列を特定し、特定した系列に含まれる関数呼び出しを型変換関数の候補として検出する型変換関数検出手順と、
前記実行トレースのうち、前記型変換関数の候補引数および返り値の変数から、入出力の関係にある変数を検出する入出力検出手順と、
前記型変換関数の入出力の関係にある変数の型変数関数に対してテイント解析を実行し、入出力間でタグが伝播しない型変数関数を示す伝播漏れ関数を検出する伝播漏れ検出部と、
前記伝播漏れ関数に対して、前記タグを強制的に伝播させる強制伝播ルールを生成する生成手順と、
前記強制伝播ルールを基にして、前記スクリプトエンジンにテイント解析機能を付与する解析機能付与手順と
をコンピュータに実行させることを特徴とする解析機能付与プログラム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022556760A JP7452691B2 (ja) | 2020-10-14 | 2020-10-14 | 解析機能付与装置、解析機能付与方法および解析機能付与プログラム |
US18/024,777 US20230418941A1 (en) | 2020-10-14 | 2020-10-14 | Device for providing analysis capability, method for providing analysis capability, and program for providing analysis capability |
PCT/JP2020/038801 WO2022079840A1 (ja) | 2020-10-14 | 2020-10-14 | 解析機能付与装置、解析機能付与方法および解析機能付与プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2020/038801 WO2022079840A1 (ja) | 2020-10-14 | 2020-10-14 | 解析機能付与装置、解析機能付与方法および解析機能付与プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2022079840A1 true WO2022079840A1 (ja) | 2022-04-21 |
Family
ID=81208967
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2020/038801 WO2022079840A1 (ja) | 2020-10-14 | 2020-10-14 | 解析機能付与装置、解析機能付与方法および解析機能付与プログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230418941A1 (ja) |
JP (1) | JP7452691B2 (ja) |
WO (1) | WO2022079840A1 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024214261A1 (ja) * | 2023-04-13 | 2024-10-17 | 日本電信電話株式会社 | 解析装置、解析方法及び解析プログラム |
WO2024214262A1 (ja) * | 2023-04-13 | 2024-10-17 | 日本電信電話株式会社 | 解析機能付与装置、解析機能付与方法及び解析機能付与プログラム |
WO2024214260A1 (ja) * | 2023-04-13 | 2024-10-17 | 日本電信電話株式会社 | 解析装置、解析方法及び解析プログラム |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020075335A1 (ja) * | 2018-10-11 | 2020-04-16 | 日本電信電話株式会社 | 解析機能付与装置、解析機能付与方法及び解析機能付与プログラム |
-
2020
- 2020-10-14 JP JP2022556760A patent/JP7452691B2/ja active Active
- 2020-10-14 WO PCT/JP2020/038801 patent/WO2022079840A1/ja active Application Filing
- 2020-10-14 US US18/024,777 patent/US20230418941A1/en active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020075335A1 (ja) * | 2018-10-11 | 2020-04-16 | 日本電信電話株式会社 | 解析機能付与装置、解析機能付与方法及び解析機能付与プログラム |
Non-Patent Citations (2)
Title |
---|
KANG, MIN-GYUNG; MCCAMANT, STEPHEN; POOKSANKAM, PONGSIN; SONG, DAWN: "DTA++: Dynamic Taint Analysis with Targeted Control-Frow Propagation", PROCEEDINGS OF THE 18TH ANNUAL NETWORK AND DISTRIBUTED SYSTEM SECURITY SYMPOSIUM, 25 January 2021 (2021-01-25), pages 1 - 14, XP009537097 * |
KAWAKOYA, YUHEI ET AL.: "Tracing Malicious Code with Taint Propagation", IPSJ JOURNAL OF INFORMATION PROCESSING SOCIETY OF JAPAN, vol. 54, no. 8, pages 2079 - 2089, XP055370788 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024214261A1 (ja) * | 2023-04-13 | 2024-10-17 | 日本電信電話株式会社 | 解析装置、解析方法及び解析プログラム |
WO2024214262A1 (ja) * | 2023-04-13 | 2024-10-17 | 日本電信電話株式会社 | 解析機能付与装置、解析機能付与方法及び解析機能付与プログラム |
WO2024214260A1 (ja) * | 2023-04-13 | 2024-10-17 | 日本電信電話株式会社 | 解析装置、解析方法及び解析プログラム |
Also Published As
Publication number | Publication date |
---|---|
JP7452691B2 (ja) | 2024-03-19 |
JPWO2022079840A1 (ja) | 2022-04-21 |
US20230418941A1 (en) | 2023-12-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2022079840A1 (ja) | 解析機能付与装置、解析機能付与方法および解析機能付与プログラム | |
JP7115552B2 (ja) | 解析機能付与装置、解析機能付与方法及び解析機能付与プログラム | |
US10839085B1 (en) | Detection and healing of vulnerabilities in computer code | |
JP5844809B2 (ja) | プログラミングルール違反に対するソースコードマイニング | |
Feng et al. | Apposcopy: Semantics-based detection of android malware through static analysis | |
JP7287480B2 (ja) | 解析機能付与装置、解析機能付与方法及び解析機能付与プログラム | |
JP7517585B2 (ja) | 解析機能付与装置、解析機能付与プログラム及び解析機能付与方法 | |
Alazab et al. | Malware detection based on structural and behavioural features of API calls | |
Devesa et al. | Automatic behaviour-based analysis and classification system for malware detection | |
WO2018066516A1 (ja) | 攻撃コード検知装置、攻撃コード検知方法及び攻撃コード検知プログラム | |
JP6592177B2 (ja) | 攻撃コード検知装置、攻撃コード検知方法及び攻撃コード検知プログラム | |
Gülmez et al. | Graph-based malware detection using opcode sequences | |
Yesir et al. | Malware detection and classification using fasttext and bert | |
JP7568131B2 (ja) | 解析機能付与方法、解析機能付与装置及び解析機能付与プログラム | |
CN111291377A (zh) | 一种应用漏洞的检测方法及系统 | |
KR102110735B1 (ko) | 취약점 탐색을 위한 바이너리 재생성 방법 및 시스템 | |
Kim et al. | Polymorphic attacks against sequence-based software birthmarks | |
JP7568129B2 (ja) | 解析機能付与方法、解析機能付与装置及び解析機能付与プログラム | |
JPWO2017216924A1 (ja) | 鍵生成源特定装置、鍵生成源特定方法及び鍵生成源特定プログラム | |
CN115766090A (zh) | 一种多特征融合神经网络网络安全检测方法 | |
Usui et al. | Script Tainting Was Doomed From The Start (By Type Conversion): Converting Script Engines into Dynamic Taint Analysis Frameworks | |
Kumar | A framework for malware detection with static features using machine learning algorithms | |
Dornhackl et al. | Defining malicious behavior | |
WO2023067663A1 (ja) | 解析機能付与方法、解析機能付与装置及び解析機能付与プログラム | |
Vijay et al. | Android-based smartphone malware exploit prevention using a machine learning-based runtime detection system |
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: 20957669 Country of ref document: EP Kind code of ref document: A1 |
|
ENP | Entry into the national phase |
Ref document number: 2022556760 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: 20957669 Country of ref document: EP Kind code of ref document: A1 |