WO2022201323A1 - シンボル絞り込み装置、プログラム解析装置、シンボル抽出方法、プログラム解析方法、及び、非一時的なコンピュータ可読媒体 - Google Patents

シンボル絞り込み装置、プログラム解析装置、シンボル抽出方法、プログラム解析方法、及び、非一時的なコンピュータ可読媒体 Download PDF

Info

Publication number
WO2022201323A1
WO2022201323A1 PCT/JP2021/012047 JP2021012047W WO2022201323A1 WO 2022201323 A1 WO2022201323 A1 WO 2022201323A1 JP 2021012047 W JP2021012047 W JP 2021012047W WO 2022201323 A1 WO2022201323 A1 WO 2022201323A1
Authority
WO
WIPO (PCT)
Prior art keywords
symbol
code block
code
backdoor
program
Prior art date
Application number
PCT/JP2021/012047
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 PCT/JP2021/012047 priority Critical patent/WO2022201323A1/ja
Priority to JP2023508228A priority patent/JPWO2022201323A5/ja
Priority to US18/267,690 priority patent/US20240045973A1/en
Publication of WO2022201323A1 publication Critical patent/WO2022201323A1/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
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/53Decompilation; Disassembly
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding

Definitions

  • the present disclosure relates to a symbol narrowing device, a program analysis device, a symbol extraction method, a program analysis method, and a non-transitory computer-readable medium.
  • a "backdoor” referred to in this specification is, for example, a program that includes multiple functions that make up software, and that is embedded as part of the program and is not known to the user and is not desired. It can be defined as a function.
  • Non-Patent Document 1 describes extracting backdoor code candidates by scoring the code contained in the binary to be inspected.
  • a function that performs static data comparison is specified from the code included in the target binary, and how much the comparison result by the specified function is in the subsequent execution path.
  • Candidates for backdoor code are extracted by scoring whether or not they have an impact.
  • Another object of the present invention is to provide a symbol narrowing device, a program analysis device, a symbol extraction method, a program analysis method, and a non-transitory computer-readable medium.
  • a symbol narrowing-down device includes symbol extracting means for extracting a plurality of predetermined symbols from code included in the binary of a program, and code included in the binary of the program, a first code block extracting means for extracting a code block having a specific property as a first code block to be analyzed as to whether or not it is a backdoor; second code block extracting means for extracting, as a plurality of second code blocks, a plurality of code blocks for accessing each of the predetermined symbols of the backdoor to be analyzed among the plurality of second code blocks; symbol narrowing means for extracting a symbol accessed by said second code block that satisfies a condition on a control flow according to type from said plurality of predetermined symbols; and said symbol narrowing means. and symbol output means for outputting the extracted symbol.
  • a symbol extraction method is a symbol extraction method executed by a symbol narrowing-down device, comprising a symbol extraction step of extracting a plurality of predetermined symbols from codes included in a binary of a program; a first code block extracting step of extracting a code block having a specific property from among codes included in the binary of the program as a first code block to be analyzed as to whether or not it is a backdoor; a second code block extracting step of extracting, as a plurality of second code blocks, a plurality of code blocks for accessing each of the plurality of predetermined symbols from the code included in the binary of the program; Symbols accessed by the second code block that satisfy a condition on the control flow according to the type of backdoor to be analyzed, among the plurality of predetermined symbols. and a symbol output step of outputting the symbols extracted in the symbol narrowing step.
  • a non-transitory computer-readable medium includes a symbol extraction process for extracting a plurality of predetermined symbols from code included in a binary of a program, and a code included in the binary of the program.
  • a first code block extracting process for extracting a code block having a specific property from among the codes included in the binary of the program as a first code block to be analyzed as to whether or not it is a backdoor;
  • a second code block extracting process for extracting, as a plurality of second code blocks, a plurality of code blocks for accessing each of the plurality of predetermined symbols from the plurality of second code blocks;
  • a symbol narrowing process for extracting, from the plurality of predetermined symbols, a symbol accessed by the second code block that satisfies a condition on the control flow according to the type of the backdoor;
  • a program for causing a computer to execute a symbol output process for outputting the symbols extracted in the narrowing process is stored.
  • a symbol narrowing device a program analysis device, a symbol extraction method, a program analysis method, capable of extracting symbols corresponding to the type of backdoor to be analyzed from among many symbols included in the program, And, a non-transitory computer-readable medium can be provided.
  • FIG. 1 is a block diagram showing a configuration example of a symbol narrowing device according to Embodiment 1;
  • FIG. 2 is a flow chart showing an example of the flow of processing of the symbol narrowing down device shown in FIG. 1;
  • 2 is a block diagram showing a configuration example of a program analysis device including the symbol narrowing device shown in FIG. 1;
  • FIG. 4 is a flow chart showing an example of the flow of processing of the program analysis device shown in FIG. 3;
  • FIG. 11 is a block diagram showing a configuration example of a symbol narrowing device according to Embodiment 2;
  • FIG. 3 is a schematic diagram showing an example of a control flow graph of a certain program for explaining a dead code block, which is an example of a code block with specific properties;
  • FIG. 3 is a schematic diagram showing an example of a control flow graph of a certain program for explaining a dead code block, which is an example of a code block with specific properties
  • FIG. 3 is a schematic diagram showing an example of a control flow graph of a certain program for explaining a dead code block, which is an example of a code block with specific properties
  • FIG. 4 is a schematic diagram showing an example of a control flow graph of a certain program for explaining another example of code blocks with specific properties
  • 6 is a flow chart showing an example of the flow of processing of the symbol narrowing-down device shown in FIG. 5
  • 6 is a schematic diagram showing an example of a control flow graph of a certain program for explaining symbol narrowing processing by the symbol narrowing down device shown in FIG. 5;
  • FIG. 5 is a schematic diagram showing an example of a control flow graph of a certain program for explaining symbol narrowing processing by the symbol narrowing down device shown in FIG. 5;
  • FIG. 5 is a schematic diagram showing an example of a control flow graph of
  • FIG. 6 is a schematic diagram showing an example of a control flow graph of a certain program for explaining symbol narrowing processing by the symbol narrowing down device shown in FIG. 5;
  • FIG. 6 is a block diagram showing a configuration example of a program analysis device including the symbol narrowing-down device shown in FIG. 5;
  • FIG. 14 is a flow chart showing an example of the flow of processing of the program analysis device shown in FIG. 13;
  • FIG. 13 is a diagram showing a hardware configuration example of a program analysis apparatus according to Embodiment 3; It is a block diagram which shows the structural example of the program-analysis apparatus of a conceptual stage.
  • FIG. 16 is a block diagram showing a configuration example of the program analysis device 50 in the conceptual stage prior to the first embodiment.
  • the program analysis device 50 includes a code block extraction section 51 , a backdoor score calculation section 52 and an analysis result output section 53 .
  • the code block extraction unit 51 extracts all code blocks with specific properties from the code included in the binary of the program to be analyzed (hereinafter referred to as the target binary).
  • the code block described here refers to, for example, a group of codes in units of functions or basic blocks in a program.
  • a code block with a specific property is, for example, a dead code block.
  • a dead code block is a code block that cannot be reached by normal control flow when the program is executed.
  • the backdoor score calculation unit 52 calculates a score indicating the possibility that the code block is a backdoor code, or , a backdoor score, which is a score indicating the magnitude of the impact on the system when the code block is executed, is calculated.
  • a system described here is, for example, a computer including an environment for executing a program to be analyzed.
  • the backdoor score calculation unit 52 assigns a preset score for the operation to the code block. Perform processing to add to the backdoor score.
  • the predetermined sensitive operation described here is, for example, an operation that, if executed illegally, is considered to have a serious impact on the system including the program and the environment in which the program is executed, and the user (for example, the program It is an operation predetermined by a requester who requests an inspection of a person, an analyst who performs an inspection, etc.).
  • the source code of a high-level language such as C language is mainly composed of functions and variables with names that humans can understand and that are easy to understand.
  • the compiler compiles the source code, it creates symbols to keep track of what binary code or data is associated with the names of such functions and variables in the source code. Generate. A large number of symbols generated in this way exist in the program.
  • the predetermined sensitive operations described above also include operations that access these predetermined symbols.
  • the analysis result output unit 53 outputs the code block extracted by the code block extraction unit 51 and the backdoor score for the code block calculated by the backdoor score calculation unit 52 as analysis results.
  • the program analysis device 50 can present code blocks, which are candidates for backdoor code contained in the program to be analyzed, and backdoor scores corresponding thereto, for example, to the program analyst. Therefore, the program analyst can extract backdoor code candidates from the program without comparing the code of the program to be analyzed with the specifications or manually examining the code of the program in detail. can.
  • the program analysis device 50 uses a large number of predetermined symbols for score calculation without narrowing down, even when the types of backdoors to be analyzed are different. Therefore, depending on the type of backdoor to be analyzed, the program analysis apparatus 50 may have used symbols that do not contribute to the increase or decrease of the score for calculating the score.
  • the symbol narrowing-down device 10 according to Embodiment 1 is found, which is capable of extracting symbols corresponding to the type of backdoor to be analyzed from among many symbols included in the program to be analyzed.
  • FIG. 1 is a block diagram showing a configuration example of a symbol narrowing device 10 according to Embodiment 1.
  • the symbol narrowing-down device 10 selects the type of backdoor to be analyzed from among the many symbols included in the program to be analyzed (that is, the type of backdoor candidate to be extracted). Symbols can be extracted.
  • the program analysis device can calculate the backdoor score by excluding symbols that hardly contribute to increase or decrease of the backdoor score, depending on the type of backdoor to be analyzed. A specific description will be given below.
  • the symbol narrowing device 10 includes a symbol extraction unit 11, a first code block extraction unit 12, a second code block extraction unit 13, a symbol narrowing unit 14, and a symbol output unit 15. Prepare.
  • the symbol extraction unit 11 extracts a plurality of predetermined symbols from the code included in the binary of the program to be analyzed (hereinafter referred to as the target binary).
  • the plurality of predetermined symbols mentioned here means the plurality of symbols determined based on at least one of the symbol type and scope level attribute information of the symbols among all the symbols included in the target binary.
  • Symbol types include, for example, data types and function types.
  • the symbol extraction unit 11 extracts a plurality of predetermined symbols having the same symbol type and scope level from among the codes included in the target binary.
  • the first code block extracting unit 12 extracts all code blocks with specific properties from among the codes included in the target binary as first code blocks to be analyzed for whether or not they are backdoors.
  • the code block described here refers to, for example, a group of codes in units of functions or basic blocks in a program.
  • a code block with a specific property is, for example, a dead code block.
  • a dead code block is a code block that cannot be reached by normal control flow when the program is executed.
  • the second code block extraction unit 13 extracts all code blocks that perform a predetermined sensitive operation from among the codes included in the target binary.
  • the predetermined sensitive operation described here is, for example, an operation that, if executed illegally, is considered to have a serious impact on the system including the program and the environment in which the program is executed, and is predetermined by the user. operation.
  • a system is, for example, a computer including an environment for executing a program to be analyzed.
  • the second code block extraction unit 13 particularly extracts a plurality of code blocks that access each of the plurality of predetermined symbols extracted by the symbol extraction unit 11 as a plurality of second code blocks. Note that access to a given symbol is included in the given sensitive operation.
  • the symbol narrowing unit 14 selects a second code block among the plurality of second code blocks extracted by the second code block extracting unit 13 that satisfies a condition on the control flow according to the type of backdoor to be analyzed. 2 code blocks. After that, the symbol narrowing unit 14 extracts symbols accessed by the extracted second code block from among the plurality of predetermined symbols extracted by the symbol extracting unit 11 .
  • the types of backdoors described here include, for example, a backdoor that illegally takes out sensitive information inside the program, and a backdoor that illegally takes sensitive information outside the program into the program.
  • the symbol narrowing-down unit 14 extracts a second code block that satisfies the conditions on the control flow according to the backdoor type, and extracts a symbol that accesses the extracted second code block. Details of the conditions on the control flow according to the backdoor type will be described in detail in the second embodiment.
  • the symbol output unit 15 outputs the symbols narrowed down by the symbol narrowing-down unit 14 to the outside of the symbol narrowing-down device 10 .
  • the symbol output from the symbol narrowing device 10 is a score indicating the possibility that the first code block to be analyzed is a backdoor code, or an effect on the system when the first code block to be analyzed is executed. It is used to calculate the backdoor score, which is a score that indicates the magnitude of the impact.
  • FIG. 2 is a flowchart showing an example of the processing flow of the symbol narrowing-down device 10. As shown in FIG.
  • the symbol extraction unit 11 extracts a plurality of predetermined symbols determined based on at least one of the symbol type and scope level attribute information of the symbol from among the codes included in the target binary. symbol is extracted (step S101).
  • the first code block extraction unit 12 extracts a code block having a specific property from among the codes included in the target binary as a first code block to be analyzed for whether or not it is a backdoor (step S102).
  • the second code block extraction unit 13 extracts, as a plurality of second code blocks, code blocks for accessing the plurality of predetermined symbols extracted by the symbol extraction unit 11 (step S103). .
  • the symbol narrowing-down unit 14 selects the symbols accessed by the second code blocks that satisfy the conditions on the control flow according to the type of backdoor to be analyzed from among the plurality of second code blocks. , from a plurality of predetermined symbols (step S104). Thereafter, the symbol output unit 15 outputs the symbols narrowed down by the symbol narrowing-down unit 14 to the outside of the symbol narrowing-down device 10 (step S105).
  • the symbol narrowing-down device 10 selects the type of backdoor to be analyzed from many symbols included in the program to be analyzed (that is, what type of backdoor symbols can be extracted). As a result, depending on the type of backdoor analyzed, symbols that hardly contribute to the increase or decrease of the backdoor score can be excluded from the targets used for backdoor score calculation.
  • FIG. 3 is a block diagram showing a configuration example of the program analysis device 1 in which the symbol narrowing device 10 is installed.
  • the program analysis device 1 includes a symbol narrowing device 10, a backdoor score calculation unit 17, and an analysis result output unit 18.
  • the backdoor score calculation unit 17 calculates the operation content (specifically, a predetermined backdoor score).
  • the backdoor score calculation unit 17 calculates the backdoor score based on at least the contents of the symbols narrowed down by the symbol narrowing-down device 10 that are accessed by the first code block or code blocks that are child nodes thereof. calculate.
  • the analysis result output unit 18 outputs the first code block extracted by the first code block extraction unit 12 and the backdoor score for the first code block calculated by the backdoor score calculation unit 17 as an analysis result. do. At this time, the analysis result output unit 18 can output the analysis result in a manner in which, for example, a backdoor score for the code block is assigned to the first code block.
  • FIG. 4 is a flowchart showing an example of the processing flow of the program analysis device 1. As shown in FIG. In FIG. 4, symbol narrowing processing by the symbol narrowing-down device 10 is omitted.
  • a backdoor score is calculated based on the content of the operation (specifically, the content of the predetermined sensitive operation).
  • the backdoor score calculation unit 17 calculates the backdoor score based on at least the contents of the symbols narrowed down by the symbol narrowing-down device 10 that are accessed by the first code block or code blocks that are child nodes thereof.
  • the analysis result output unit 18 outputs the first code block extracted by the first code block extraction unit 12 and the backdoor score for the first code block calculated by the backdoor score calculation unit 17 as the analysis result. (step S107).
  • the program analysis apparatus 1 presents the first code block, which is a backdoor code candidate included in the program to be analyzed, and the corresponding backdoor score to, for example, the program analyst. can do.
  • the program analyst can extract backdoor code candidates from the program without comparing the code of the program to be analyzed with the specifications or manually examining the code of the program in detail. can be done.
  • the program analysis apparatus 1 uses the symbol narrowing-down apparatus 10 to exclude symbols that hardly contribute to the increase or decrease of the backdoor score, depending on the type of backdoor to be analyzed. A score can be calculated.
  • FIG. 5 is a block diagram showing a configuration example of the symbol narrowing device 20 according to the second embodiment.
  • the symbol narrowing device 20 includes a symbol extraction unit 21, a first code block extraction unit 22, a second code block extraction unit 23, a symbol narrowing unit 24, a symbol output unit 25, a target a condition table 26;
  • the symbol extraction unit 21 extracts a plurality of predetermined symbols determined based on at least one attribute information of the symbol type and scope level, among all the symbols included in the target binary.
  • the first code block extracting unit 22 extracts all code blocks with specific properties from among the codes included in the target binary as first code blocks to be analyzed for whether or not they are backdoors.
  • the first code block extraction unit 22 performs static analysis and the like on the target binary to create a control flow graph of the entire program. After that, the first code block extracting unit 22 extracts all code blocks having specific properties as first code blocks from the codes included in the target binary based on information such as the created control flow graph.
  • a code block with a specific property is, for example, a dead code block, as described above.
  • a dead code block is a code block that cannot be reached by normal control flow when the program is executed.
  • FIG. 6 and 7 are schematic diagrams showing examples of control flow graphs of a certain program for explaining dead code blocks.
  • solid-line circles represent normal nodes
  • dashed-line circles represent dead code block nodes
  • arrows represent control flows (same in FIGS. 8 and 9 below). ).
  • the first code block extraction unit 22 extracts nodes that do not have parent nodes on the control flow graph as dead code blocks (ie, first code blocks). Further, as shown in FIG. 7, the first code block extracting unit 22 extracts not only nodes that do not have parent nodes on the control flow graph, but also their child nodes as dead code blocks (that is, first code blocks). You may
  • the dead code block described above will not be executed as long as normal input values to the program are given. However, as shown in Figure 8, if there is a vulnerability in the program, the dead code block can be called and executed by the vulnerable function under certain conditions such as giving special input values. be.
  • code blocks with specific properties are not limited to the dead code blocks described above.
  • a code block that does not pass through a predetermined function that is always passed through when a program is normally executed such as an authentication function or a parser function, may be defined as a code block that has a specific property.
  • an authentication function as a starting point on the control flow.
  • the first code block extraction unit 22 may extract code blocks that do not pass through the authentication function as code blocks with specific properties.
  • the second code block extraction unit 23 extracts all code blocks that perform predetermined sensitive operations from among the codes included in the target binary.
  • a predetermined sensitive operation is, for example, an operation that, if executed illegally, is considered to have a serious impact on the system including the program and the environment in which the program is executed. , a requester requesting program inspection, an analyst who performs inspection, etc.).
  • a predetermined sensitive operation includes an operation predetermined by the user to call a predetermined function, an operation to access a predetermined symbol (an operation to access a predetermined variable, or an operation to execute a predetermined instruction). including).
  • the operation of calling a predetermined function includes, for example, an operation of calling at least one of a system call, a predetermined library function, and a predetermined API (Application Programming Interface).
  • An operation that accesses a predetermined symbol includes, for example, an operation that accesses a global variable of the program.
  • the second code block extraction unit 23 extracts, in particular, the plurality of code blocks that access each of the plurality of predetermined symbols extracted by the symbol extraction unit 21 as the plurality of second code blocks.
  • the symbol narrowing unit 24 selects a second code block among the plurality of second code blocks extracted by the second code block extracting unit 23 that satisfies the conditions on the control flow according to the type of backdoor to be analyzed. 2 code blocks. After that, the symbol narrowing unit 24 extracts symbols accessed by the specified second code block from among the plurality of predetermined symbols extracted by the symbol extracting unit 21 .
  • the types of backdoors described here include, for example, the type of backdoor that illegally takes out sensitive information inside the program, and the type that illegally takes in sensitive information from the outside of the program. There are backdoors. After specifying the second code block that satisfies the conditions on the control flow corresponding to the backdoor type, the symbol narrowing unit 24 extracts the symbols that access the specified second code block.
  • the symbol narrowing unit 24 first extracts a plurality of second code blocks extracted by the second code block extracting unit 23. Of these, the first code block or its child node, the second code block, and the second code block that can be traced from the normal control flow (in other words, any of the multiple code blocks that make up the normal control flow). and specify. After that, the symbol narrowing unit 24 selects the first code block or the second code block which is a child node of the first code block and the second code block which can be traced from the normal control flow, among the plurality of predetermined symbols extracted by the symbol extracting unit 21. , to extract symbols that are accessed from any of the This also excludes symbols that are not accessed by the second code block that can be traced from the normal control flow, that is, symbols that are not used during normal execution.
  • the symbol narrowing-down unit 24 first extracts a plurality of second code blocks extracted by the second code block extracting unit 23. Among the code blocks, a second code block that is the first code block or its child node and accesses an external resource (external to the program) is identified. After that, the symbol narrowing unit 24 extracts symbols accessed by the specified second code block from among the plurality of predetermined symbols extracted by the symbol extracting unit 21 .
  • the target condition table 26 stores conditions according to the types of backdoors to be analyzed, as described above.
  • the symbol output unit 25 outputs the symbols narrowed down by the symbol narrowing-down unit 24 to the outside of the symbol narrowing-down device 20 .
  • the symbol output from the symbol narrowing device 20 is a score indicating the possibility that the first code block to be analyzed is a backdoor code, or an effect on the system when the first code block to be analyzed is executed. It is used to calculate the backdoor score, which is a score that indicates the magnitude of the impact.
  • FIG. 10 is a flowchart showing an example of the processing flow of the symbol narrowing device 20.
  • FIG. 11 and 12 are schematic diagrams showing an example of a control flow graph of a certain program for explaining symbol narrowing processing by the symbol narrowing down device 20.
  • FIG. 11 shows the state before symbol narrowing down
  • FIG. 12 shows the state after symbol narrowing down.
  • the first code block extraction unit 22 performs static analysis and the like on the target binary to create a control flow graph (step S201).
  • the symbol extraction unit 21 extracts a plurality of predetermined symbols (set S ) is extracted (step S202).
  • set S a plurality of predetermined symbols
  • symbols S1 to S6 are extracted as predetermined symbols (that is, symbols S1 to S6 are extracted as elements of set S).
  • the first code block extraction unit 22 extracts a plurality of code blocks with specific properties from among the codes included in the target binary to determine whether they are backdoors or not. All of them are extracted as the first code block (set D) to be analyzed (step S203).
  • the first code block (set D) is extracted as the first code block (set D) to be analyzed (step S203).
  • eight dead code blocks D1-D8, which are nodes without parent nodes on the control flow graph, are extracted as the first code blocks D1-D8 to be scored (that is, the first code blocks D1-D8). 1 code blocks D1 to D8 are extracted as elements of the set D).
  • the second code block extraction unit 23 extracts all code blocks that perform a predetermined sensitive operation from among the codes included in the target binary.
  • the second code block extraction unit 23 extracts a plurality of code blocks for accessing each of the plurality of predetermined symbols (set S) extracted by the symbol extraction unit 21, particularly a plurality of second code blocks.
  • Set E is extracted (step S204).
  • six code blocks E1-E6, which are nodes that access at least one of the symbols S1-S6, are extracted as second code blocks E1-E6 (that is, the second code blocks E1-E6).
  • 2 code blocks E1 to E6 are extracted as elements of set E).
  • the identification of the sets Ea and Eb may be performed by the symbol narrowing section 24 or may be performed by the second code block extracting section 23 .
  • the symbols are narrowed down by the symbol narrowing-down unit 24 (steps S206 to S210).
  • a specific flow of processing by the symbol narrowing-down unit 24 is as follows. Here, as an example, the flow of processing for detecting a backdoor code that illegally takes out sensitive information in a program will be described.
  • one unselected symbol to be inspected is selected from a plurality of predetermined symbols (set S) extracted by the symbol extraction unit 21 (step S206).
  • one or more second code blocks that access the selected symbol are specified from among the plurality of second code blocks (set E) extracted by the second code block extraction unit 23 (step S207). .
  • any of the one or more second code blocks accessing the symbol under selection includes an element of the set Ea, and any of the one or more second code blocks accessing the symbol under selection is , is determined whether or not the elements of the set Eb are included (step S208). That is, any of the one or more second code blocks that access the symbol being selected includes a second code block that can be traced from the normal control flow, and one or more second code blocks that access the symbol being selected. A determination is made whether any of the code blocks contain the first code block or its child node, the second code block.
  • any of the one or more second code blocks accessing the symbol being selected includes elements of the set Ea, and any of the one or more second code blocks accessing the symbol being selected is , the set Eb (YES in step S208), the selected symbol is extracted as a symbol to be used for score calculation (step S209). Otherwise (NO in step S208), the selected symbol is not extracted as a symbol used for score calculation.
  • step S210 After that, if there are symbols that have not been selected as inspection objects (YES in step S210), the symbols that have not been selected as inspection objects are selected (step S206), and steps S207 to S209 are performed. If there are no unselected symbols to be inspected (NO in step S210), the symbols narrowed down for use in score calculation are output from the symbol output unit 25 (step S211).
  • the symbol narrowing-down device 20 selects the type of backdoor to be analyzed from among a large number of symbols included in the program to be analyzed (that is, what type of backdoor symbols can be extracted). As a result, depending on the type of backdoor to be analyzed, symbols that hardly contribute to the increase or decrease of the backdoor score can be excluded from the targets used in calculating the backdoor score.
  • FIG. 13 is a block diagram showing a configuration example of the program analysis device 2 in which the symbol narrowing device 20 is installed.
  • the program analysis device 2 includes a symbol narrowing device 20, a backdoor score calculation unit 27, and an analysis result output unit 28.
  • the backdoor score calculation unit 27 calculates a backdoor score for each first code block extracted by the first code block extraction unit 22 based on the operation content of the first code block or its child node code block. Calculate Here, the backdoor score calculation unit 27 calculates the backdoor score based on at least the contents of the symbols narrowed down by the symbol narrowing-down device 20 that are accessed by the first code block or code blocks that are child nodes thereof. calculate.
  • the analysis result output unit 28 outputs the first code block extracted by the first code block extraction unit 22 and the backdoor score for the first code block calculated by the backdoor score calculation unit 27 as an analysis result. do.
  • the output format of each first code block by the analysis result output unit 28 may be symbol information in the target binary, the relative address of the code block, the code block name named when the program was analyzed, and the like. Also, the first code block may be output with a backdoor score assigned to the code block.
  • the program to be analyzed is in binary format and the binary of the program is input. good.
  • the source code to be analyzed may be compiled in the symbol narrowing device 20 or the program analysis device 2 and converted into a binary format.
  • the symbol extraction unit 21, the first code block extraction unit 22, the second code block extraction unit 23, the symbol narrowing unit 24, the symbol output unit 25, the backdoor score calculation unit 27, or a processing unit (not shown) can extract the source code Information obtained from may be used for analysis as appropriate.
  • FIG. 14 is a flowchart showing an example of the processing flow of the program analysis device 2. As shown in FIG. In FIG. 14, symbol narrowing processing by the symbol narrowing device 20 is omitted.
  • the backdoor score calculation unit 27 calculates the backdoor score based on at least the contents of the symbols narrowed down by the symbol narrowing-down device 20 that are accessed by the first code block or code blocks that are child nodes thereof.
  • the analysis result output unit 28 outputs the first code block extracted by the first code block extraction unit 22 and the backdoor score for the first code block calculated by the backdoor score calculation unit 27 as the analysis result. (step S213).
  • the program analysis apparatus 2 presents the first code block, which is a backdoor code candidate included in the program to be analyzed, and the corresponding backdoor score to the program analyst, for example. can do.
  • the program analyst can extract backdoor code candidates from the program without comparing the code of the program to be analyzed with the specifications or manually examining the code of the program in detail. can be done.
  • the program analysis apparatus 2 uses the symbol narrowing-down apparatus 20 to exclude symbols that hardly contribute to the increase or decrease of the backdoor score, depending on the type of backdoor to be analyzed. A score can be calculated.
  • FIG. 15 is a diagram showing a hardware configuration example of the symbol narrowing down device 100 according to the third embodiment.
  • symbol narrowing device 100 comprises processor 101 and memory 102 .
  • the processor 101 may be, for example, a microprocessor, an MPU (Micro Processing Unit), or a CPU (Central Processing Unit).
  • Processor 101 may include multiple processors.
  • Memory 102 is comprised of a combination of volatile and non-volatile memory. Memory 102 may include storage remotely located from processor 101 . In this case, the processor 101 may access the memory 102 via an I/O (Input/Output) interface (not shown).
  • I/O Input/Output
  • the symbol narrowing device 10 can have the hardware configuration shown in FIG. Further, the symbol extraction unit 11, the first code block extraction unit 12, the second code block extraction unit 13, the symbol narrowing unit 14, and the symbol output unit 15 in the symbol narrowing device 10 are stored in the memory 102 by the processor 101. It may be realized by reading and executing a program.
  • the symbol narrowing down device 20 can have the hardware configuration shown in FIG.
  • the symbol extractor 21, the first code block extractor 22, the second code block extractor 23, the symbol narrower 24, and the symbol output unit 25 in the symbol narrowing device 20 are stored in the memory 102 by the processor 101. It may be realized by reading and executing a program. Also, the target condition table 26 in the symbol narrowing device 20 may be stored in the memory 102 .
  • FIG. 15 Although the hardware configuration example of the symbol narrowing device 100 has been described in FIG. 15, it is not limited to this.
  • a configuration including a processor 101 and a memory 102 can be adopted as in the case of the symbol narrowing-down device 100.
  • FIG. Each of the program analysis apparatuses 1 and 2 can have a hardware configuration including a processor 101 and memory 102 .
  • non-transitory computer-readable media examples include magnetic recording media (e.g., flexible discs, magnetic tapes, hard disk drives), magneto-optical recording media (e.g., magneto-optical discs), CD-ROMs (Compact Disc-Read Only Memory) , CD-R (CD-Recordable), CD-R/W (CD-ReWritable), semiconductor memory (e.g.
  • the programs described above may be supplied to the computer by various types of transitory computer readable media, examples of which are electrical signals, optical signals, , and electromagnetic waves.
  • the temporary computer-readable medium can supply the program to the symbol narrowing devices 10, 20 and the program analysis devices 1, 2 via wired communication channels such as electric wires and optical fibers, or wireless communication channels. .
  • (Appendix 1) a symbol extraction means for extracting a plurality of predetermined symbols from the code included in the binary of the program; a first code block extraction means for extracting a code block having a specific property from among the codes included in the binary of the program as a first code block to be analyzed as to whether or not it is a backdoor; a second code block extracting means for extracting a plurality of second code blocks for accessing each of the plurality of predetermined symbols from the code included in the binary of the program; Symbols accessed by said second code blocks satisfying a condition on the control flow according to the type of backdoor to be analyzed, among said plurality of second code blocks, are defined as said plurality of predetermined symbols. a symbol narrowing means for extracting from symbol output means for outputting the symbols extracted by the symbol narrowing means; A symbol refiner with
  • the symbol extraction means extracts, as the plurality of predetermined symbols, a plurality of symbols determined based on at least one attribute information of a symbol type and a scope level.
  • the symbol narrowing device according to appendix 1.
  • the symbol narrowing means selects, among the plurality of second code blocks, a second code block that is the first code block or a child node thereof, and a second code block that is one of a plurality of code blocks that constitute a normal control flow. extracting symbols accessed from any of the code blocks from among the plurality of predetermined symbols extracted by the symbol extracting means; A symbol narrowing device according to appendix 1 or 2.
  • the symbol narrowing means selects, from among the plurality of second code blocks, symbols accessed by the second code block, which is the first code block or a child node thereof and accesses an external resource, extracting from among the plurality of predetermined symbols extracted by the symbol extracting means; A symbol narrowing device according to appendix 1 or 2.
  • the first code block extracting means extracts a code block that cannot be reached by a normal control flow as the first code block that is a code block having the specific property. extract from within the code contained in the The symbol narrowing device according to any one of Appendices 1 to 4.
  • the first code block extracting means extracts code blocks that do not pass through a code block having a predetermined function that is passed through in a normal control flow as the code block that has the specific property. extracting from among the code contained in the binary as a first code block;
  • the symbol narrowing device according to any one of Appendices 1 to 4.
  • (Appendix 7) a symbol narrowing device according to any one of Appendices 1 to 6;
  • the possibility that the first code block is a backdoor code is determined at least based on the contents of the symbol output from the symbol narrowing device, which is accessed by the first code block or a code block that is a child node of the first code block. or a backdoor score calculation means for calculating a backdoor score, which is a score indicating the degree of impact on the system when the first code block is executed; analysis result output means for outputting the first code block and the backdoor score for the first code block as analysis results;
  • a program analysis device with
  • a symbol extraction method executed by a symbol narrowing device a symbol extraction step of extracting a plurality of predetermined symbols from code contained in program binaries; a first code block extracting step of extracting a code block having a specific property from among the codes included in the binary of the program as a first code block to be analyzed as to whether it is a backdoor; a second code block extracting step of extracting a plurality of second code blocks for accessing each of the plurality of predetermined symbols from code included in the binary of the program; Symbols accessed by said second code blocks satisfying a condition on the control flow according to the type of backdoor to be analyzed, among said plurality of second code blocks, are defined as said plurality of predetermined symbols.
  • a symbol narrowing step for extracting from a symbol output step of outputting the symbols extracted in the symbol narrowing step;
  • the first code block is a backdoor code, based on at least the contents of the symbols output in the symbol extraction method according to appendix 8, which are accessed by the first code block or code blocks that are child nodes thereof.
  • a backdoor score calculating step for calculating a backdoor score, which is a score indicating the possibility or a score indicating the magnitude of the impact on the system when the first code block is executed; an analysis result output step of outputting the first code block and the backdoor score for the first code block as an analysis result;
  • a symbol extraction process for extracting a plurality of predetermined symbols from the code included in the binary of the program a first code block extraction process for extracting a code block having a specific property from among the codes included in the binary of the program as a first code block to be analyzed as to whether or not it is a backdoor; a second code block extraction process for extracting a plurality of second code blocks for accessing each of the plurality of predetermined symbols from among the codes included in the binary of the program; Symbols accessed by said second code blocks satisfying a condition on the control flow according to the type of backdoor to be analyzed, among said plurality of second code blocks, are defined as said plurality of predetermined symbols.
  • a non-transitory computer-readable medium that stores a program that causes a computer to execute
  • the possibility that the first code block is a backdoor code is determined at least based on the contents of the symbol output in the symbol output process, which is accessed by the first code block or a code block that is a child node of the first code block. or a backdoor score calculation process for calculating a backdoor score, which is a score indicating the degree of impact on the system when the first code block is executed; an analysis result output process for outputting the first code block and the backdoor score for the first code block as an analysis result; 11.
  • a non-transitory computer-readable medium storing the program according to appendix 10, which further causes a computer to execute .

Landscapes

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

Abstract

シンボル絞り込み装置(10)は、プログラムのバイナリに含まれるコードの中から、複数の所定のシンボルを抽出するシンボル抽出手段(11)と、特定の性質を持つコードブロックを、バックドアであるか否かの解析対象である第1コードブロックとして抽出する第1コードブロック抽出手段(12)と、複数の所定のシンボルのそれぞれへのアクセスを行う複数のコードブロックを、複数の第2コードブロックとして抽出する第2コードブロック抽出手段(13)と、複数の第2コードブロックのうち、解析されるバックドアのタイプに応じたコントロールフロー上での条件、を満たすような第2コードブロック、によってアクセスされるシンボルを、複数の所定のシンボルの中から抽出する、シンボル絞り込み手段(14)と、シンボル絞り込み手段(14)によって抽出されたシンボルを出力するシンボル出力手段(15)と、を備える。

Description

シンボル絞り込み装置、プログラム解析装置、シンボル抽出方法、プログラム解析方法、及び、非一時的なコンピュータ可読媒体
 本開示は、シンボル絞り込み装置、プログラム解析装置、シンボル抽出方法、プログラム解析方法、及び、非一時的なコンピュータ可読媒体に関する。
 近年のインフラや企業システムは複雑化している。そのため、それらのインフラや企業システムは、単一の企業のデバイスやソフトウェアだけで構成されるのではなく、様々な企業のデバイスやソフトウェアを外部から調達し、それらを組み合わせて構築されることが一般的になっている。
 しかしながら、外部のメーカーから調達したソフトウェア(又はファームウェア)やハードウェアにおいて、バックドアが発見される事例が多数報告されている。本明細書で言及する「バックドア」とは、例えば、ソフトウェアを構成する複数の機能を含むプログラムに対して、該プログラムの一部として組み込まれた、ユーザに知らされていない且つ望まれていない機能として定義できる。
 そのため、インフラや企業システムの構築の取り纏めを行うメーカーは、外部のメーカーから調達したソフトウェアを構成するプログラムにおいて、バックドアが含まれていないか検査する必要がある。
 例えば、非特許文献1には、検査対象のバイナリに含まれるコードに対してスコアリングを行うことにより、バックドアコードの候補を抽出することが記載されている。ここで、非特許文献1では、対象バイナリに含まれるコードの中から、静的なデータの比較を行っている関数を特定し、その特定された関数による比較結果がその後の実行パスにどの程度影響を与えるのかについてのスコアリングを行うことにより、バックドアコードの候補を抽出している。
Sam L. Thomas, Tom Chothia, and Flavio D. Garcia, "Stringer: Measuring the Importance of Static Data Comparisons to Detect Backdoors and Undocumented Functionality", Computer Security ESORICS 2017, pp.513-531
 ところで、解析対象のプログラムに含まれる複数のコードブロックに対してスコアリングを行うことにより、当該複数のコードブロックのうちスコアの高いコードブロックをバックドアコードの候補として抽出する場合等では、解析対象のコードブロック又はその子ノードにおける所定のシンボルへのアクセスの有無が、当該解析対象のコードブロックに対するスコアの増減に影響を与える。
 ここで、通常、プログラム中には非常に多くのシンボルが存在する。また、それに伴い、これらの所定のシンボルへのアクセスを行うコードブロックも非常に多く存在する。しかしながら、シンボルの中には、解析されるバックドアのタイプによっては、スコアの増減に寄与しないシンボルも存在する。そのため、バックドアコードの解析では、解析されるバックドアのタイプに応じて、スコアの増減に寄与するシンボルの絞り込みを行うことが求められている。
 本開示は、このような課題を解決するためになされたものであり、解析対象のプログラムに含まれる多数のシンボルの中から、解析されるバックドアのタイプに応じたシンボルを抽出することが可能な、シンボル絞り込み装置、プログラム解析装置、シンボル抽出方法、プログラム解析方法、及び、非一時的なコンピュータ可読媒体を提供することを目的とする。
 本開示の第1の態様に係るシンボル絞り込み装置は、プログラムのバイナリに含まれるコードの中から、複数の所定のシンボルを抽出するシンボル抽出手段と、前記プログラムのバイナリに含まれるコードの中から、特定の性質を持つコードブロックを、バックドアであるか否かの解析対象である第1コードブロックとして抽出する第1コードブロック抽出手段と、前記プログラムのバイナリに含まれるコードの中から、前記複数の所定のシンボルのそれぞれへのアクセスを行う複数のコードブロックを、複数の第2コードブロックとして抽出する第2コードブロック抽出手段と、前記複数の第2コードブロックのうち、解析されるバックドアのタイプに応じたコントロールフロー上での条件、を満たすような前記第2コードブロック、によってアクセスされるシンボルを、前記複数の所定のシンボルの中から抽出する、シンボル絞り込み手段と、前記シンボル絞り込み手段によって抽出された前記シンボルを出力するシンボル出力手段と、を備える。
 本開示の第2の態様に係るシンボル抽出方法は、シンボル絞り込み装置が実行するシンボル抽出方法であって、プログラムのバイナリに含まれるコードの中から、複数の所定のシンボルを抽出するシンボル抽出ステップと、前記プログラムのバイナリに含まれるコードの中から、特定の性質を持つコードブロックを、バックドアであるか否かの解析対象である第1コードブロックとして抽出する第1コードブロック抽出ステップと、前記プログラムのバイナリに含まれるコードの中から、前記複数の所定のシンボルのそれぞれへのアクセスを行う複数のコードブロックを、複数の第2コードブロックとして抽出する第2コードブロック抽出ステップと、前記複数の第2コードブロックのうち、解析されるバックドアのタイプに応じたコントロールフロー上での条件、を満たすような前記第2コードブロック、によってアクセスされるシンボルを、前記複数の所定のシンボルの中から抽出するシンボル絞り込みステップと、前記シンボル絞り込みステップにおいて抽出された前記シンボルを出力するシンボル出力ステップと、を備える。
 本開示の第3の態様に係る非一時的なコンピュータ可読媒体は、プログラムのバイナリに含まれるコードの中から、複数の所定のシンボルを抽出するシンボル抽出処理と、前記プログラムのバイナリに含まれるコードの中から、特定の性質を持つコードブロックを、バックドアであるか否かの解析対象である第1コードブロックとして抽出する第1コードブロック抽出処理と、前記プログラムのバイナリに含まれるコードの中から、前記複数の所定のシンボルのそれぞれへのアクセスを行う複数のコードブロックを、複数の第2コードブロックとして抽出する第2コードブロック抽出処理と、前記複数の第2コードブロックのうち、解析されるバックドアのタイプに応じたコントロールフロー上での条件、を満たすような前記第2コードブロック、によってアクセスされるシンボルを、前記複数の所定のシンボルの中から抽出するシンボル絞り込み処理と、前記シンボル絞り込み処理において抽出された前記シンボルを出力するシンボル出力処理と、をコンピュータに実行させるプログラムが格納されている。
 本開示により、プログラムに含まれる多数のシンボルの中から、解析されるバックドアのタイプに応じたシンボルを抽出することが可能な、シンボル絞り込み装置、プログラム解析装置、シンボル抽出方法、プログラム解析方法、及び、非一時的なコンピュータ可読媒体を提供することができる。
実施の形態1に係るシンボル絞り込み装置の構成例を示すブロック図である。 図1に示すシンボル絞り込み装置の処理の流れの一例を示すフローチャートである。 図1に示すシンボル絞り込み装置を備えたプログラム解析装置の構成例を示すブロック図である。 図3に示すプログラム解析装置の処理の流れの一例を示すフローチャートである。 実施の形態2に係るシンボル絞り込み装置の構成例を示すブロック図である。 特定の性質を持つコードブロックの一例であるデッドコードブロックについて説明するための、あるプログラムのコントロールフローグラフの例を示す模式図である。 特定の性質を持つコードブロックの一例であるデッドコードブロックについて説明するための、あるプログラムのコントロールフローグラフの例を示す模式図である。 特定の性質を持つコードブロックの一例であるデッドコードブロックについて説明するための、あるプログラムのコントロールフローグラフの例を示す模式図である。 特定の性質を持つコードブロックの他の例について説明するための、あるプログラムのコントロールフローグラフの例を示す模式図である。 図5に示すシンボル絞り込み装置の処理の流れの一例を示すフローチャートである。 図5に示すシンボル絞り込み装置によるシンボル絞り込み処理について説明するための、あるプログラムのコントロールフローグラフの例を示す模式図である。 図5に示すシンボル絞り込み装置によるシンボル絞り込み処理について説明するための、あるプログラムのコントロールフローグラフの例を示す模式図である。 図5に示すシンボル絞り込み装置を備えたプログラム解析装置の構成例を示すブロック図である。 図13に示すプログラム解析装置の処理の流れの一例を示すフローチャートである。 実施の形態3に係るプログラム解析装置のハードウェア構成例を示す図である。 構想段階のプログラム解析装置の構成例を示すブロック図である。
 以下、図面を参照しつつ、実施形態について説明する。なお、実施形態において、同一又は同等の要素には、同一の符号を付し、重複する説明は省略される。
<発明者による事前検討>
 実施の形態1に係るプログラム解析装置について説明する前に、発明者が事前検討した内容について説明する。
 図16は、実施の形態1に至る前の構想段階のプログラム解析装置50の構成例を示すブロック図である。図16に示すように、プログラム解析装置50は、コードブロック抽出部51と、バックドアスコア算出部52と、解析結果出力部53と、を備える。
 コードブロック抽出部51は、解析対象のプログラムのバイナリ(以下、対象バイナリと称す)に含まれるコードの中から、特定の性質を持つコードブロックをすべて抽出する。ここで述べるコードブロックとは、例えば、プログラム内における関数単位、又は、ベーシックブロック単位のコード群を指す。特定の性質を持つコードブロックとは、例えばデッドコードブロックのことである。また、デッドコードブロックとは、プログラムを実行した際に、通常のコントロールフローでは到達することのできないコードブロックのことである。
 バックドアスコア算出部52は、コードブロック抽出部51によって抽出された各コードブロックに対して、当該コードブロックの操作内容に基づいて、当該コードブロックがバックドアコードである可能性を示すスコア、又は、当該コードブロックが実行された際に、システムに及ぼす影響の大きさを示すスコアなどであるバックドアスコアを算出する。ここで述べるシステムとは、例えば、解析対象のプログラムを実行する環境を含むコンピュータのことである。
 例えば、バックドアスコア算出部52は、コードブロック抽出部51によって抽出されたコードブロックの中に所定のセンシティブな操作が存在する場合、当該操作に対して予め設定されたスコアを、当該コードブロックに対するバックドアスコアに加算する処理を行う。ここで述べる所定のセンシティブな操作とは、例えば、不正に実行されると、プログラムや当該プログラムを実行する環境を含むシステムに重大な影響を及ぼすと考えられる操作であって、ユーザ(例えば、プログラムの検査を依頼する依頼者や、検査を行う解析者など)によって予め定められた操作のことである。
 ここで、C言語などの高レベル言語のソースコードは、主に、人が理解でき且つ意味のわかりやすい名前を持った関数及び変数によって構成されている。コンパイラは、ソースコードをコンパイルする際に、ソースコードに含まれるそのような関数及び変数の名前に対して、どのバイナリコード或いはどのバイナリデータが紐づいているかを追跡できるようにするためのシンボルを生成する。このようにして生成されたシンボルは、プログラム中に多数存在する。上述の所定のセンシティブな操作には、これらの所定のシンボルにアクセスする操作も含まれている。
 解析結果出力部53は、コードブロック抽出部51によって抽出されたコードブロックと、バックドアスコア算出部52によって算出された当該コードブロックに対するバックドアスコアと、を解析結果として出力する。
 以上により、プログラム解析装置50は、解析対象のプログラムに含まれるバックドアコードの候補であるコードブロックと、それに対するバックドアスコアとを、例えばプログラムの解析者に提示することができる。そのため、プログラムの解析者は、解析対象のプログラムのコードと仕様書とを比較したり、当該プログラムのコードを手動でつぶさに調べたりすることなく、当該プログラムからバックドアコードの候補を抽出することができる。
 ところで、解析対象のプログラムに含まれる複数のコードブロックに対してスコアリングを行うことにより、当該複数のコードブロックのうちスコアの高いコードブロックをバックドアコードの候補として抽出する場合等では、解析対象のコードブロック又はその子ノードにおける所定のシンボルへのアクセスの有無が、当該解析対象のコードブロックに対するスコアの増減に影響を与える。
 ここで、上述したように、プログラム中には非常に多くのシンボルが存在する。また、それに伴い、これらの所定のシンボルへのアクセスを行うコードブロックも非常に多く存在する。
 しかしながら、プログラム解析装置50は、解析されるバックドアのタイプが異なる場合でも、多数の所定のシンボルを、絞り込みを行うことなくスコアの算出に用いている。そのため、プログラム解析装置50は、解析されるバックドアのタイプによっては、スコアの増減に寄与しないシンボルを、スコアの算出に用いてしまっている可能性がある。
 そこで、解析対象のプログラムに含まれる多数のシンボルの中から、解析されるバックドアのタイプに応じたシンボルを抽出することが可能な、実施の形態1に係るシンボル絞り込み装置10が見いだされた。
<実施の形態1>
 図1は、実施の形態1に係るシンボル絞り込み装置10の構成例を示すブロック図である。シンボル絞り込み装置10は、解析対象のプログラムに含まれる多数のシンボルの中から、解析されるバックドアのタイプに応じた(即ち、どのようなタイプのバックドアの候補を抽出するかに応じた)シンボルを抽出することができる。その結果、例えば、プログラム解析装置は、解析されるバックドアのタイプによっては、バックドアスコアの増減にほとんど寄与しないシンボルを除外して、バックドアスコアの算出を行うことができる。以下、具体的に説明する。
 図1に示すように、シンボル絞り込み装置10は、シンボル抽出部11と、第1コードブロック抽出部12と、第2コードブロック抽出部13と、シンボル絞り込み部14と、シンボル出力部15と、を備える。
 シンボル抽出部11は、解析対象のプログラムのバイナリ(以下、対象バイナリと称す)に含まれるコードの中から、複数の所定のシンボルを抽出する。ここで述べる複数の所定のシンボルとは、対象バイナリに含まれる全てのシンボルのうち、シンボルの有する、シンボルタイプ及びスコープレベルの少なくとも何れかの属性情報に基づいて決定された複数のシンボルのことである。シンボルタイプには、例えばデータタイプや関数タイプが存在する。例えば、シンボル抽出部11は、対象バイナリに含まれるコードの中から、シンボルタイプ及びスコープレベルが同じである複数の所定のシンボルを抽出する。
 第1コードブロック抽出部12は、対象バイナリに含まれるコードの中から、特定の性質を持つコードブロックを、バックドアであるか否かの解析対象である第1コードブロックとしてすべて抽出する。ここで述べるコードブロックとは、例えば、プログラム内における関数単位、又は、ベーシックブロック単位のコード群を指す。特定の性質を持つコードブロックとは、例えばデッドコードブロックのことである。また、デッドコードブロックとは、プログラムを実行した際に、通常のコントロールフローでは到達することのできないコードブロックのことである。
 第2コードブロック抽出部13は、対象バイナリに含まれるコードの中から、所定のセンシティブな操作を行うコードブロックを全て抽出する。ここで述べる所定のセンシティブな操作とは、例えば、不正に実行されると、プログラムや当該プログラムを実行する環境を含むシステムに重大な影響を及ぼすと考えられる操作であって、ユーザによって予め定められた操作のことである。また、システムとは、例えば、解析対象のプログラムを実行する環境を含むコンピュータのことである。
 ここで、第2コードブロック抽出部13は、シンボル抽出部11によって抽出された複数の所定のシンボルのそれぞれへのアクセスを行う複数のコードブロックを、特に、複数の第2コードブロックとして抽出する。なお、所定のシンボルへのアクセスは、所定のセンシティブな操作に含まれる。
 シンボル絞り込み部14は、まず、第2コードブロック抽出部13によって抽出された複数の第2コードブロックのうち、解析されるバックドアのタイプに応じたコントロールフロー上での条件、を満たすような第2コードブロック、を抽出する。その後、シンボル絞り込み部14は、シンボル抽出部11によって抽出された複数の所定のシンボルのうち、当該抽出した第2コードブロックによってアクセスされるシンボルを抽出する。
 ここで述べるバックドアのタイプには、例えば、プログラム内部のセンシティブな情報を不正に外部に持ち出すタイプのバックドアや、プログラム外部のセンシティブな情報をプログラム内部に不正に取り込むタイプのバックドアなどがある。シンボル絞り込み部14は、このようなバックドアのタイプに応じたコントロールフロー上での条件を満たすような第2コードブロックを抽出し、当該抽出した第2コードブロックにアクセスするシンボルを抽出する。なお、バックドアのタイプに応じたコントロールフロー上での条件の詳細については、実施の形態2において詳細に説明する。
 シンボル出力部15は、シンボル絞り込み部14によって絞り込まれたシンボルを、シンボル絞り込み装置10の外部に出力する。なお、シンボル絞り込み装置10から出力されたシンボルは、解析対象の第1コードブロックがバックドアコードである可能性を示すスコア、又は、解析対象の第1コードブロックが実行された際にシステムに及ぼす影響の大きさを示すスコアである、バックドアスコアの算出に用いられる。
 続いて、図2を用いて、シンボル絞り込み装置10の処理の流れの一例を説明する。
 図2は、シンボル絞り込み装置10の処理の流れの一例を示すフローチャートである。
 図2に示すように、まず、シンボル抽出部11は、対象バイナリに含まれるコードの中から、シンボルの有する、シンボルタイプ及びスコープレベルの少なくとも何れかの属性情報に基づいて決定された複数の所定のシンボルを抽出する(ステップS101)。その後、第1コードブロック抽出部12は、対象バイナリに含まれるコードの中から、特定の性質を持つコードブロックを、バックドアであるか否かの解析対象である第1コードブロックとして抽出する(ステップS102)。また、第2コードブロック抽出部13は、シンボル抽出部11によって抽出された複数の所定のシンボルのそれぞれへのアクセスを行う複数のコードブロックを、複数の第2コードブロックとして抽出する(ステップS103)。その後、シンボル絞り込み部14は、複数の第2コードブロックのうち、解析されるバックドアのタイプに応じたコントロールフロー上での条件、を満たすような前記第2コードブロック、によってアクセスされるシンボルを、複数の所定のシンボルの中から抽出する(ステップS104)。その後、シンボル出力部15は、シンボル絞り込み部14によって絞り込まれたシンボルを、シンボル絞り込み装置10の外部に出力する(ステップS105)。
 以上により、本実施の形態に係るシンボル絞り込み装置10は、解析対象のプログラムに含まれる多数のシンボルの中から、解析されるバックドアのタイプに応じた(即ち、どのようなタイプのバックドアの候補を抽出するかに応じた)シンボルを抽出することができる。その結果、解析されるバックドアのタイプによっては、バックドアスコアの増減にほとんど寄与しないシンボルを、バックドアスコアの算出に用いられる対象から除外することができる。
(シンボル絞り込み装置10の適用事例)
 図3は、シンボル絞り込み装置10が搭載されたプログラム解析装置1の構成例を示すブロック図である。
 図3に示すように、プログラム解析装置1は、シンボル絞り込み装置10と、バックドアスコア算出部17と、解析結果出力部18と、を備える。
 バックドアスコア算出部17は、第1コードブロック抽出部12によって抽出された各第1コードブロックに対して、当該第1コードブロック又はその子ノードであるコードブロックの操作内容(具体的には、所定のセンシティブな操作の内容)に基づいて、バックドアスコアを算出する。ここで、バックドアスコア算出部17は、少なくとも、前記第1コードブロック又はその子ノードであるコードブロックによってアクセスされる、シンボル絞り込み装置10によって絞り込まれたシンボル、の内容に基づいて、バックドアスコアを算出する。
 解析結果出力部18は、第1コードブロック抽出部12によって抽出された第1コードブロックと、バックドアスコア算出部17によって算出された当該第1コードブロックに対するバックドアスコアと、を解析結果として出力する。このとき、解析結果出力部18は、例えば、第1コードブロックに当該コードブロックに対するバックドアスコアを付与した態様で、解析結果を出力することができる。
 続いて、図4を用いて、プログラム解析装置1の処理の流れの一例を説明する。図4は、プログラム解析装置1の処理の流れの一例を示すフローチャートである。なお、図4では、シンボル絞り込み装置10によるシンボルの絞り込みの処理については省略されている。
 図4に示すように、まず、バックドアスコア算出部17は、第1コードブロック抽出部12によって抽出された各第1コードブロックに対して、当該第1コードブロック又はその子ノードであるコードブロックの操作内容(具体的には、所定のセンシティブな操作の内容)に基づいて、バックドアスコアを算出する。ここで、バックドアスコア算出部17は、少なくとも、前記第1コードブロック又はその子ノードであるコードブロックによってアクセスされる、シンボル絞り込み装置10によって絞り込まれたシンボル、の内容に基づいて、バックドアスコアを算出する(ステップS106)。その後、解析結果出力部18は、第1コードブロック抽出部12によって抽出された第1コードブロックと、バックドアスコア算出部17によって算出された当該第1コードブロックに対するバックドアスコアと、を解析結果として出力する(ステップS107)。
 以上により、本実施の形態にかかるプログラム解析装置1は、解析対象のプログラムに含まれるバックドアコードの候補である第1コードブロックと、それに対するバックドアスコアとを、例えばプログラムの解析者に提示することができる。それにより、プログラムの解析者は、解析対象のプログラムのコードと仕様書とを比較したり、当該プログラムのコードを手動でつぶさに調べたりすることなく、当該プログラムからバックドアコードの候補を抽出することができる。
 さらに、本実施の形態にかかるプログラム解析装置1は、シンボル絞り込み装置10を用いることにより、解析されるバックドアのタイプによっては、バックドアスコアの増減にほとんど寄与しないシンボルを除外して、バックドアスコアの算出を行うことができる。
<実施の形態2>
 図5は、実施の形態2にかかるシンボル絞り込み装置20の構成例を示すブロック図である。
 図5に示すように、シンボル絞り込み装置20は、シンボル抽出部21と、第1コードブロック抽出部22と、第2コードブロック抽出部23と、シンボル絞り込み部24と、シンボル出力部25と、対象条件テーブル26と、を備える。
 シンボル抽出部21は、対象バイナリに含まれる全てのシンボルの中から、シンボルの有する、シンボルタイプ及びスコープレベルの少なくとも何れかの属性情報に基づいて決定された複数の所定のシンボルを抽出する。
 第1コードブロック抽出部22は、対象バイナリに含まれるコードの中から、特定の性質を持つコードブロックを、バックドアであるか否かの解析対象である第1コードブロックとしてすべて抽出する。
 より具体的には、第1コードブロック抽出部22は、対象バイナリに対して、静的解析などを行い、プログラム全体のコントロールフローグラフを作成する。その後、第1コードブロック抽出部22は、作成したコントロールフローグラフなどの情報に基づいて、対象バイナリに含まれるコードの中から、特定の性質を持つコードブロックを第1コードブロックとしてすべて抽出する。
 特定の性質を持つコードブロックとは、上述したように、例えばデッドコードブロックのことである。また、デッドコードブロックとは、プログラムを実行した際に、通常のコントロールフローでは到達することのできないコードブロックのことである。
 ここで、図6及び図7を参照して、デッドコードブロックを抽出する方法の例について説明する。図6及び図7は、デッドコードブロックについて説明するための、あるプログラムのコントロールフローグラフの例を示す模式図である。なお、図6及び図7において、実線の円は通常のノードを、破線の円はデッドコードブロックとなるノードを、矢印はコントロールフローを、それぞれ表している(以降の図8及び図9において同じ)。
 図6に示すように、第1コードブロック抽出部22は、コントロールフローグラフ上において親ノードを持たないノードを、デッドコードブロック(即ち、第1コードブロック)として抽出する。また、図7に示すように、第1コードブロック抽出部22は、コントロールフローグラフ上において親ノードを持たないノードに加えて、その子ノードも、デッドコードブロック(即ち、第1コードブロック)として抽出してもよい。
 上述したデッドコードブロックは、プログラムへの通常の入力値が与えられている限りは、実行されることはない。しかし、図8に示すように、プログラムに脆弱性がある場合、デッドコードブロックは、特殊な入力値を与えるなどの特定の条件下において、脆弱性のある関数により呼び出され、実行されることがある。
 なお、特定の性質を持つコードブロックは、上述したデッドコードブロックに限られない。例えば、プログラムを通常実行する上で、必ず経由するような起点となる所定の機能、具体的には、認証機能やパーサー機能などを経由しないコードブロックを、特定の性質を持つコードブロックとしてもよい。図9の例では、コントロールフロー上に、起点となる認証機能が存在する。この場合、第1コードブロック抽出部22は、認証機能を経由しないコードブロックを、特定の性質を持つコードブロックとして抽出してもよい。
 第2コードブロック抽出部23は、対象バイナリに含まれるコードの中から、所定のセンシティブな操作を行うコードブロックを全て抽出する。
 所定のセンシティブな操作とは、上述したように、例えば、不正に実行されると、プログラムや当該プログラムを実行する環境を含むシステムに重大な影響を及ぼすと考えられる操作であって、ユーザ(例えば、プログラムの検査を依頼する依頼者や、検査を行う解析者など)によって予め定められた操作のことである。
 例えば、所定のセンシティブな操作とは、ユーザによって予め定められた、所定の関数を呼び出す操作や、所定のシンボルにアクセスする操作(所定の変数にアクセスする操作や、所定の命令を実行する操作を含む)のことである。所定の関数を呼び出す操作には、例えば、システムコール、所定のライブラリ関数、及び、所定のAPI(Application Programming Interface)の少なくとも何れかを呼び出す操作などがある。所定のシンボルにアクセスする操作には、例えば、前記プログラムのグローバル変数にアクセスする操作などがある。これらの所定のセンシティブな操作は、それらに対応するスコアとともに、ユーザによって予め対象操作テーブル(不図示)等に格納されている。
 ここで、第2コードブロック抽出部23は、シンボル抽出部21によって抽出された複数の所定のシンボルのそれぞれへのアクセスを行う複数のコードブロックを、特に、複数の第2コードブロックとして抽出する。
 シンボル絞り込み部24は、まず、第2コードブロック抽出部23によって抽出された複数の第2コードブロックのうち、解析されるバックドアのタイプに応じたコントロールフロー上での条件、を満たすような第2コードブロック、を特定する。その後、シンボル絞り込み部24は、シンボル抽出部21によって抽出された複数の所定のシンボルのうち、特定した第2コードブロックによってアクセスされるシンボルを抽出する。
 ここで述べるバックドアのタイプには、上述したように、例えば、プログラム内部のセンシティブな情報を不正に外部に持ち出すタイプのバックドアや、プログラム外部のセンシティブな情報をプログラム内部に不正に取り込むタイプのバックドアなどがある。シンボル絞り込み部24は、このようなバックドアのタイプに応じたコントロールフロー上での条件を満たすような第2コードブロックを特定した後、当該特定した第2コードブロックにアクセスするシンボルを抽出する。
 例えば、プログラム内部のセンシティブな情報を不正に外部に持ち出すタイプのバックドアコードを検出したい場合、シンボル絞り込み部24は、まず、第2コードブロック抽出部23によって抽出された複数の第2コードブロックのうち、第1コードブロック又はその子ノードである第2コードブロックと、通常のコントロールフローから辿れる(換言すると、通常のコントロールフローを構成する複数のコードブロックの何れかであるような)第2コードブロックと、を特定する。その後、シンボル絞り込み部24は、シンボル抽出部21によって抽出された複数の所定のシンボルのうち、第1コードブロック又はその子ノードである第2コードブロックと、通常のコントロールフローから辿れる第2コードブロックと、の何れからもアクセスされるシンボルを抽出する。これは、通常のコントロールフローから辿れる第2コードブロックによってアクセスされないシンボル、即ち、通常実行時において使用されないシンボルを、抽出対象から除外することでもある。
 また、例えば、プログラム外部のセンシティブな情報をプログラム内部に不正に取り込むタイプのバックドアコードを検出したい場合、シンボル絞り込み部24は、まず、第2コードブロック抽出部23によって抽出された複数の第2コードブロックのうち、第1コードブロック又はその子ノードであり、且つ、外部リソース(プログラムの外部)へのアクセスを行うような、第2コードブロックを特定する。その後、シンボル絞り込み部24は、シンボル抽出部21によって抽出された複数の所定のシンボルのうち、当該特定した第2コードブロックによってアクセスされるシンボルを抽出する。
 対象条件テーブル26には、上述のような、解析されるバックドアのタイプに応じた条件が格納されている。
 シンボル出力部25は、シンボル絞り込み部24によって絞り込まれたシンボルを、シンボル絞り込み装置20の外部に出力する。なお、シンボル絞り込み装置20から出力されたシンボルは、解析対象の第1コードブロックがバックドアコードである可能性を示すスコア、又は、解析対象の第1コードブロックが実行された際にシステムに及ぼす影響の大きさを示すスコアである、バックドアスコアの算出に用いられる。
 続いて、図10~図12を用いて、シンボル絞り込み装置20の処理の流れの一例を説明する。図10は、シンボル絞り込み装置20の処理の流れの一例を示すフローチャートである。図11及び図12は、シンボル絞り込み装置20によるシンボル絞り込み処理について説明するための、あるプログラムのコントロールフローグラフの例を示す模式図である。なお、図11は、シンボルの絞り込み前の状態を示し、図12は、シンボルの絞り込み後の状態を示している。
 図10に示すように、まず、第1コードブロック抽出部22は、対象バイナリに対して、静的解析などを行い、コントロールフローグラフを作成する(ステップS201)。
 その後、シンボル抽出部21は、対象バイナリに含まれる全てのシンボルの中から、シンボルの有する、シンボルタイプ及びスコープレベルの少なくとも何れかの属性情報に基づいて決定された複数の所定のシンボル(集合S)を抽出する(ステップS202)。図11の例では、シンボルS1~S6が、所定のシンボルとして抽出されている(即ち、シンボルS1~S6が、集合Sの要素として抽出されている)。
 その後、第1コードブロック抽出部22は、作成したコントロールフローグラフなどの情報に基づいて、対象バイナリに含まれるコードの中から、特定の性質を持つ複数のコードブロックを、バックドアであるか否かの解析対象である第1コードブロック(集合D)としてすべて抽出する(ステップS203)。図11の例では、コントロールフローグラフ上において親ノードを持たないノードである8個のデッドコードブロックD1~D8が、スコアリング対象の第1コードブロックD1~D8として抽出されている(即ち、第1コードブロックD1~D8が、集合Dの要素として抽出されている)。
 その後、第2コードブロック抽出部23は、対象バイナリに含まれるコードの中から、所定のセンシティブな操作を行うコードブロックを全て抽出する。ここで、第2コードブロック抽出部23は、シンボル抽出部21によって抽出された複数の所定のシンボル(集合S)のそれぞれへのアクセスを行う複数のコードブロックを、特に、複数の第2コードブロック(集合E)として抽出する(ステップS204)。図11の例では、シンボルS1~S6のうちの少なくとも何れかへのアクセスを行うノードである6個のコードブロックE1~E6が、第2コードブロックE1~E6として抽出されている(即ち、第2コードブロックE1~E6が、集合Eの要素として抽出されている)。
 また、このとき、複数の第2コードブロック(集合E)の中から、通常のコントロールフロー(例えばC言語の場合にはmain関数)から辿れる第2コードブロック(集合Ea)と、第1コードブロック又はその子ノードである第2コードブロック(集合Eb)と、が特定される(ステップS205)。この集合Ea,Ebの特定は、シンボル絞り込み部24によって行われても良いし、第2コードブロック抽出部23によって行われても良い。
 その後、シンボル絞り込み部24によるシンボルの絞り込みが行われる(ステップS206~S210)。シンボル絞り込み部24のよる具体的な処理の流れは、以下の通りである。ここでは、一例として、プログラム内部のセンシティブな情報を不正に外部に持ち出すタイプのバックドアコードを検出する場合の処理の流れを説明する。
 まず、シンボル抽出部21によって抽出された複数の所定のシンボル(集合S)の中から、検査対象として未選択のシンボルが一つ選択される(ステップS206)。その後、第2コードブロック抽出部23によって抽出された複数の第2コードブロック(集合E)の中から、選択中のシンボルにアクセスする一つ以上の第2コードブロックが特定される(ステップS207)。
 その後、選択中のシンボルにアクセスする一つ以上の第2コードブロックの何れかが、集合Eaの要素を含み、且つ、選択中のシンボルにアクセスする一つ以上の第2コードブロックの何れかが、集合Ebの要素が含むか否かの判定が行われる(ステップS208)。即ち、選択中のシンボルにアクセスする一つ以上の第2コードブロックの何れかが、通常のコントロールフローから辿れる第2コードブロックを含み、且つ、選択中のシンボルにアクセスする一つ以上の第2コードブロックの何れかが、第1コードブロック又はその子ノードである第2コードブロックを含むか否かの判定が行われる。
 例えば、選択中のシンボルにアクセスする一つ以上の第2コードブロックの何れかが、集合Eaの要素を含み、且つ、選択中のシンボルにアクセスする一つ以上の第2コードブロックの何れかが、集合Ebの要素を含む場合(ステップS208のYES)、選択中のシンボルは、スコアの算出に用いられるシンボルとして抽出される(ステップS209)。さもなければ(ステップS208のNO)、選択中のシンボルは、スコアの算出に用いられるシンボルとして抽出されない。
 その後、検査対象として未選択のシンボルが残っている場合には(ステップS210のYES)、検査対象として未選択のシンボルが選択され(ステップS206)、ステップS207~S209の処理が行われる。検査対象として未選択のシンボルが残っていない場合には(ステップS210のNO)、スコアの算出に用いるために絞り込まれたシンボルがシンボル出力部25から出力される(ステップS211)。
 図11及び図12の例では、図10に示す処理を経ることにより、シンボルS1~S6のうち、通常のコントロールフローから辿れる第2コードブロックと、第1コードブロック又はその子ノードである第2コードブロックと、の何れからもアクセスされるシンボルS3,S4のみに絞り込まれている。
 以上により、本実施の形態に係るシンボル絞り込み装置20は、解析対象のプログラムに含まれる多数のシンボルの中から、解析されるバックドアのタイプに応じた(即ち、どのようなタイプのバックドアの候補を抽出するかに応じた)シンボルを抽出することができる。その結果、解析されるバックドアのタイプによっては、バックドアスコアの増減にほとんど寄与しないシンボルを、バックドアスコアの算出に用いられる対象から外すことができる。
(シンボル絞り込み装置20の適用事例)
 図13は、シンボル絞り込み装置20が搭載されたプログラム解析装置2の構成例を示すブロック図である。
 図13に示すように、プログラム解析装置2は、シンボル絞り込み装置20と、バックドアスコア算出部27と、解析結果出力部28と、を備える。
 バックドアスコア算出部27は、第1コードブロック抽出部22によって抽出された各第1コードブロックに対して、当該第1コードブロック又はその子ノードであるコードブロックの操作内容に基づいて、バックドアスコアを算出する。ここで、バックドアスコア算出部27は、少なくとも、前記第1コードブロック又はその子ノードであるコードブロックによってアクセスされる、シンボル絞り込み装置20によって絞り込まれたシンボル、の内容に基づいて、バックドアスコアを算出する。
 解析結果出力部28は、第1コードブロック抽出部22によって抽出された第1コードブロックと、バックドアスコア算出部27によって算出された当該第1コードブロックに対するバックドアスコアと、を解析結果として出力する。
 解析結果出力部28による各第1コードブロックの出力形式は、対象バイナリ内におけるシンボル情報、該コードブロックの相対アドレス、プログラムの解析時に命名したコードブロック名などでよい。また、第1コードブロックは、そのコードブロックに対するバックドアスコアが付与された態様で、出力されてもよい。
 なお、シンボル絞り込み装置20及びそれを搭載したプログラム解析装置2では、解析対象のプログラムがバイナリ形式であり、該プログラムのバイナリが入力されることを想定しているが、ソースコードを解析対象としてもよい。その場合は、シンボル絞り込み装置20やプログラム解析装置2内において、解析対象のソースコードをコンパイルし、バイナリ形式に変換すればよい。また、シンボル抽出部21、第1コードブロック抽出部22、第2コードブロック抽出部23、シンボル絞り込み部24、シンボル出力部25、バックドアスコア算出部27、又は不図示の処理部が、ソースコードから得られる情報を適宜解析に利用してもよい。
 続いて、図14を用いて、プログラム解析装置2の処理の流れの一例を説明する。図14は、プログラム解析装置2の処理の流れの一例を示すフローチャートである。なお、図14では、シンボル絞り込み装置20によるシンボルの絞り込みの処理については省略されている。
 図14に示すように、まず、バックドアスコア算出部27は、第1コードブロック抽出部22によって抽出された各第1コードブロックに対して、当該第1コードブロック又はその子ノードであるコードブロックの操作内容(具体的には、所定のセンシティブな操作の内容)に基づいて、バックドアスコアを算出する。ここで、バックドアスコア算出部27は、少なくとも、前記第1コードブロック又はその子ノードであるコードブロックによってアクセスされる、シンボル絞り込み装置20によって絞り込まれたシンボル、の内容に基づいて、バックドアスコアを算出する(ステップS212)。その後、解析結果出力部28は、第1コードブロック抽出部22によって抽出された第1コードブロックと、バックドアスコア算出部27によって算出された当該第1コードブロックに対するバックドアスコアと、を解析結果として出力する(ステップS213)。
 以上により、本実施の形態にかかるプログラム解析装置2は、解析対象のプログラムに含まれるバックドアコードの候補である第1コードブロックと、それに対するバックドアスコアとを、例えばプログラムの解析者に提示することができる。それにより、プログラムの解析者は、解析対象のプログラムのコードと仕様書とを比較したり、当該プログラムのコードを手動でつぶさに調べたりすることなく、当該プログラムからバックドアコードの候補を抽出することができる。
 さらに、本実施の形態にかかるプログラム解析装置2は、シンボル絞り込み装置20を用いることにより、解析されるバックドアのタイプによっては、バックドアスコアの増減にほとんど寄与しないシンボルを除外して、バックドアスコアの算出を行うことができる。
<実施の形態3>
 図15は、実施の形態3に係るシンボル絞り込み装置100のハードウェア構成例を示す図である。図15において、シンボル絞り込み装置100は、プロセッサ101と、メモリ102と、を備えている。プロセッサ101は、例えば、マイクロプロセッサ、MPU(Micro Processing Unit)、又はCPU(Central Processing Unit)であってもよい。プロセッサ101は、複数のプロセッサを含んでもよい。メモリ102は、揮発性メモリ及び不揮発性メモリの組み合わせによって構成される。メモリ102は、プロセッサ101から離れて配置されたストレージを含んでもよい。この場合、プロセッサ101は、図示されていないI/O(Input/Output)インタフェースを介してメモリ102にアクセスしてもよい。
 実施の形態1に係るシンボル絞り込み装置10は、図15に示したハードウェア構成を有することができる。また、シンボル絞り込み装置10におけるシンボル抽出部11、第1コードブロック抽出部12、第2コードブロック抽出部13、シンボル絞り込み部14、及び、シンボル出力部15は、プロセッサ101がメモリ102に記憶されたプログラムを読み込んで実行することにより実現されてもよい。
 同様に、実施の形態2に係るシンボル絞り込み装置20は、図15に示したハードウェア構成を有することができる。また、シンボル絞り込み装置20におけるシンボル抽出部21、第1コードブロック抽出部22、第2コードブロック抽出部23、シンボル絞り込み部24、及び、シンボル出力部25は、プロセッサ101がメモリ102に記憶されたプログラムを読み込んで実行することにより実現されてもよい。また、シンボル絞り込み装置20における対象条件テーブル26は、メモリ102に記憶されてもよい。
 図15では、シンボル絞り込み装置100のハードウェア構成例について説明したが、これに限られない。シンボル絞り込み装置100を搭載したシンボル絞り込み装置のハードウェア構成も、シンボル絞り込み装置100の場合と同様に、プロセッサ101及びメモリ102を備えた構成を採用することができる。そして、各プログラム解析装置1,2は、プロセッサ101及びメモリ102を備えたハードウェア構成を有することができる。
 シンボル絞り込み装置10,20及びプログラム解析装置1,2を実現するための上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えば、フレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば、光磁気ディスク)、CD-ROM(Compact Disc-Read Only Memory)、CD-R(CD-Recordable)、CD-R/W(CD-ReWritable)、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory)を含む。また、上述したプログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバなどの有線通信路、又は無線通信路を介して、プログラムをシンボル絞り込み装置10,20及びプログラム解析装置1,2に供給できる。
 以上、実施の形態を参照して本開示を説明したが、本開示は上述した実施の形態に限定されるものではない。本開示の構成や詳細には、本開示のスコープ内で当業者が理解し得る様々な変更をすることができる。
 上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1)
 プログラムのバイナリに含まれるコードの中から、複数の所定のシンボルを抽出するシンボル抽出手段と、
 前記プログラムのバイナリに含まれるコードの中から、特定の性質を持つコードブロックを、バックドアであるか否かの解析対象である第1コードブロックとして抽出する第1コードブロック抽出手段と、
 前記プログラムのバイナリに含まれるコードの中から、前記複数の所定のシンボルのそれぞれへのアクセスを行う複数の第2コードブロックを抽出する第2コードブロック抽出手段と、
 前記複数の第2コードブロックのうち、解析されるバックドアのタイプに応じたコントロールフロー上での条件、を満たすような前記第2コードブロック、によってアクセスされるシンボルを、前記複数の所定のシンボルの中から抽出する、シンボル絞り込み手段と、
 前記シンボル絞り込み手段によって抽出された前記シンボルを出力するシンボル出力手段と、
 を備えたシンボル絞り込み装置。
(付記2)
 前記シンボル抽出手段は、シンボルタイプ及びスコープレベルの少なくとも何れかの属性情報に基づいて決定された複数のシンボルを、前記複数の所定のシンボルとして抽出する、
 付記1に記載のシンボル絞り込み装置。
(付記3)
 前記シンボル絞り込み手段は、前記複数の第2コードブロックのうち、前記第1コードブロック又はその子ノードである第2コードブロックと、通常のコントロールフローを構成する複数のコードブロックの何れかである第2コードブロックと、の何れからもアクセスされるシンボルを、前記シンボル抽出手段によって抽出された前記複数の所定のシンボルの中から抽出する、
 付記1又は2に記載のシンボル絞り込み装置。
(付記4)
 前記シンボル絞り込み手段は、前記複数の第2コードブロックのうち、前記第1コードブロック又はその子ノードであり、且つ、外部リソースへのアクセスを行う、前記第2コードブロック、によってアクセスされるシンボルを、前記シンボル抽出手段によって抽出された前記複数の所定のシンボルの中から抽出する、
 付記1又は2に記載のシンボル絞り込み装置。
(付記5)
 前記第1コードブロック抽出手段は、前記プログラムを実行した際に、通常のコントロールフローでは到達することのできないコードブロックを、前記特定の性質を持つコードブロックである前記第1コードブロックとして、前記バイナリに含まれるコードの中から抽出する、
 付記1~4の何れか一項に記載のシンボル絞り込み装置。
(付記6)
 前記第1コードブロック抽出手段は、前記プログラムを実行した際に、通常のコントロールフローでは経由する所定の機能を有するコードブロック、を経由しないコードブロックを、前記特定の性質を持つコードブロックである前記第1コードブロックとして、前記バイナリに含まれるコードの中から抽出する、
 付記1~4の何れか一項に記載のシンボル絞り込み装置。
(付記7)
 付記1~6の何れか一項に記載のシンボル絞り込み装置と、
 少なくとも、前記第1コードブロック又はその子ノードであるコードブロックによってアクセスされる、前記シンボル絞り込み装置から出力された前記シンボル、の内容に基づいて、当該第1コードブロックがバックドアコードである可能性を示すスコア、又は、当該第1コードブロックが実行された際にシステムに及ぼす影響の大きさを示すスコアである、バックドアスコアを算出するバックドアスコア算出手段と、
 前記第1コードブロックと、当該第1コードブロックに対する前記バックドアスコアと、を解析結果として出力する解析結果出力手段と、
 を備えた、プログラム解析装置。
(付記8)
 シンボル絞り込み装置が実行するシンボル抽出方法であって、
 プログラムのバイナリに含まれるコードの中から、複数の所定のシンボルを抽出するシンボル抽出ステップと、
 前記プログラムのバイナリに含まれるコードの中から、特定の性質を持つコードブロックを、バックドアであるか否かの解析対象である第1コードブロックとして抽出する第1コードブロック抽出ステップと、
 前記プログラムのバイナリに含まれるコードの中から、前記複数の所定のシンボルのそれぞれへのアクセスを行う複数の第2コードブロックを抽出する第2コードブロック抽出ステップと、
 前記複数の第2コードブロックのうち、解析されるバックドアのタイプに応じたコントロールフロー上での条件、を満たすような前記第2コードブロック、によってアクセスされるシンボルを、前記複数の所定のシンボルの中から抽出するシンボル絞り込みステップと、
 前記シンボル絞り込みステップにおいて抽出された前記シンボルを出力するシンボル出力ステップと、
 を備えたシンボル抽出方法。
(付記9)
 プログラム解析装置が実行するプログラム解析方法であって、
 少なくとも、前記第1コードブロック又はその子ノードであるコードブロックによってアクセスされる、付記8に記載のシンボル抽出方法において出力されたシンボル、の内容に基づいて、当該第1コードブロックがバックドアコードである可能性を示すスコア、又は、当該第1コードブロックが実行された際にシステムに及ぼす影響の大きさを示すスコアである、バックドアスコアを算出するバックドアスコア算出ステップと、
 前記第1コードブロックと、当該第1コードブロックに対する前記バックドアスコアと、を解析結果として出力する解析結果出力ステップと、
 を備えた、プログラム解析方法。
(付記10)
 プログラムのバイナリに含まれるコードの中から、複数の所定のシンボルを抽出するシンボル抽出処理と、
 前記プログラムのバイナリに含まれるコードの中から、特定の性質を持つコードブロックを、バックドアであるか否かの解析対象である第1コードブロックとして抽出する第1コードブロック抽出処理と、
 前記プログラムのバイナリに含まれるコードの中から、前記複数の所定のシンボルのそれぞれへのアクセスを行う複数の第2コードブロックを抽出する第2コードブロック抽出処理と、
 前記複数の第2コードブロックのうち、解析されるバックドアのタイプに応じたコントロールフロー上での条件、を満たすような前記第2コードブロック、によってアクセスされるシンボルを、前記複数の所定のシンボルの中から抽出するシンボル絞り込み処理と、
 前記シンボル絞り込み処理において抽出された前記シンボルを出力するシンボル出力処理と、
 をコンピュータに実行させるプログラムが格納された非一時的なコンピュータ可読媒体。
(付記11)
 少なくとも、前記第1コードブロック又はその子ノードであるコードブロックによってアクセスされる、前記シンボル出力処理において出力された前記シンボル、の内容に基づいて、当該第1コードブロックがバックドアコードである可能性を示すスコア、又は、当該第1コードブロックが実行された際にシステムに及ぼす影響の大きさを示すスコアである、バックドアスコアを算出するバックドアスコア算出処理と、
 前記第1コードブロックと、当該第1コードブロックに対する前記バックドアスコアと、を解析結果として出力する解析結果出力処理と、
 をさらにコンピュータに実行させる付記10に記載のプログラムが格納された非一時的なコンピュータ可読媒体。
 1 プログラム解析装置
 2 プログラム解析装置
 10 シンボル絞り込み装置
 11 シンボル抽出部
 12 第1コードブロック抽出部
 13 第2コードブロック抽出部
 14 シンボル絞り込み部
 15 シンボル出力部
 17 バックドアスコア算出部
 18 解析結果出力部
 20 シンボル絞り込み装置
 21 シンボル抽出部
 22 第1コードブロック抽出部
 23 第2コードブロック抽出部
 24 シンボル絞り込み部
 25 シンボル出力部
 26 対象条件テーブル
 27 バックドアスコア算出部
 28 解析結果出力部
 50 プログラム解析装置
 51 コードブロック抽出部
 52 バックドアスコア算出部
 53 解析結果出力部
 100 シンボル絞り込み装置
 101 プロセッサ
 102 メモリ

Claims (11)

  1.  プログラムのバイナリに含まれるコードの中から、複数の所定のシンボルを抽出するシンボル抽出手段と、
     前記プログラムのバイナリに含まれるコードの中から、特定の性質を持つコードブロックを、バックドアであるか否かの解析対象である第1コードブロックとして抽出する第1コードブロック抽出手段と、
     前記プログラムのバイナリに含まれるコードの中から、前記複数の所定のシンボルのそれぞれへのアクセスを行う複数のコードブロックを、複数の第2コードブロックとして抽出する第2コードブロック抽出手段と、
     前記複数の第2コードブロックのうち、解析されるバックドアのタイプに応じたコントロールフロー上での条件、を満たすような前記第2コードブロック、によってアクセスされるシンボルを、前記複数の所定のシンボルの中から抽出する、シンボル絞り込み手段と、
     前記シンボル絞り込み手段によって抽出された前記シンボルを出力するシンボル出力手段と、
     を備えたシンボル絞り込み装置。
  2.  前記シンボル抽出手段は、シンボルタイプ及びスコープレベルの少なくとも何れかの属性情報に基づいて決定された複数のシンボルを、前記複数の所定のシンボルとして抽出する、
     請求項1に記載のシンボル絞り込み装置。
  3.  前記シンボル絞り込み手段は、前記複数の第2コードブロックのうち、前記第1コードブロック又はその子ノードである第2コードブロックと、通常のコントロールフローを構成する複数のコードブロックの何れかである第2コードブロックと、の何れからもアクセスされるシンボルを、前記シンボル抽出手段によって抽出された前記複数の所定のシンボルの中から抽出する、
     請求項1又は2に記載のシンボル絞り込み装置。
  4.  前記シンボル絞り込み手段は、前記複数の第2コードブロックのうち、前記第1コードブロック又はその子ノードであり、且つ、外部リソースへのアクセスを行う、前記第2コードブロック、によってアクセスされるシンボルを、前記シンボル抽出手段によって抽出された前記複数の所定のシンボルの中から抽出する、
     請求項1又は2に記載のシンボル絞り込み装置。
  5.  前記第1コードブロック抽出手段は、前記プログラムを実行した際に、通常のコントロールフローでは到達することのできないコードブロックを、前記特定の性質を持つコードブロックである前記第1コードブロックとして、前記バイナリに含まれるコードの中から抽出する、
     請求項1~4の何れか一項に記載のシンボル絞り込み装置。
  6.  前記第1コードブロック抽出手段は、前記プログラムを実行した際に、通常のコントロールフローでは経由する所定の機能を有するコードブロック、を経由しないコードブロックを、前記特定の性質を持つコードブロックである前記第1コードブロックとして、前記バイナリに含まれるコードの中から抽出する、
     請求項1~4の何れか一項に記載のシンボル絞り込み装置。
  7.  請求項1~6の何れか一項に記載のシンボル絞り込み装置と、
     少なくとも、前記第1コードブロック又はその子ノードであるコードブロックによってアクセスされる、前記シンボル絞り込み装置から出力された前記シンボル、の内容に基づいて、当該第1コードブロックがバックドアコードである可能性を示すスコア、又は、当該第1コードブロックが実行された際にシステムに及ぼす影響の大きさを示すスコアである、バックドアスコアを算出するバックドアスコア算出手段と、
     前記第1コードブロックと、当該第1コードブロックに対する前記バックドアスコアと、を解析結果として出力する解析結果出力手段と、
     を備えた、プログラム解析装置。
  8.  シンボル絞り込み装置が実行するシンボル抽出方法であって、
     プログラムのバイナリに含まれるコードの中から、複数の所定のシンボルを抽出するシンボル抽出ステップと、
     前記プログラムのバイナリに含まれるコードの中から、特定の性質を持つコードブロックを、バックドアであるか否かの解析対象である第1コードブロックとして抽出する第1コードブロック抽出ステップと、
     前記プログラムのバイナリに含まれるコードの中から、前記複数の所定のシンボルのそれぞれへのアクセスを行う複数のコードブロックを、複数の第2コードブロックとして抽出する第2コードブロック抽出ステップと、
     前記複数の第2コードブロックのうち、解析されるバックドアのタイプに応じたコントロールフロー上での条件、を満たすような前記第2コードブロック、によってアクセスされるシンボルを、前記複数の所定のシンボルの中から抽出するシンボル絞り込みステップと、
     前記シンボル絞り込みステップにおいて抽出された前記シンボルを出力するシンボル出力ステップと、
     を備えたシンボル抽出方法。
  9.  プログラム解析装置が実行するプログラム解析方法であって、
     少なくとも、前記第1コードブロック又はその子ノードであるコードブロックによってアクセスされる、請求項8に記載のシンボル抽出方法において出力されたシンボル、の内容に基づいて、当該第1コードブロックがバックドアコードである可能性を示すスコア、又は、当該第1コードブロックが実行された際にシステムに及ぼす影響の大きさを示すスコアである、バックドアスコアを算出するバックドアスコア算出ステップと、
     前記第1コードブロックと、当該第1コードブロックに対する前記バックドアスコアと、を解析結果として出力する解析結果出力ステップと、
     を備えた、プログラム解析方法。
  10.  プログラムのバイナリに含まれるコードの中から、複数の所定のシンボルを抽出するシンボル抽出処理と、
     前記プログラムのバイナリに含まれるコードの中から、特定の性質を持つコードブロックを、バックドアであるか否かの解析対象である第1コードブロックとして抽出する第1コードブロック抽出処理と、
     前記プログラムのバイナリに含まれるコードの中から、前記複数の所定のシンボルのそれぞれへのアクセスを行う複数のコードブロックを、複数の第2コードブロックとして抽出する第2コードブロック抽出処理と、
     前記複数の第2コードブロックのうち、解析されるバックドアのタイプに応じたコントロールフロー上での条件、を満たすような前記第2コードブロック、によってアクセスされるシンボルを、前記複数の所定のシンボルの中から抽出するシンボル絞り込み処理と、
     前記シンボル絞り込み処理において抽出された前記シンボルを出力するシンボル出力処理と、
     をコンピュータに実行させるプログラムが格納された非一時的なコンピュータ可読媒体。
  11.  少なくとも、前記第1コードブロック又はその子ノードであるコードブロックによってアクセスされる、前記シンボル出力処理において出力された前記シンボル、の内容に基づいて、当該第1コードブロックがバックドアコードである可能性を示すスコア、又は、当該第1コードブロックが実行された際にシステムに及ぼす影響の大きさを示すスコアである、バックドアスコアを算出するバックドアスコア算出処理と、
     前記第1コードブロックと、当該第1コードブロックに対する前記バックドアスコアと、を解析結果として出力する解析結果出力処理と、
     をさらにコンピュータに実行させる請求項10に記載のプログラムが格納された非一時的なコンピュータ可読媒体。
PCT/JP2021/012047 2021-03-23 2021-03-23 シンボル絞り込み装置、プログラム解析装置、シンボル抽出方法、プログラム解析方法、及び、非一時的なコンピュータ可読媒体 WO2022201323A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
PCT/JP2021/012047 WO2022201323A1 (ja) 2021-03-23 2021-03-23 シンボル絞り込み装置、プログラム解析装置、シンボル抽出方法、プログラム解析方法、及び、非一時的なコンピュータ可読媒体
JP2023508228A JPWO2022201323A5 (ja) 2021-03-23 シンボル絞り込み装置、プログラム解析装置、シンボル抽出方法、プログラム解析方法、及び、プログラム
US18/267,690 US20240045973A1 (en) 2021-03-23 2021-03-23 Symbol narrowing-down apparatus, program analysis apparatus, symbol extraction method, program analysis method, and non-transitory computer readable medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2021/012047 WO2022201323A1 (ja) 2021-03-23 2021-03-23 シンボル絞り込み装置、プログラム解析装置、シンボル抽出方法、プログラム解析方法、及び、非一時的なコンピュータ可読媒体

Publications (1)

Publication Number Publication Date
WO2022201323A1 true WO2022201323A1 (ja) 2022-09-29

Family

ID=83396470

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2021/012047 WO2022201323A1 (ja) 2021-03-23 2021-03-23 シンボル絞り込み装置、プログラム解析装置、シンボル抽出方法、プログラム解析方法、及び、非一時的なコンピュータ可読媒体

Country Status (2)

Country Link
US (1) US20240045973A1 (ja)
WO (1) WO2022201323A1 (ja)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021038704A1 (ja) * 2019-08-27 2021-03-04 日本電気株式会社 バックドア検査装置、バックドア検査方法、及び非一時的なコンピュータ可読媒体

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021038704A1 (ja) * 2019-08-27 2021-03-04 日本電気株式会社 バックドア検査装置、バックドア検査方法、及び非一時的なコンピュータ可読媒体

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
YODA MINAMI; SAKURABA SHUJI; SEI YUICHI; TAHARA YASUYUKI; OHSUGA AKIHIKO: "Detection of the Hardcoded Login Information from Socket Symbols", 2020 INTERNATIONAL CONFERENCE ON COMPUTING, ELECTRONICS & COMMUNICATIONS ENGINEERING (ICCECE), IEEE, 17 August 2020 (2020-08-17), pages 33 - 38, XP033844938, DOI: 10.1109/iCCECE49321.2020.9231177 *

Also Published As

Publication number Publication date
US20240045973A1 (en) 2024-02-08
JPWO2022201323A1 (ja) 2022-09-29

Similar Documents

Publication Publication Date Title
US9621571B2 (en) Apparatus and method for searching for similar malicious code based on malicious code feature information
Han et al. Malware analysis using visualized image matrices
US9336381B1 (en) Entropy-based detection of sensitive information in code
JP2019204482A (ja) 並行脆弱性検出
WO2017049800A1 (zh) 检测应用漏洞代码的方法和装置
US8806648B2 (en) Automatic classification of security vulnerabilities in computer software applications
TWI528216B (zh) 隨選檢測惡意程式之方法、電子裝置、及使用者介面
TW201721418A (zh) 檢測系統及其方法
KR102011725B1 (ko) 악성코드 검출을 위한 화이트리스트 구축 방법 및 이를 수행하기 위한 기록매체 및 장치
US11609985B1 (en) Analyzing scripts to create and enforce security policies in dynamic development pipelines
JP2017004123A (ja) 判定装置、判定方法および判定プログラム
JP6245006B2 (ja) テストケース生成装置、方法、及びプログラム
US10387288B2 (en) Interactive analysis of a security specification
JP7235126B2 (ja) バックドア検査装置、バックドア検査方法、及びプログラム
WO2022201323A1 (ja) シンボル絞り込み装置、プログラム解析装置、シンボル抽出方法、プログラム解析方法、及び、非一時的なコンピュータ可読媒体
CN104572066A (zh) 用于面向屏幕的数据流分析的方法和系统
CN115310087A (zh) 一种基于抽象语法树的网站后门检测方法和系统
JP7468641B2 (ja) ソフトウェア修正装置、ソフトウェア修正方法、及びプログラム
WO2022201324A1 (ja) プログラム解析装置、プログラム解析方法、及び、プログラムが格納された非一時的なコンピュータ可読媒体
CN114691197A (zh) 代码分析方法、装置、电子设备和存储介质
WO2022038701A1 (ja) プログラム解析装置、プログラム解析方法、及びコンピュータ可読媒体
WO2020115853A1 (ja) 情報処理装置、情報処理方法及び情報処理プログラム
WO2020008632A1 (ja) 仮説推論装置、仮説推論方法、及びコンピュータ読み取り可能な記録媒体
US11853751B2 (en) Indirect function call target identification in software
WO2022230074A1 (ja) 検知装置、検知方法及び検知プログラム

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: 21932933

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 18267690

Country of ref document: US

ENP Entry into the national phase

Ref document number: 2023508228

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: 21932933

Country of ref document: EP

Kind code of ref document: A1