WO2025191784A1 - Program, processing device, and method - Google Patents
Program, processing device, and methodInfo
- Publication number
- WO2025191784A1 WO2025191784A1 PCT/JP2024/009981 JP2024009981W WO2025191784A1 WO 2025191784 A1 WO2025191784 A1 WO 2025191784A1 JP 2024009981 W JP2024009981 W JP 2024009981W WO 2025191784 A1 WO2025191784 A1 WO 2025191784A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- call flow
- function
- importance score
- call
- importance
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
Definitions
- This disclosure relates to a program, a processing device, and a method.
- Patent Document 1 discloses a technology that performs static analysis on binary code (i.e., the software being inspected), extracts the functions, system calls, and API calls that are called, as well as the argument values and conditions at the time of the calls, compares the extracted information with the contents of specifications, etc., and detects malicious code based on the comparison results.
- binary code i.e., the software being inspected
- Patent Document 1 treats all call flows included in the software being inspected equally, which can lead to inefficient inspection processing.
- a "call flow” refers to a flow that includes multiple functions with a call relationship.
- An object of the present disclosure is to provide a program, processing device, and method that can realize efficient inspection processing. It should be noted that this object is merely one of several objects that the embodiments disclosed in this specification aim to achieve. Other objects or objectives and novel features will become apparent from the description of this specification or the accompanying drawings.
- the program disclosed herein causes a processing device to execute processing including: identifying a specific system call command or a specific function in a call flow that includes a start function and an end function of the call flow included in the target software and has multiple functions that have a call relationship; identifying an importance score corresponding to the identified type of specific system call command or function based on the correspondence between multiple types of system call commands or functions and the importance scores corresponding to each type; assigning the identified importance score to each function included in the call flow; and outputting call flow information related to each function included in the call flow and the importance scores assigned to each function.
- the processing device disclosed herein comprises: a first identification unit that identifies a specific system call command or a specific function in a call flow that includes a start function and an end function of the call flow included in the target software and has multiple functions that have a call relationship; a second identification unit that identifies an importance score corresponding to the identified specific system call command or type of function based on the correspondence between multiple types of system call commands or functions and the importance scores corresponding to each type; an assignment unit that assigns the identified importance score to each function included in the call flow; and an output unit that outputs call flow information regarding each function included in the call flow and the importance scores assigned to each function.
- the method disclosed herein includes identifying a specific system call command or a specific function in a call flow that includes a start function and an end function of the call flow included in the target software and has multiple functions that have a call relationship; identifying an importance score corresponding to the identified type of specific system call command or function based on the correspondence between multiple types of system call commands or functions and the importance scores corresponding to each type; assigning the identified importance score to each function included in the call flow; and outputting call flow information related to each function included in the call flow and the importance score assigned to each function.
- This disclosure provides a program, processing device, and method that can achieve efficient inspection processing.
- FIG. 1 is a block diagram illustrating an example of a processing device of the present disclosure.
- 10 is a flowchart illustrating an example of a processing operation of the processing device of the present disclosure.
- FIG. 2 is a diagram illustrating an example of a processing operation of the processing device of the present disclosure.
- FIG. 10 is a block diagram illustrating another example of a processing device according to the present disclosure.
- 10 is a flowchart illustrating another example of the processing operation of the processing device of the present disclosure.
- FIG. 10 is a diagram illustrating another example of the processing operation of the processing device of the present disclosure.
- FIG. 10 is a block diagram illustrating another example of a processing device according to the present disclosure.
- 10 is a flowchart illustrating another example of the processing operation of the processing device of the present disclosure.
- FIG. 10 is a flowchart illustrating another example of the processing operation of the processing device of the present disclosure.
- FIG. 10 is a diagram illustrating another example of the processing operation of the processing device of the present disclosure.
- FIG. 10 is a diagram illustrating another example of the processing operation of the processing device of the present disclosure.
- FIG. 10 is a diagram illustrating an example of call flow information.
- FIG. 10 is a diagram illustrating an example of call flow information.
- FIG. 10 is a diagram illustrating an example of call flow information.
- 1 is a block diagram illustrating an example of a software inspection device according to the present disclosure.
- 10 is a flowchart illustrating another example of the processing operation of the processing device of the present disclosure.
- FIG. 2 illustrates an example of the configuration of a processing device.
- FIG. 1 illustrates an example of the configuration of a software inspection device.
- a processing device 10 includes an identification unit (first identification unit) 11, an identification unit (second identification unit) 12, an assignment unit 13, and an output unit 14.
- the identification unit 11 identifies a specific system call command or a specific function in a "call flow" included in the target software (e.g., software to be inspected).
- the "call flow” includes a start function and an end function of the call flow, and has multiple functions that have a call relationship.
- the identification unit 11 acquires "information related to the call flow."
- the "information related to the call flow” includes at least information related to the multiple functions and system call instructions included in the call flow, and information related to the call relationships between the multiple functions.
- the identification unit 11 may then identify a specific system call instruction or a specific function included in the call flow based on a list that holds information related to specific system call instructions and specific functions, and the information related to the call flow.
- the identification unit 12 identifies an importance score corresponding to the type of predetermined system call instruction or function identified by the identification unit 11, based on the correspondence between multiple types of system call instructions or functions and the "importance scores" corresponding to each type.
- a higher importance score may be associated with a system call instruction or function that has a greater impact on the system when exploited by a backdoor or the like.
- the importance score may also be referred to as a maliciousness score.
- the assigning unit 13 assigns the importance score identified by the identifying unit 12 to each function included in the call flow. In other words, the assigning unit 13 propagates the importance score corresponding to the type of system call command or function included in the call flow to all functions included in the same call flow.
- the output unit 14 outputs information regarding each function included in the call flow and the importance score assigned to each function (hereinafter, sometimes referred to as "call flow information").
- the output unit 14 may also output the above-mentioned target software along with the call flow information.
- FIG. 2 is a flowchart illustrating an example of a processing operation of the processing device of the present disclosure.
- the identification unit 11 identifies a specific system call command or a specific function in the "call flow” (step S11). For example, the identification unit 11 acquires "information related to the call flow.” Then, the identification unit 11 identifies the specific system call command or specific function included in the call flow based on a list that holds information related to the specific system call command and the specific function, and the information related to the call flow.
- Figure 3 is a diagram illustrating an example of the processing operation of the processing device of the present disclosure.
- the call flow shown in Figure 3 includes the system call command “execve,” functions “func2,” “func1,” and “do_com.”
- the identification unit 11 identifies the system call command "execve” as the specified system call command in the call flow.
- the binary in Figure 3 represents the target software described above.
- the identification unit 12 identifies the importance score corresponding to the identified type of specified system call instruction or specified function based on the "correspondence" (step S12).
- the system call instruction "execve” is associated with an importance score of "10" in the list above.
- the identification unit 12 identifies the score "10" as the importance score corresponding to the identified type of specified system call instruction. For example, an importance score of "10” may be the most important, and an importance score of "0" may be the least important.
- the assigning unit 13 assigns the importance score identified by the identifying unit 12 to each function included in the call flow (step S13).
- the call flow includes the system call command "execve”, the functions "func2", “func1”, and “do_com”. Therefore, in the example of Figure 3, an importance score of "10" is assigned to each of the functions "func2", “func1", and “do_com”. Note that the assigning unit 13 does not need to assign an importance score to the function "func1", which is an internal function that is not exported.
- the output unit 14 outputs call flow information regarding each function included in the call flow and the importance score assigned to each function (step S14).
- This call flow information is referred to as "policy" in Figure 3.
- the identification unit 11 in the processing device 10 identifies a specific system call instruction or a specific function in a call flow.
- the identification unit 12 identifies an importance score corresponding to the type of specific system call instruction or specific function identified by the identification unit 11 based on the correspondence between multiple types of system call instructions or functions and the importance scores corresponding to each type.
- the assignment unit 13 assigns the importance score identified by the identification unit 12 to each function included in the call flow.
- the output unit 14 outputs call flow information related to each function included in the call flow and the importance score assigned to each function.
- This configuration of the processing device 10 makes it possible to obtain call flow information regarding each function included in a call flow and the importance score assigned to each function.
- resources can be preferentially allocated to inspection processing of functions assigned importance scores indicating higher importance and call flows that include such functions, thereby improving the efficiency of software inspection processing.
- Second Embodiment ⁇ Configuration example of processing device> 4 is a block diagram illustrating another example of a processing device according to the present disclosure.
- a processing device 20 includes an identification unit (first identification unit) 21, an identification unit (second identification unit) 22, an assignment unit 23, and an output unit 24.
- the identification unit 21 identifies a specific system call command or a specific function in a "call flow" included in the target software (e.g., software to be inspected).
- the target software includes multiple call flows, namely, a first call flow and a second call flow.
- the identification unit 21 identifies a specific system call command or a specific function in each of the first call flow and the second call flow.
- the identification unit 21 acquires "information related to the call flow.”
- the "information related to the call flow” includes at least information related to the multiple functions and system call instructions included in the first call flow, and information related to the call relationships between the multiple functions.
- the “information related to the call flow” includes at least information related to the multiple functions and system call instructions included in the second call flow, and information related to the call relationships between the multiple functions.
- the identification unit 21 may then identify a specific system call instruction or a specific function included in the first call flow based on a list that holds information related to specific system call instructions and specific functions, and the information related to the call flow.
- the identification unit 21 may also identify a specific system call instruction or a specific function included in the second call flow based on a list that holds information related to specific system call instructions and specific functions, and the information related to the call flow.
- identification unit 22 identifies an importance score corresponding to the type of predetermined system call instruction or predetermined function identified by identification unit 21 based on the correspondence between multiple types of system call instructions or functions and the "importance scores" corresponding to each type. Specifically, identification unit 22 identifies an importance score corresponding to the type of predetermined system call instruction or predetermined function identified in the first call flow, and an importance score corresponding to the type of predetermined system call instruction or predetermined function identified in the second call flow.
- the importance score corresponding to the type of predetermined system call instruction or predetermined function identified in the first call flow may be referred to as the "first importance score.”
- the importance score corresponding to the type of predetermined system call instruction or predetermined function identified in the second call flow may be referred to as the "second importance score.”
- the assigning unit 23 assigns a first importance score to each function included in the first call flow.
- the assigning unit 23 also assigns a second importance score to each function included in the second call flow. In other words, the assigning unit 23 propagates the importance score corresponding to the type of system call command or function included in the call flow to all functions included in the same call flow.
- the assignment unit 23 selects the importance score corresponding to the highest importance as the importance score of the common function.
- the output unit 24 outputs call flow information regarding each function included in the first call flow and the importance score assigned to each function, and each function included in the second call flow and the importance score assigned to each function.
- the output unit 24 may also output the above-mentioned target software along with the call flow information.
- FIG. 5 is a flowchart showing another example of the processing operation of the processing device of the present disclosure.
- the identification unit 21 identifies a specific system call command or a specific function in each call flow included in the target software (step S21).
- FIG. 6 is a diagram illustrating another example of the processing operation of the processing device of the present disclosure.
- the first call flow shown in FIG. 6 includes the system call instruction “execve”, the function "func2", the function "func1", and the function “do_com”.
- the second call flow shown in FIG. 6 includes the system call instruction "syscall A", the function "func4", the function "func3", and the function "do_com”.
- the identification unit 21 identifies the system call instruction "execve” as the predetermined system call instruction in the first call flow.
- the identification unit 21 also identifies the system call instruction "syscall A" as the predetermined system call instruction in the second call flow.
- the identification unit 22 identifies an importance score corresponding to the identified type of specified system call instruction or specified function based on the "correspondence" (step S22).
- the above correspondence associates the system call instruction "execve” with an importance score of "10", and the system call instruction "syscall A" with an importance score of "8".
- the identification unit 22 identifies the score "10” as the importance score corresponding to the type of system call instruction "execve” identified for the first call flow.
- the identification unit 22 identifies the score "8" as the importance score corresponding to the type of system call instruction "syscall A" identified for the second call flow.
- the assigning unit 23 assigns the importance score identified for each call flow to each function included in each call flow (step S23).
- the first call flow includes the system call command "execve”, the functions "func2", “func1", and “do_com”. Therefore, in the example of FIG. 6, an importance score of "10” is assigned to each of the functions "func2", “func1", and “do_com”.
- the second call flow includes the system call command "syscall A", the functions "func4", "func3", and "do_com”. Therefore, in the example of FIG. 6, an importance score of "8” is assigned to each of the functions "func4", "func3", and “do_com”. Note that the assigning unit 23 does not need to assign importance scores to the functions "func1" and "func3", which are internal functions that are not exported.
- the assignment unit 23 determines whether there are any common functions included in multiple call flows (step S24).
- the assigning unit 23 selects the importance score corresponding to the highest importance as the importance score of the common function (step S25).
- the function "do_com” is a common function, and the importance score "10" and the importance score "8" have been assigned to the function "do_com". Therefore, the assigning unit 23 selects the importance score "10” from the importance score "10” and the importance score "8" as the importance score of the function "do_com".
- the output unit 24 outputs call flow information regarding each function included in each call flow and the importance score assigned to each function (step S26). Note that if there are no common functions included in multiple call flows (step S24 NO), the processing proceeds to step S26.
- the identification unit 21 in the processing device 20 identifies a predetermined system call command or a predetermined function in each of the first call flow and the second call flow.
- the identification unit 22 identifies an importance score corresponding to the predetermined system call command or the type of predetermined function identified in the first call flow, and an importance score corresponding to the predetermined system call command or the type of predetermined function identified in the second call flow.
- the assignment unit 23 assigns a first importance score to each function included in the first call flow.
- the assignment unit 23 also assigns a second importance score to each function included in the second call flow.
- the output unit 24 outputs call flow information related to each function included in the first call flow and the importance scores assigned to each function, and each function included in the second call flow and the importance scores assigned to each function.
- This configuration of the processing device 20 makes it possible to obtain call flow information regarding each function included in each call flow and the importance score assigned to each function, even if the target software contains multiple call flows.
- a processing device 30 includes an identification unit (first identification unit) 31, an identification unit (second identification unit) 32, an assignment unit 33, and an output unit 34.
- the identification unit 31 identifies a specific system call command or a specific function in each of the first call flow and the second call flow.
- the identification unit 32 identifies an importance score and a category corresponding to the type of specified system call instruction or specified function identified by the identification unit 31 based on the "correspondence relationship.”
- the "correspondence relationship” associates multiple types of system call instructions or functions with "importance scores” and “categories” corresponding to each type.
- the identification unit 32 identifies a first importance score and a first category corresponding to the type of specified system call instruction or specified function identified in the first call flow.
- the identification unit 32 identifies a second importance score and a second category corresponding to the type of specified system call instruction or specified function identified in the second call flow.
- the categories may be defined in terms of the functionality performed by the functions, such as “writing to a file” or “creating a process.”
- the categories may be defined for each security function, such as "integrity,” “confidentiality,” or “availability.”
- the categories may be categories of vulnerabilities that may arise due to the functions, and may be defined, for example, by a Common Weakness Enumeration (CWE).
- CWE Common Weakness Enumeration
- the assigning unit 33 assigns a first importance score and a first category to each function included in the first call flow. Furthermore, the assigning unit 23 assigns a second importance score and a second category to each function included in the second call flow.
- the assigning unit 33 selects the importance score of the common function that corresponds to the highest importance out of the first importance score and the second importance score. In other words, when the first call flow and the second call flow include a common function and the first category and the second category are the same, the assigning unit 33 assigns the score of the common function that corresponds to the higher importance out of the first importance score and the second importance score.
- the output unit 34 outputs call flow information regarding each function included in the first call flow and the importance score assigned to each function, i.e., the policy of the first category. Also, if the first category and the second category are different, the output unit 34 outputs call flow information regarding each function included in the second call flow and the importance score assigned to each function, i.e., the policy of the second category.
- the output unit 34 may also output the above-mentioned target software along with the call flow information.
- FIG. 8 is a flowchart showing another example of the processing operation of the processing device of the present disclosure.
- the identification unit 31 identifies a specific system call command or a specific function in each call flow included in the target software (step S31).
- FIG. 9 is a diagram illustrating another example of the processing operation of the processing device of the present disclosure.
- the first call flow shown in FIG. 9 includes the system call instruction “execve”, the function "func2", the function "func1", and the function “do_com”.
- the second call flow shown in FIG. 9 includes the system call instruction "syscall A", the function "func4", the function "func3", and the function "do_com”.
- the identification unit 31 identifies the system call instruction "execve” as the predetermined system call instruction in the first call flow.
- the identification unit 31 also identifies the system call instruction "syscall A" as the predetermined system call instruction in the second call flow.
- the identification unit 32 identifies the importance score and category corresponding to the identified type of specified system call instruction or specified function based on the "correspondence" (step S32).
- the above correspondence associates the system call instruction “execve” with an importance score of "10" and category "A,” and the system call instruction “syscall A” with an importance score of "8" and category “B.”
- the identification unit 32 identifies the score "10" and category “A” as the importance score and category corresponding to the type of system call instruction "execve” identified for the first call flow.
- the identification unit 32 also identifies the score "8" and category "B” as the importance score and category corresponding to the type of system call instruction "syscall A" identified for the second call flow.
- the assignment unit 33 assigns the importance score identified for each call flow to each function included in each call flow (step S33).
- the first call flow includes the system call command "execve”, the functions "func2", “func1”, and “do_com”. Therefore, in the example of Figure 9, the functions "func2", “func1”, and “do_com” are each assigned an importance score of "10" and a category of "A”.
- the second call flow includes the system call command "syscall A", the functions "func4", "func3”, and "do_com”.
- the functions "func4", "func3", and “do_com” are each assigned an importance score of "8" and a category of "B". Note that the assignment unit 33 does not need to assign importance scores and categories to the functions "func1" and "func3", which are internal functions that are not exported.
- the assignment unit 33 determines whether there are any common functions included in multiple call flows of the same category (step S34).
- the assigning unit 33 selects the importance score corresponding to the highest importance as the importance score of the common function (step S35).
- the function "do_com” is a common function of the first call flow and the second call flow, but the category of the first call flow is different from the category of the second call flow. If the category of the first call flow is "A" and the category of the second call flow is also "A”, the assigning unit 33 selects the importance score "10" as the importance score of the function "do_com” from the importance score "10" and the importance score "8".
- the output unit 34 outputs call flow information regarding each function included in each call flow and the importance score assigned to each function (step S26).
- the output unit 34 outputs call flow information (policy) for each call flow.
- the output unit 34 outputs call flow information (policy) common to the multiple call flows.
- the assigning unit 33 in the processing device 30 assigns the importance score and category identified by the identifying unit 32 to each function included in the call flow.
- the output unit 34 outputs call flow information related to each function included in the call flow and the importance score and category assigned to each function.
- This configuration of the processing device 30 makes it possible to obtain call flow information regarding each function included in the call flow and the importance score and category assigned to each function. By using this call flow information during software inspection processing, resources can be preferentially allocated to inspection processing of call flows in the desired category, thereby improving the efficiency of software inspection processing.
- FIG. 10 is a diagram illustrating another example of the processing operation of the processing device of the present disclosure.
- the call flow may span multiple binaries (in FIG. 10, a main binary and a sub-binary (library (lib))).
- the output unit 34 may output call flow information (policy) on a binary basis (library basis).
- FIGS. 11A, 11B, and 11C are diagrams illustrating examples of call flow information.
- FIG. 11A shows call flow information after analysis of library C.
- FIG. 11B shows call flow information after analysis of library B.
- FIG. 11C shows call flow information after analysis of library A.
- the importance score of "10" is selected as the importance score for the library A function "do_com" from the importance scores of "10" and "8.”
- the software inspection device 50 includes an identification unit (first identification unit) 51, an identification unit (second identification unit) 52, an assignment unit 53, an output unit 54, and an inspection processing unit 55.
- the identification unit 51, the identification unit 52, the assignment unit 53, and the output unit 54 may have the same functions as the identification unit 11, the identification unit 12, the assignment unit 13, and the output unit 14.
- the identification unit 51, the identification unit 52, the assignment unit 53, and the output unit 54 may have the same functions as the identification unit 21, the identification unit 22, the assignment unit 23, and the output unit 24.
- the identification unit 51, the identification unit 52, the assignment unit 53, and the output unit 54 may have the same functions as the identification unit 31, the identification unit 32, the assignment unit 33, and the output unit 34.
- the description will be given by taking as an example that the identification unit 51, the identification unit 52, the assignment unit 53, and the output unit 54 have the same functions as the identification unit 31, the identification unit 32, the assignment unit 33, and the output unit 34.
- the inspection processing unit 55 sets a portion of the target software as the inspection range based on the specified inspection range specification parameters, and performs an inspection of the target software within the set inspection range. For example, the inspection processing unit 55 performs "process flow analysis" as the inspection process for the target software.
- the above inspection range specification parameters may be score thresholds, categories, or a combination of score thresholds and categories.
- the inspection processing unit 55 will inspect the target software with functions having an importance score value of 9 or greater as the inspection range. In other words, based on the call flow information, the inspection processing unit 55 may inspect functions of the multiple functions included in the call flow of the target software whose importance indicated by an importance score is higher than a predetermined level.
- the inspection processing unit 55 inspects the target software with functions in category "A" as the inspection range.
- the inspection processing unit 55 will inspect the target software with the inspection range set to functions in category "A" with an importance score value of 9 or greater.
- the inspection processing unit 55 receives a "call flow function list" corresponding to each call flow, and call flow information regarding each function included in each call flow and the importance score and category assigned to each function.
- the inspection processing unit 55 then performs data flow analysis and control flow analysis on the call flows (i.e., functions) in the inspection range specified by the inspection range specification parameters, thereby identifying conditional branches in the call flows in the inspection range that are likely to trigger a backdoor.
- the inspection processing unit 55 then outputs inspection results that include information regarding the identified conditional branches, etc.
- FIG. 13 is a flowchart showing another example of the processing operation of the processing device of the present disclosure.
- the identification unit 51 identifies a specific system call command or a specific function in each call flow included in the target software (step S41).
- the identification unit 52 identifies the importance score and category corresponding to the identified specific system call instruction or type of specific function based on the "correspondence" (step S42).
- the assigning unit 53 assigns the importance score identified for each call flow to each function included in each call flow (step S43).
- the assignment unit 53 determines whether there are any common functions included in multiple call flows of the same category (step S44).
- the assignment unit 53 selects the importance score corresponding to the highest importance as the importance score of the common function (step S45).
- the output unit 54 outputs call flow information regarding each function included in each call flow and the importance score assigned to each function, as well as the target software (step S46).
- the inspection processing unit 55 sets a portion of the target software as the inspection range based on the specified inspection range specification parameters, and performs an inspection of the target software within the set inspection range (step S47).
- the inspection processing unit 55 in the software inspection device 50 sets a portion of the target software as the inspection range based on the specified inspection range designation parameters, and performs inspection of the target software within the set inspection range.
- This software inspection device 50 configuration allows resources to be preferentially allocated to inspection processing within the inspection range, thereby improving the efficiency of software inspection processing.
- FIG. 14 is a diagram illustrating an example of the configuration of a processing device.
- the processing device 100 includes a processor 101 and a memory 102.
- the processor 101 may be, for example, a microprocessor, a micro processing unit (MPU), or a central processing unit (CPU).
- the processor 101 may include multiple processors.
- the memory 102 is configured by a combination of volatile memory and non-volatile memory.
- the memory 102 may include storage located away from the processor 101. In this case, the processor 101 may access the memory 102 via an I (Input)/O (Output) interface (not shown).
- the processing devices 10, 20, and 30 of the first to third embodiments can each have the configuration shown in FIG. 14.
- the identification units 11, 21, and 31, the identification units 12, 22, and 32, the assignment units 13, 23, and 33, and the output units 14, 24, and 34 of the processing devices 10, 20, and 30 of the first to third embodiments may be realized by the processor 101 reading and executing a program stored in the memory 102.
- the processing devices 10, 20, and 30 of the first to third embodiments can be realized by software.
- the program can be stored using various types of non-transitory computer-readable medium and supplied to the processing devices 10, 20, and 30.
- non-transitory computer-readable medium examples include magnetic recording media (e.g., flexible disks, magnetic tapes, and hard disk drives) and magneto-optical recording media (e.g., magneto-optical disks).
- Further examples of non-transitory computer-readable media include CD-ROM (Read Only Memory), CD-R, and CD-R/W.
- Further examples of non-transitory computer-readable media include semiconductor memory. Semiconductor memory includes, for example, mask ROM, PROM (Programmable ROM), EPROM (Erasable PROM), flash ROM, and RAM (Random Access Memory).
- the program may also be supplied to the processing devices 10, 20, and 30 by various types of transitory computer-readable medium. Examples of transitory computer-readable medium include electrical signals, optical signals, and electromagnetic waves.
- the transitory computer-readable medium may supply the program to the processing devices 10, 20, and 30 via wired communication paths such as electrical wires and optical fibers, or wireless communication paths.
- the identification units 11, 21, 31, identification units 12, 22, 32, assignment units 13, 23, 33, and output units 14, 24, 34 of the processing devices 10, 20, 30 of the first to third embodiments may each be realized by dedicated hardware.
- some or all of the components of each device may be realized by general-purpose or dedicated circuits, processors, etc., or a combination of these. These may be configured by a single chip, or by multiple chips connected via a bus. Some or all of the components of each device may be realized by a combination of the above-mentioned circuits, etc., and programs.
- processors that can be used include CPUs (Central Processing Units), GPUs (Graphics Processing Units), FPGAs (Field-Programmable Gate Arrays), quantum processors (quantum computer control chips), etc.
- the multiple information processing devices, circuits, etc. may be centrally located or distributed.
- the information processing devices, circuits, etc. may be realized as a client-server system, cloud computing system, etc., in which each is connected via a communications network.
- the functions of the processing devices 10, 20, 30 of the first to third embodiments may be provided in a SaaS (Software as a Service) format.
- Figure 15 is a diagram showing an example configuration of a software inspection device.
- the software inspection device 200 has a processor 201 and a memory 202.
- the processor 201 may be, for example, a microprocessor, an MPU (Micro Processing Unit), or a CPU (Central Processing Unit).
- the processor 201 may include multiple processors.
- the memory 202 is composed of a combination of volatile memory and non-volatile memory.
- the memory 202 may include storage located away from the processor 201. In this case, the processor 201 may access the memory 202 via an I (Input)/O (Output) interface not shown.
- the software inspection device 50 of the fourth embodiment may have the configuration shown in FIG. 15.
- the identification unit 51, identification unit 52, assignment unit 53, output unit 54, and inspection processing unit 55 of the software inspection device 50 of the fourth embodiment may be realized by the processor 201 reading and executing a program stored in the memory 202.
- the software inspection device 50 of the fourth embodiment can be realized by software.
- the program can be stored using various types of non-transitory computer-readable medium and supplied to the software inspection device 50. Examples of non-transitory computer-readable medium include magnetic recording media (e.g., flexible disks, magnetic tapes, hard disk drives) and magneto-optical recording media (e.g., magneto-optical disks).
- non-transitory computer-readable media include CD-ROMs (Read Only Memory), CD-Rs, and CD-R/Ws.
- Further examples of non-transitory computer-readable media include semiconductor memories. Semiconductor memories include, for example, mask ROM, PROM (Programmable ROM), EPROM (Erasable PROM), flash ROM, and RAM (Random Access Memory).
- the program may also be supplied to the software inspection device 50 by various types of transitory computer-readable medium. Examples of transitory computer-readable medium include electrical signals, optical signals, and electromagnetic waves.
- the transitory computer-readable medium may supply the program to the software inspection device 50 via a wired communication path such as an electrical wire or optical fiber, or a wireless communication path.
- the identification unit 51, identification unit 52, assignment unit 53, output unit 54, and inspection processing unit 55 of the software inspection device 50 of the fourth embodiment may each be realized by dedicated hardware.
- some or all of the components of each device may be realized by general-purpose or dedicated circuits, processors, etc., or a combination of these. These may be configured by a single chip, or by multiple chips connected via a bus. Some or all of the components of each device may be realized by a combination of the above-mentioned circuits, etc., and programs.
- processors that can be used include CPUs (Central Processing Units), GPUs (Graphics Processing Units), FPGAs (Field-Programmable Gate Arrays), quantum processors (quantum computer control chips), etc.
- the multiple information processing devices, circuits, etc. may be centrally located or distributed.
- the information processing devices, circuits, etc. may be realized as a client-server system, cloud computing system, etc., in a form in which each is connected via a communications network.
- the functions of the software inspection device 50 of the fourth embodiment may be provided in the form of SaaS (Software as a Service).
- Attachment 1 The program described in claim 1. (Appendix 3) assigning the importance score includes, when a common function included in both the first call flow and the second call flow exists, assigning the common function a score corresponding to a higher importance out of the first importance score and the second importance score.
- the subject software includes a first call flow and a second call flow; Identifying the predetermined system call instruction or the predetermined function includes identifying the predetermined system call instruction or the predetermined function in each of the first call flow and the second call flow; identifying the importance score includes identifying a first importance score and a first category corresponding to a predetermined system call instruction or a predetermined type of function identified in the first call flow, and a second importance score and a second category corresponding to a predetermined system call instruction or a predetermined type of function identified in the second call flow, assigning the importance scores includes assigning the first importance score and the first category to each function included in the first call flow, and assigning the second importance score and the second category to each function included in the second call flow.
- Attachment 4 The program described in claim 4. (Appendix 6) assigning the importance score includes, when a common function included in both the first call flow and the second call flow exists and the first category and the second category are the same, assigning the common function a score corresponding to a higher importance out of the first importance score and the second importance score. Attachment 5. The program according to claim 5. (Appendix 7) the outputting includes outputting the target software and the call flow information. 7. The program according to any one of appendices 1 to 6. (Appendix 8) the processing includes determining, based on the call flow information, a function having an importance score higher than a predetermined level among a plurality of functions included in the call flow of the target software as a target for inspection processing; 8. The program according to claim 7.
- (Appendix 9) a first identification unit that identifies a predetermined system call command or a predetermined function in a call flow that includes a start function and an end function of the call flow included in the target software and has a plurality of functions that have a call relationship; a second identification unit that identifies an importance score corresponding to the identified type of predetermined system call instruction or function based on a correspondence relationship between a plurality of types of system call instruction or function and an importance score corresponding to each type; an assigning unit that assigns the identified importance score to each function included in the call flow; an output unit that outputs call flow information regarding each function included in the call flow and an importance score assigned to each function;
- a processing device comprising: (Appendix 10) the subject software includes a first call flow and a second call flow; the first identification unit identifies a predetermined system call command or a predetermined function in each of the first call flow and the second call flow; the second identification unit identifies a first importance score corresponding to the type of a predetermined
- the processing device of claim 9. (Appendix 11) When a common function included in both the first call flow and the second call flow exists, the assigning unit assigns a score corresponding to a higher importance between the first importance score and the second importance score to the common function. 11. The processing device of claim 10. (Appendix 12) the correspondence relationship associates the plurality of types with importance scores and categories corresponding to each type; the assigning unit assigns the identified importance score and category to each function included in the call flow. 10. The processing device of claim 9.
- the subject software includes a first call flow and a second call flow; the first identification unit identifies a predetermined system call command or a predetermined function in each of the first call flow and the second call flow; the second identification unit identifies a first importance score and a first category corresponding to the type of the predetermined system call instruction or the predetermined function identified in the first call flow, and a second importance score and a second category corresponding to the type of the predetermined system call instruction or the predetermined function identified in the second call flow, the assigning unit assigns the first importance score and the first category to each function included in the first call flow, and assigns the second importance score and the second category to each function included in the second call flow. 13.
- the assigning unit assigns, to the common function, a score corresponding to a higher importance between the first importance score and the second importance score, when a common function included in both the first call flow and the second call flow exists and the first category and the second category are the same.
- the processing device of claim 13. the output unit outputs the target software and the call flow information. 15. The processing device of any one of appendices 9 to 14.
- a software inspection device comprising: (Appendix 17) Identifying a predetermined system call command or a predetermined function in a call flow that includes a start function and an end function of the call flow included in the target software and has a plurality of functions that have a call relationship; Identifying an importance score corresponding to the specified type of system call instruction or function based on a correspondence relationship between a plurality of types of system call instructions or functions and an importance score corresponding to each type; assigning the identified importance score to each function in the call flow; outputting call flow information relating to each function included in the call flow and the importance score assigned to each function;
- a method comprising: (Appendix 18) the subject software includes a first call flow and a second call flow; identifying the predetermined system call
- assigning the importance score includes, when a common function included in both the first call flow and the second call flow exists, assigning the common function a score corresponding to a higher importance among the first importance score and the second importance score. 19.
- assigning the importance score includes assigning the identified importance score and category to each function included in the call flow. 18. The method of claim 17.
- the subject software includes a first call flow and a second call flow; Identifying the predetermined system call instruction or the predetermined function includes identifying the predetermined system call instruction or the predetermined function in each of the first call flow and the second call flow; identifying the importance score includes identifying a first importance score and a first category corresponding to a predetermined system call instruction or a predetermined type of function identified in the first call flow, and a second importance score and a second category corresponding to a predetermined system call instruction or a predetermined type of function identified in the second call flow, assigning the importance scores includes assigning the first importance score and the first category to each function included in the first call flow, and assigning the second importance score and the second category to each function included in the second call flow. 21.
- assigning the importance score includes, when a common function included in both the first call flow and the second call flow exists and the first category and the second category are the same, assigning the common function a score corresponding to a higher importance out of the first importance score and the second importance score. 22.
- the method of claim 21. (Appendix 23) the outputting includes outputting the target software and the call flow information. 23. The method of any one of claims 17 to 22. (Appendix 24) the method includes determining, based on the call flow information, functions of a plurality of functions included in the call flow of the target software, the functions having importance indicated by importance scores higher than a predetermined level, as targets of inspection processing; 24. The method of claim 23.
- Processing device 11 Identification unit (first identification unit) 12 Specific Section (Second Specific Section) 13 Assignment unit 14 Output unit 20 Processing device 21 Identification unit (first identification unit) 22 Specific Section (Second Specific Section) 23 Assignment unit 24 Output unit 30 Processing device 31 Identification unit (first identification unit) 32 Specific Section (Second Specific Section) 33 Assignment unit 34 Output unit 50 Software inspection device 51 Identification unit (first identification unit) 52 Specific Section (Second Specific Section) 53 Assignment unit 54 Output unit 55 Inspection processing unit 11
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
Description
本開示は、プログラム、処理装置、及び方法に関する。 This disclosure relates to a program, a processing device, and a method.
特許文献1には、バイナリコード(つまり、検査対象ソフトウェア)に対して静的解析をし、呼出される関数やシステムコール、APIの呼出しと呼出し時の引数値及び条件を抽出し、抽出された情報と仕様書等の内容とを比較し、比較結果を元に不正コードの検出する、技術が開示されている。 Patent Document 1 discloses a technology that performs static analysis on binary code (i.e., the software being inspected), extracts the functions, system calls, and API calls that are called, as well as the argument values and conditions at the time of the calls, compares the extracted information with the contents of specifications, etc., and detects malicious code based on the comparison results.
しかしながら、特許文献1に開示の技術では、検査対象ソフトウェアに含まれるすべてのコールフローを同等に扱い検査処理が非効率である可能性がある。「コールフロー」は、呼出関係を有する複数の関数を含むフローを意味する。 However, the technology disclosed in Patent Document 1 treats all call flows included in the software being inspected equally, which can lead to inefficient inspection processing. A "call flow" refers to a flow that includes multiple functions with a call relationship.
本開示の目的は、効率的な検査処理を実現させることができる、プログラム、処理装置及び方法を提供することにある。なお、この目的は、本明細書に開示される複数の実施形態が達成しようとする複数の目的の1つに過ぎないことに留意されるべきである。その他の目的又は課題と新規な特徴は、本明細書の記述又は添付図面から明らかにされる。 An object of the present disclosure is to provide a program, processing device, and method that can realize efficient inspection processing. It should be noted that this object is merely one of several objects that the embodiments disclosed in this specification aim to achieve. Other objects or objectives and novel features will become apparent from the description of this specification or the accompanying drawings.
本開示に係るプログラムは、対象ソフトウェアに含まれるコールフローの始点の関数及び終点の関数を含み且つ呼出関係を有する複数の関数を有する前記コールフローにおいて、所定のシステムコール命令又は所定の関数を特定することと、システムコール命令又は関数についての複数の種類と各種類に応じた重要度スコアとの対応関係に基づいて、前記特定された所定のシステムコール命令又は所定の関数の種類に対応する重要度スコアを特定することと、前記コールフローに含まれる各関数に、前記特定された重要度スコアを付与することと、前記コールフローに含まれる各関数及び各関数に付与された重要度スコアに関するコールフロー情報を出力することと、を含む、処理を処理装置に実行させる。 The program disclosed herein causes a processing device to execute processing including: identifying a specific system call command or a specific function in a call flow that includes a start function and an end function of the call flow included in the target software and has multiple functions that have a call relationship; identifying an importance score corresponding to the identified type of specific system call command or function based on the correspondence between multiple types of system call commands or functions and the importance scores corresponding to each type; assigning the identified importance score to each function included in the call flow; and outputting call flow information related to each function included in the call flow and the importance scores assigned to each function.
本開示に係る処理装置は、対象ソフトウェアに含まれるコールフローの始点の関数及び終点の関数を含み且つ呼出関係を有する複数の関数を有する前記コールフローにおいて、所定のシステムコール命令又は所定の関数を特定する第1特定部と、システムコール命令又は関数についての複数の種類と各種類に応じた重要度スコアとの対応関係に基づいて、前記特定された所定のシステムコール命令又は所定の関数の種類に対応する重要度スコアを特定する第2特定部と、前記コールフローに含まれる各関数に、前記特定された重要度スコアを付与する付与部と、前記コールフローに含まれる各関数及び各関数に付与された重要度スコアに関するコールフロー情報を出力する出力部と、を具備する。 The processing device disclosed herein comprises: a first identification unit that identifies a specific system call command or a specific function in a call flow that includes a start function and an end function of the call flow included in the target software and has multiple functions that have a call relationship; a second identification unit that identifies an importance score corresponding to the identified specific system call command or type of function based on the correspondence between multiple types of system call commands or functions and the importance scores corresponding to each type; an assignment unit that assigns the identified importance score to each function included in the call flow; and an output unit that outputs call flow information regarding each function included in the call flow and the importance scores assigned to each function.
本開示に係る方法は、対象ソフトウェアに含まれるコールフローの始点の関数及び終点の関数を含み且つ呼出関係を有する複数の関数を有する前記コールフローにおいて、所定のシステムコール命令又は所定の関数を特定することと、システムコール命令又は関数についての複数の種類と各種類に応じた重要度スコアとの対応関係に基づいて、前記特定された所定のシステムコール命令又は所定の関数の種類に対応する重要度スコアを特定することと、前記コールフローに含まれる各関数に、前記特定された重要度スコアを付与することと、前記コールフローに含まれる各関数及び各関数に付与された重要度スコアに関するコールフロー情報を出力することと、を含む。 The method disclosed herein includes identifying a specific system call command or a specific function in a call flow that includes a start function and an end function of the call flow included in the target software and has multiple functions that have a call relationship; identifying an importance score corresponding to the identified type of specific system call command or function based on the correspondence between multiple types of system call commands or functions and the importance scores corresponding to each type; assigning the identified importance score to each function included in the call flow; and outputting call flow information related to each function included in the call flow and the importance score assigned to each function.
本開示により、効率的な検査処理を実現させることができる、プログラム、処理装置及び方法を提供することができる。 This disclosure provides a program, processing device, and method that can achieve efficient inspection processing.
以下、図面を参照しつつ、実施形態について説明する。なお、本開示において図面は1以上の実施の形態に関連付けられうる。また、図面の各要素は、1以上の実施の形態に当てはまりうる。また、実施形態において、同一又は同等の要素には、同一の符号を付し、重複する説明は省略される。 Embodiments will be described below with reference to the drawings. Note that in this disclosure, the drawings may relate to one or more embodiments. Furthermore, each element in the drawings may apply to one or more embodiments. Furthermore, in the embodiments, identical or equivalent elements are given the same reference numerals, and redundant explanations will be omitted.
<第1実施形態>
<処理装置の構成例>
図1は、本開示の処理装置の一例を示すブロック図である。図1において処理装置10は、特定部(第1特定部)11と、特定部(第2特定部)12と、付与部13と、出力部14とを有している。
First Embodiment
<Configuration example of processing device>
1 is a block diagram illustrating an example of a processing device according to the present disclosure. In FIG. 1 , a processing device 10 includes an identification unit (first identification unit) 11, an identification unit (second identification unit) 12, an assignment unit 13, and an output unit 14.
特定部11は、対象ソフトウェア(例えば、検査対象ソフトウェア)に含まれる「コールフロー」において、所定のシステムコール命令又は所定の関数を特定する。「コールフロー」は、コールフローの始点の関数及び終点の関数を含み且つ呼出関係を有する複数の関数を有する。 The identification unit 11 identifies a specific system call command or a specific function in a "call flow" included in the target software (e.g., software to be inspected). The "call flow" includes a start function and an end function of the call flow, and has multiple functions that have a call relationship.
例えば、特定部11は、「コールフローに関する情報」を取得する。「コールフローに関する情報」は、コールフローに含まれる複数の関数及びシステムコール命令に関する情報、並びに、該複数の関数の呼出関係に関する情報を、少なくとも含む。そして、特定部11は、所定のシステムコール命令及び所定の関数に関する情報を保持するリストと、コールフローに関する情報とに基づいて、コールフローに含まれる所定のシステムコール命令又は所定の関数を特定してもよい。 For example, the identification unit 11 acquires "information related to the call flow." The "information related to the call flow" includes at least information related to the multiple functions and system call instructions included in the call flow, and information related to the call relationships between the multiple functions. The identification unit 11 may then identify a specific system call instruction or a specific function included in the call flow based on a list that holds information related to specific system call instructions and specific functions, and the information related to the call flow.
特定部12は、システムコール命令又は関数についての複数の種類と各種類に応じた「重要度スコア」との対応関係に基づいて、特定部11にて特定された所定のシステムコール命令又は所定の関数の種類に対応する重要度スコアを特定する。上記の対応関係では、例えば、システムコール命令又は関数がバックドア等に悪用されたときにシステムに与える影響が大きいシステムコール命令又は関数ほど高い重要度スコアが対応づけられていてもよい。このとき重要度スコアは、悪性度スコアと呼ぶこともできる。 The identification unit 12 identifies an importance score corresponding to the type of predetermined system call instruction or function identified by the identification unit 11, based on the correspondence between multiple types of system call instructions or functions and the "importance scores" corresponding to each type. In the above correspondence, for example, a higher importance score may be associated with a system call instruction or function that has a greater impact on the system when exploited by a backdoor or the like. In this case, the importance score may also be referred to as a maliciousness score.
付与部13は、コールフローに含まれる各関数に、特定部12にて特定された重要度スコアを付与する。すなわち、付与部13は、コールフローに含まれるシステムコール命令又は関数の種類に対応する重要度スコアを、同じコールフローに含まれるすべての関数に伝搬させる。 The assigning unit 13 assigns the importance score identified by the identifying unit 12 to each function included in the call flow. In other words, the assigning unit 13 propagates the importance score corresponding to the type of system call command or function included in the call flow to all functions included in the same call flow.
出力部14は、コールフローに含まれる各関数及び各関数に付与された重要度スコアに関する情報(以下では、「コールフロー情報」と呼ばれることがある)を出力する。出力部14は、コールフロー情報と共に上記の対象ソフトウェアを出力してもよい。 The output unit 14 outputs information regarding each function included in the call flow and the importance score assigned to each function (hereinafter, sometimes referred to as "call flow information"). The output unit 14 may also output the above-mentioned target software along with the call flow information.
<処理装置の動作例>
図2は、本開示の処理装置の処理動作の一例を示すフローチャートである。
<Example of processing device operation>
FIG. 2 is a flowchart illustrating an example of a processing operation of the processing device of the present disclosure.
特定部11は、「コールフロー」において、所定のシステムコール命令又は所定の関数を特定する(ステップS11)。例えば、特定部11は、「コールフローに関する情報」を取得する。そして、特定部11は、所定のシステムコール命令及び所定の関数に関する情報を保持するリストと、コールフローに関する情報とに基づいて、コールフローに含まれる所定のシステムコール命令又は所定の関数を特定する。 The identification unit 11 identifies a specific system call command or a specific function in the "call flow" (step S11). For example, the identification unit 11 acquires "information related to the call flow." Then, the identification unit 11 identifies the specific system call command or specific function included in the call flow based on a list that holds information related to the specific system call command and the specific function, and the information related to the call flow.
図3は、本開示の処理装置の処理動作の一例の説明に供する図である。例えば、上記のリストには、所定のシステムコール命令として「execve」が保持されている。そして、図3に示されるコールフローは、システムコール命令「execve」、関数「func2」、関数「func1」、関数「do_com」を含んでいる。この場合、特定部11は、コールフローにおいて所定のシステムコール命令としてシステムコール命令「execve」を特定する。なお、図3のバイナリは、上記の対象ソフトウェアを示す。 Figure 3 is a diagram illustrating an example of the processing operation of the processing device of the present disclosure. For example, the above list holds "execve" as the specified system call command. The call flow shown in Figure 3 includes the system call command "execve," functions "func2," "func1," and "do_com." In this case, the identification unit 11 identifies the system call command "execve" as the specified system call command in the call flow. Note that the binary in Figure 3 represents the target software described above.
特定部12は、特定された所定のシステムコール命令又は所定の関数の種類に対応する重要度スコアを、「対応関係」に基づいて特定する(ステップS12)。図3の例では、上記のリストにおいて、システムコール命令「execve」と重要度スコア「10」とが対応づけられている。このとき、特定部12は、特定された所定のシステムコール命令の種類に対応する重要度スコアとして、スコア「10」を特定する。例えば重要度スコア「10」が最も重要度が高く、重要度スコア「0」が最も重要度が低くてもよい。 The identification unit 12 identifies the importance score corresponding to the identified type of specified system call instruction or specified function based on the "correspondence" (step S12). In the example of Figure 3, the system call instruction "execve" is associated with an importance score of "10" in the list above. In this case, the identification unit 12 identifies the score "10" as the importance score corresponding to the identified type of specified system call instruction. For example, an importance score of "10" may be the most important, and an importance score of "0" may be the least important.
付与部13は、コールフローに含まれる各関数に、特定部12にて特定された重要度スコアを付与する(ステップS13)。上記の通り、図3の例では、コールフローは、システムコール命令「execve」、関数「func2」、関数「func1」、関数「do_com」を含んでいる。このため、図3の例では、関数「func2」、関数「func1」、関数「do_com」のそれぞれに重要度スコア「10」が付与される。なお、付与部13は、エクスポートしない内部関数である関数「func1」に対しては重要度スコアを付与しなくてもよい。 The assigning unit 13 assigns the importance score identified by the identifying unit 12 to each function included in the call flow (step S13). As described above, in the example of Figure 3, the call flow includes the system call command "execve", the functions "func2", "func1", and "do_com". Therefore, in the example of Figure 3, an importance score of "10" is assigned to each of the functions "func2", "func1", and "do_com". Note that the assigning unit 13 does not need to assign an importance score to the function "func1", which is an internal function that is not exported.
出力部14は、コールフローに含まれる各関数及び各関数に付与された重要度スコアに関するコールフロー情報を出力する(ステップS14)。このコールフロー情報は、図3では「ポリシ」と記載されている。 The output unit 14 outputs call flow information regarding each function included in the call flow and the importance score assigned to each function (step S14). This call flow information is referred to as "policy" in Figure 3.
以上のように第1実施形態によれば、処理装置10にて特定部11は、コールフローにおいて、所定のシステムコール命令又は所定の関数を特定する。特定部12は、システムコール命令又は関数についての複数の種類と各種類に応じた重要度スコアとの対応関係に基づいて、特定部11にて特定された所定のシステムコール命令又は所定の関数の種類に対応する重要度スコアを特定する。付与部13は、コールフローに含まれる各関数に、特定部12にて特定された重要度スコアを付与する。出力部14は、コールフローに含まれる各関数及び各関数に付与された重要度スコアに関するコールフロー情報を出力する。 As described above, according to the first embodiment, the identification unit 11 in the processing device 10 identifies a specific system call instruction or a specific function in a call flow. The identification unit 12 identifies an importance score corresponding to the type of specific system call instruction or specific function identified by the identification unit 11 based on the correspondence between multiple types of system call instructions or functions and the importance scores corresponding to each type. The assignment unit 13 assigns the importance score identified by the identification unit 12 to each function included in the call flow. The output unit 14 outputs call flow information related to each function included in the call flow and the importance score assigned to each function.
この処理装置10の構成により、コールフローに含まれる各関数及び各関数に付与された重要度スコアに関するコールフロー情報を得ることができる。ソフトウェア検査処理の際にこのコールフロー情報を用いることによって、より重要度が高いことを示す重要度スコアが付与された関数及び該関数を含むコールフローの検査処理にリソースを優先的に振り分けることができるので、ソフトウェア検査処理の効率を向上させることができる。 This configuration of the processing device 10 makes it possible to obtain call flow information regarding each function included in a call flow and the importance score assigned to each function. By using this call flow information during software inspection processing, resources can be preferentially allocated to inspection processing of functions assigned importance scores indicating higher importance and call flows that include such functions, thereby improving the efficiency of software inspection processing.
<第2実施形態>
<処理装置の構成例>
図4は、本開示の処理装置の他の一例を示すブロック図である。図4において処理装置20は、特定部(第1特定部)21と、特定部(第2特定部)22と、付与部23と、出力部24とを有している。
Second Embodiment
<Configuration example of processing device>
4 is a block diagram illustrating another example of a processing device according to the present disclosure. In FIG. 4, a processing device 20 includes an identification unit (first identification unit) 21, an identification unit (second identification unit) 22, an assignment unit 23, and an output unit 24.
特定部21は、特定部11と同様に、対象ソフトウェア(例えば、検査対象ソフトウェア)に含まれる「コールフロー」において、所定のシステムコール命令又は所定の関数を特定する。対象ソフトウェアは、複数のコールフロー、つまり、第1コールフロー及び第2コールフローを含んでいる。特定部21は、第1コールフロー及び第2コールフローのそれぞれにおいて、所定のシステムコール命令又は所定の関数を特定する。 Similar to the identification unit 11, the identification unit 21 identifies a specific system call command or a specific function in a "call flow" included in the target software (e.g., software to be inspected). The target software includes multiple call flows, namely, a first call flow and a second call flow. The identification unit 21 identifies a specific system call command or a specific function in each of the first call flow and the second call flow.
例えば、特定部21は、「コールフローに関する情報」を取得する。「コールフローに関する情報」は、第1コールフローに含まれる複数の関数及びシステムコール命令に関する情報、並びに、該複数の関数の呼出関係に関する情報を、少なくとも含む。また、「コールフローに関する情報」は、第2コールフローに含まれる複数の関数及びシステムコール命令に関する情報、並びに、該複数の関数の呼出関係に関する情報を、少なくとも含む。そして、特定部21は、所定のシステムコール命令及び所定の関数に関する情報を保持するリストと、コールフローに関する情報とに基づいて、第1コールフローに含まれる所定のシステムコール命令又は所定の関数を特定してもよい。また、特定部21は、所定のシステムコール命令及び所定の関数に関する情報を保持するリストと、コールフローに関する情報とに基づいて、第2コールフローに含まれる所定のシステムコール命令又は所定の関数を特定してもよい。 For example, the identification unit 21 acquires "information related to the call flow." The "information related to the call flow" includes at least information related to the multiple functions and system call instructions included in the first call flow, and information related to the call relationships between the multiple functions. The "information related to the call flow" includes at least information related to the multiple functions and system call instructions included in the second call flow, and information related to the call relationships between the multiple functions. The identification unit 21 may then identify a specific system call instruction or a specific function included in the first call flow based on a list that holds information related to specific system call instructions and specific functions, and the information related to the call flow. The identification unit 21 may also identify a specific system call instruction or a specific function included in the second call flow based on a list that holds information related to specific system call instructions and specific functions, and the information related to the call flow.
特定部22は、特定部12と同様に、システムコール命令又は関数についての複数の種類と各種類に応じた「重要度スコア」との対応関係に基づいて、特定部21にて特定された所定のシステムコール命令又は所定の関数の種類に対応する重要度スコアを特定する。具体的には、特定部22は、第1コールフローにおいて特定された所定のシステムコール命令又は所定の関数の種類に対応する重要度スコア、及び、第2コールフローにおいて特定された所定のシステムコール命令又は所定の関数の種類に対応する重要度スコアを、それぞれ特定する。以下では、第1コールフローにおいて特定された所定のシステムコール命令又は所定の関数の種類に対応する重要度スコアは、「第1重要度スコア」と呼ばれることがある。また、第2コールフローにおいて特定された所定のシステムコール命令又は所定の関数の種類に対応する重要度スコアは、「第2重要度スコア」と呼ばれることがある。 Similar to identification unit 12, identification unit 22 identifies an importance score corresponding to the type of predetermined system call instruction or predetermined function identified by identification unit 21 based on the correspondence between multiple types of system call instructions or functions and the "importance scores" corresponding to each type. Specifically, identification unit 22 identifies an importance score corresponding to the type of predetermined system call instruction or predetermined function identified in the first call flow, and an importance score corresponding to the type of predetermined system call instruction or predetermined function identified in the second call flow. Hereinafter, the importance score corresponding to the type of predetermined system call instruction or predetermined function identified in the first call flow may be referred to as the "first importance score." Furthermore, the importance score corresponding to the type of predetermined system call instruction or predetermined function identified in the second call flow may be referred to as the "second importance score."
付与部23は、第1コールフローに含まれる各関数に第1重要度スコアを付与する。また、付与部23は、第2コールフローに含まれる各関数に第2重要度スコアを付与する。すなわち、付与部23は、コールフローに含まれるシステムコール命令又は関数の種類に対応する重要度スコアを、同じコールフローに含まれるすべての関数に伝搬させる。 The assigning unit 23 assigns a first importance score to each function included in the first call flow. The assigning unit 23 also assigns a second importance score to each function included in the second call flow. In other words, the assigning unit 23 propagates the importance score corresponding to the type of system call command or function included in the call flow to all functions included in the same call flow.
ここで、付与部23は、第1コールフロー及び第2コールフローに共通の関数が含まれる場合、共通関数の重要度スコアとして、最も高い重要度に対応する重要度スコアを選択する。 Here, if the first call flow and the second call flow include a common function, the assignment unit 23 selects the importance score corresponding to the highest importance as the importance score of the common function.
出力部24は、第1コールフローに含まれる各関数及び各関数に付与された重要度スコア、並びに、第2コールフローに含まれる各関数及び各関数に付与された重要度スコアに関するコールフロー情報を出力する。出力部24は、コールフロー情報と共に上記の対象ソフトウェアを出力してもよい。 The output unit 24 outputs call flow information regarding each function included in the first call flow and the importance score assigned to each function, and each function included in the second call flow and the importance score assigned to each function. The output unit 24 may also output the above-mentioned target software along with the call flow information.
<処理装置の動作例>
図5は、本開示の処理装置の処理動作の他の一例を示すフローチャートである。
<Example of processing device operation>
FIG. 5 is a flowchart showing another example of the processing operation of the processing device of the present disclosure.
特定部21は、対象ソフトウェアに含まれる各コールフローにおいて、所定のシステムコール命令又は所定の関数を特定する(ステップS21)。 The identification unit 21 identifies a specific system call command or a specific function in each call flow included in the target software (step S21).
図6は、本開示の処理装置の処理動作の他の一例の説明に供する図である。例えば、上記のリストには、所定のシステムコール命令として、「execve」と「syscall A」とが保持されている。そして、図6に示される第1コールフローは、システムコール命令「execve」、関数「func2」、関数「func1」、関数「do_com」を含んでいる。また、図6に示される第2コールフローは、システムコール命令「syscall A」、関数「func4」、関数「func3」、関数「do_com」を含んでいる。この場合、特定部21は、第1コールフローにおいて所定のシステムコール命令としてシステムコール命令「execve」を特定する。また、特定部21は、第2コールフローにおいて所定のシステムコール命令としてシステムコール命令「syscall A」を特定する。 FIG. 6 is a diagram illustrating another example of the processing operation of the processing device of the present disclosure. For example, the above list holds "execve" and "syscall A" as predetermined system call instructions. The first call flow shown in FIG. 6 includes the system call instruction "execve", the function "func2", the function "func1", and the function "do_com". The second call flow shown in FIG. 6 includes the system call instruction "syscall A", the function "func4", the function "func3", and the function "do_com". In this case, the identification unit 21 identifies the system call instruction "execve" as the predetermined system call instruction in the first call flow. The identification unit 21 also identifies the system call instruction "syscall A" as the predetermined system call instruction in the second call flow.
特定部22は、特定された所定のシステムコール命令又は所定の関数の種類に対応する重要度スコアを、「対応関係」に基づいて特定する(ステップS22)。図6の例では、上記の対応関係において、システムコール命令「execve」と重要度スコア「10」とが対応づけられ、システムコール命令「syscall A」と重要度スコア「8」とが対応づけられている。このとき、特定部22は、第1コールフローについて特定されたシステムコール命令「execve」の種類に対応する重要度スコアとして、スコア「10」を特定する。また、特定部22は、第2コールフローについて特定されたシステムコール命令「syscall A」の種類に対応する重要度スコアとして、スコア「8」を特定する。 The identification unit 22 identifies an importance score corresponding to the identified type of specified system call instruction or specified function based on the "correspondence" (step S22). In the example of Figure 6, the above correspondence associates the system call instruction "execve" with an importance score of "10", and the system call instruction "syscall A" with an importance score of "8". In this case, the identification unit 22 identifies the score "10" as the importance score corresponding to the type of system call instruction "execve" identified for the first call flow. Furthermore, the identification unit 22 identifies the score "8" as the importance score corresponding to the type of system call instruction "syscall A" identified for the second call flow.
付与部23は、各コールフローに含まれる各関数に、各コールフローについて特定された重要度スコアを付与する(ステップS23)。上記の通り、図6の例では、第1コールフローは、システムコール命令「execve」、関数「func2」、関数「func1」、関数「do_com」を含んでいる。このため、図6の例では、関数「func2」、関数「func1」、関数「do_com」のそれぞれに重要度スコア「10」が付与される。また、図6の例では、第2コールフローは、システムコール命令「syscall A」、関数「func4」、関数「func3」、関数「do_com」を含んでいる。このため、図6の例では、関数「func4」、関数「func3」、関数「do_com」のそれぞれに重要度スコア「8」が付与される。なお、付与部23は、エクスポートしない内部関数である関数「func1」、関数「func3」に対しては重要度スコアを付与しなくてもよい。 The assigning unit 23 assigns the importance score identified for each call flow to each function included in each call flow (step S23). As described above, in the example of FIG. 6, the first call flow includes the system call command "execve", the functions "func2", "func1", and "do_com". Therefore, in the example of FIG. 6, an importance score of "10" is assigned to each of the functions "func2", "func1", and "do_com". Also, in the example of FIG. 6, the second call flow includes the system call command "syscall A", the functions "func4", "func3", and "do_com". Therefore, in the example of FIG. 6, an importance score of "8" is assigned to each of the functions "func4", "func3", and "do_com". Note that the assigning unit 23 does not need to assign importance scores to the functions "func1" and "func3", which are internal functions that are not exported.
付与部23は、複数のコールフローに含まれる共通関数が存在するかを判定する(ステップS24)。 The assignment unit 23 determines whether there are any common functions included in multiple call flows (step S24).
複数のコールフローに含まれる共通関数が存在する場合(ステップS24YES)、付与部23は、共通関数の重要度スコアとして、最も高い重要度に対応する重要度スコアを選択する(ステップS25)。図6の例では、関数「do_com」が共通関数であり、関数「do_com」には重要度スコア「10」及び重要度スコア「8」が付与されている。このため、付与部23は、関数「do_com」の重要度スコアとして、重要度スコア「10」及び重要度スコア「8」のうちの重要度スコア「10」を選択する。 If there is a common function included in multiple call flows (step S24 YES), the assigning unit 23 selects the importance score corresponding to the highest importance as the importance score of the common function (step S25). In the example of Figure 6, the function "do_com" is a common function, and the importance score "10" and the importance score "8" have been assigned to the function "do_com". Therefore, the assigning unit 23 selects the importance score "10" from the importance score "10" and the importance score "8" as the importance score of the function "do_com".
出力部24は、各コールフローに含まれる各関数及び各関数に付与された重要度スコアに関するコールフロー情報を出力する(ステップS26)。なお、複数のコールフローに含まれる共通関数が存在しない場合(ステップS24NO)、処理ステップは、ステップS26に進む。 The output unit 24 outputs call flow information regarding each function included in each call flow and the importance score assigned to each function (step S26). Note that if there are no common functions included in multiple call flows (step S24 NO), the processing proceeds to step S26.
以上のように第2実施形態によれば、処理装置20にて特定部21は、第1コールフロー及び第2コールフローのそれぞれにおいて、所定のシステムコール命令又は所定の関数を特定する。特定部22は、第1コールフローにおいて特定された所定のシステムコール命令又は所定の関数の種類に対応する重要度スコア、及び、第2コールフローにおいて特定された所定のシステムコール命令又は所定の関数の種類に対応する重要度スコアを、それぞれ特定する。付与部23は、第1コールフローに含まれる各関数に第1重要度スコアを付与する。また、付与部23は、第2コールフローに含まれる各関数に第2重要度スコアを付与する。出力部24は、第1コールフローに含まれる各関数及び各関数に付与された重要度スコア、並びに、第2コールフローに含まれる各関数及び各関数に付与された重要度スコアに関するコールフロー情報を出力する。 As described above, according to the second embodiment, the identification unit 21 in the processing device 20 identifies a predetermined system call command or a predetermined function in each of the first call flow and the second call flow. The identification unit 22 identifies an importance score corresponding to the predetermined system call command or the type of predetermined function identified in the first call flow, and an importance score corresponding to the predetermined system call command or the type of predetermined function identified in the second call flow. The assignment unit 23 assigns a first importance score to each function included in the first call flow. The assignment unit 23 also assigns a second importance score to each function included in the second call flow. The output unit 24 outputs call flow information related to each function included in the first call flow and the importance scores assigned to each function, and each function included in the second call flow and the importance scores assigned to each function.
この処理装置20の構成により、対象ソフトウェアに複数のコールフローが含まれる場合であっても、各コールフローに含まれる各関数及び各関数に付与された重要度スコアに関するコールフロー情報を得ることができる。 This configuration of the processing device 20 makes it possible to obtain call flow information regarding each function included in each call flow and the importance score assigned to each function, even if the target software contains multiple call flows.
<第3実施形態>
<処理装置の構成例>
図7は、本開示の処理装置の他の一例を示すブロック図である。図7において処理装置30は、特定部(第1特定部)31と、特定部(第2特定部)32と、付与部33と、出力部34とを有している。
Third Embodiment
<Configuration example of processing device>
7 is a block diagram illustrating another example of a processing device according to the present disclosure. In FIG. 7, a processing device 30 includes an identification unit (first identification unit) 31, an identification unit (second identification unit) 32, an assignment unit 33, and an output unit 34.
特定部31は、特定部21と同様に、第1コールフロー及び第2コールフローのそれぞれにおいて、所定のシステムコール命令又は所定の関数を特定する。 Similar to the identification unit 21, the identification unit 31 identifies a specific system call command or a specific function in each of the first call flow and the second call flow.
特定部32は、「対応関係」に基づいて、特定部31にて特定された所定のシステムコール命令又は所定の関数の種類に対応する、重要度スコア及びカテゴリを特定する。ここで、「対応関係」は、システムコール命令又は関数についての複数の種類と各種類に応じた「重要度スコア」及び「カテゴリ」とを対応づけている。具体的には、特定部32は、第1コールフローにおいて特定された所定のシステムコール命令又は所定の関数の種類に対応する、第1重要度スコア及び第1カテゴリを特定する。また、特定部32は、第2コールフローにおいて特定された所定のシステムコール命令又は所定の関数の種類に対応する、第2重要度スコア及び第2カテゴリを特定する。 The identification unit 32 identifies an importance score and a category corresponding to the type of specified system call instruction or specified function identified by the identification unit 31 based on the "correspondence relationship." Here, the "correspondence relationship" associates multiple types of system call instructions or functions with "importance scores" and "categories" corresponding to each type. Specifically, the identification unit 32 identifies a first importance score and a first category corresponding to the type of specified system call instruction or specified function identified in the first call flow. Furthermore, the identification unit 32 identifies a second importance score and a second category corresponding to the type of specified system call instruction or specified function identified in the second call flow.
ここで、カテゴリは、例えば、「ファイルへの書き込み」、「プロセスの生成」など、関数の担う機能の観点から定義されていてもよい。又は、カテゴリは、例えば、「完全性」、「機密性」、「可用性」のように、セキュリティ上の機能ごとに定義されてもよい。又は、カテゴリは、関数に起因して発生しうる脆弱性のカテゴリであってもよく、例えば、CWE(Common Weakness Enumeration)によって定義されてもよい。 Here, the categories may be defined in terms of the functionality performed by the functions, such as "writing to a file" or "creating a process." Alternatively, the categories may be defined for each security function, such as "integrity," "confidentiality," or "availability." Alternatively, the categories may be categories of vulnerabilities that may arise due to the functions, and may be defined, for example, by a Common Weakness Enumeration (CWE).
付与部33は、第1コールフローに含まれる各関数に、第1重要度スコア及び第1カテゴリを付与する。また、付与部23は、第2コールフローに含まれる各関数に、第2重要度スコア及び第2カテゴリを付与する。 The assigning unit 33 assigns a first importance score and a first category to each function included in the first call flow. Furthermore, the assigning unit 23 assigns a second importance score and a second category to each function included in the second call flow.
ここで、付与部33は、第1コールフロー及び第2コールフローに共通の関数が含まれ、且つ、第1カテゴリと第2カテゴリとが同じである場合、共通の関数の重要度スコアとして、第1重要度スコア及び第2重要度スコアのうちで最も高い重要度に対応する重要度スコアを選択する。すなわち、付与部33は、第1コールフロー及び第2コールフローに共通の関数が含まれ、且つ、第1カテゴリと第2カテゴリとが同じである場合、共通の関数に、第1重要度スコア及び第2重要度スコアのうちでより高い重要度に対応するスコアを付与する。 Here, when the first call flow and the second call flow include a common function and the first category and the second category are the same, the assigning unit 33 selects the importance score of the common function that corresponds to the highest importance out of the first importance score and the second importance score. In other words, when the first call flow and the second call flow include a common function and the first category and the second category are the same, the assigning unit 33 assigns the score of the common function that corresponds to the higher importance out of the first importance score and the second importance score.
出力部34は、第1カテゴリと第2カテゴリとが異なるである場合、第1コールフローに含まれる各関数及び各関数に付与された重要度スコアに関するコールフロー情報、つまり、第1カテゴリのポリシを出力する。また、出力部34は、第1カテゴリと第2カテゴリとが異なるである場合、第2コールフローに含まれる各関数及び各関数に付与された重要度スコアに関するコールフロー情報、つまり、第2カテゴリのポリシを出力する。 If the first category and the second category are different, the output unit 34 outputs call flow information regarding each function included in the first call flow and the importance score assigned to each function, i.e., the policy of the first category. Also, if the first category and the second category are different, the output unit 34 outputs call flow information regarding each function included in the second call flow and the importance score assigned to each function, i.e., the policy of the second category.
出力部34は、第1カテゴリと第2カテゴリとが同じである場合、第1コールフロー及び第2コールフローに含まれる各関数及び各関数に付与された重要度スコアに関するコールフロー情報、つまり、第1カテゴリ(=第2カテゴリ)のポリシを出力する。 If the first category and the second category are the same, the output unit 34 outputs call flow information regarding each function included in the first call flow and the second call flow and the importance score assigned to each function, i.e., the policy of the first category (= second category).
また、出力部34は、コールフロー情報と共に上記の対象ソフトウェアを出力してもよい。 The output unit 34 may also output the above-mentioned target software along with the call flow information.
<処理装置の動作例>
図8は、本開示の処理装置の処理動作の他の一例を示すフローチャートである。
<Example of processing device operation>
FIG. 8 is a flowchart showing another example of the processing operation of the processing device of the present disclosure.
特定部31は、対象ソフトウェアに含まれる各コールフローにおいて、所定のシステムコール命令又は所定の関数を特定する(ステップS31)。 The identification unit 31 identifies a specific system call command or a specific function in each call flow included in the target software (step S31).
図9は、本開示の処理装置の処理動作の他の一例の説明に供する図である。例えば、上記のリストには、所定のシステムコール命令として、「execve」と「syscall A」とが保持されている。そして、図9に示される第1コールフローは、システムコール命令「execve」、関数「func2」、関数「func1」、関数「do_com」を含んでいる。また、図9に示される第2コールフローは、システムコール命令「syscall A」、関数「func4」、関数「func3」、関数「do_com」を含んでいる。この場合、特定部31は、第1コールフローにおいて所定のシステムコール命令としてシステムコール命令「execve」を特定する。また、特定部31は、第2コールフローにおいて所定のシステムコール命令としてシステムコール命令「syscall A」を特定する。 FIG. 9 is a diagram illustrating another example of the processing operation of the processing device of the present disclosure. For example, the above list holds "execve" and "syscall A" as predetermined system call instructions. The first call flow shown in FIG. 9 includes the system call instruction "execve", the function "func2", the function "func1", and the function "do_com". The second call flow shown in FIG. 9 includes the system call instruction "syscall A", the function "func4", the function "func3", and the function "do_com". In this case, the identification unit 31 identifies the system call instruction "execve" as the predetermined system call instruction in the first call flow. The identification unit 31 also identifies the system call instruction "syscall A" as the predetermined system call instruction in the second call flow.
特定部32は、特定された所定のシステムコール命令又は所定の関数の種類に対応する重要度スコア及びカテゴリを、「対応関係」に基づいて特定する(ステップS32)。図9の例では、上記の対応関係において、システムコール命令「execve」と重要度スコア「10」及びカテゴリ「A」とが対応づけられ、システムコール命令「syscall A」と重要度スコア「8」及びカテゴリ「B」とが対応づけられている。このとき、特定部32は、第1コールフローについて特定されたシステムコール命令「execve」の種類に対応する重要度スコア及びカテゴリとして、スコア「10」及びカテゴリ「A」を特定する。また、特定部32は、第2コールフローについて特定されたシステムコール命令「syscall A」の種類に対応する重要度スコア及びカテゴリとして、スコア「8」及びカテゴリ「B」を特定する。 The identification unit 32 identifies the importance score and category corresponding to the identified type of specified system call instruction or specified function based on the "correspondence" (step S32). In the example of Figure 9, the above correspondence associates the system call instruction "execve" with an importance score of "10" and category "A," and the system call instruction "syscall A" with an importance score of "8" and category "B." In this case, the identification unit 32 identifies the score "10" and category "A" as the importance score and category corresponding to the type of system call instruction "execve" identified for the first call flow. The identification unit 32 also identifies the score "8" and category "B" as the importance score and category corresponding to the type of system call instruction "syscall A" identified for the second call flow.
付与部33は、各コールフローに含まれる各関数に、各コールフローについて特定された重要度スコアを付与する(ステップS33)。上記の通り、図9の例では、第1コールフローは、システムコール命令「execve」、関数「func2」、関数「func1」、関数「do_com」を含んでいる。このため、図9の例では、関数「func2」、関数「func1」、関数「do_com」のそれぞれに重要度スコア「10」及びカテゴリ「A」が付与される。また、図9の例では、第2コールフローは、システムコール命令「syscall A」、関数「func4」、関数「func3」、関数「do_com」を含んでいる。このため、図9の例では、関数「func4」、関数「func3」、関数「do_com」のそれぞれに重要度スコア「8」及びカテゴリ「B」が付与される。なお、付与部33は、エクスポートしない内部関数である関数「func1」、関数「func3」に対しては重要度スコア及びカテゴリを付与しなくてもよい。 The assignment unit 33 assigns the importance score identified for each call flow to each function included in each call flow (step S33). As described above, in the example of Figure 9, the first call flow includes the system call command "execve", the functions "func2", "func1", and "do_com". Therefore, in the example of Figure 9, the functions "func2", "func1", and "do_com" are each assigned an importance score of "10" and a category of "A". Also, in the example of Figure 9, the second call flow includes the system call command "syscall A", the functions "func4", "func3", and "do_com". Therefore, in the example of Figure 9, the functions "func4", "func3", and "do_com" are each assigned an importance score of "8" and a category of "B". Note that the assignment unit 33 does not need to assign importance scores and categories to the functions "func1" and "func3", which are internal functions that are not exported.
付与部33は、カテゴリが同じ複数のコールフローに含まれる共通関数が存在するかを判定する(ステップS34)。 The assignment unit 33 determines whether there are any common functions included in multiple call flows of the same category (step S34).
カテゴリが同じ複数のコールフローに含まれる共通関数が存在する場合(ステップS34YES)、付与部33は、共通関数の重要度スコアとして、最も高い重要度に対応する重要度スコアを選択する(ステップS35)。図9の例では、関数「do_com」は第1コールフロー及び第2コールフローの共通関数であるが、第1コールフローのカテゴリと第2コールフローのカテゴリとが異なっている。仮に第1コールフローのカテゴリが「A」で第2コールフローのカテゴリも「A」である場合、付与部33は、関数「do_com」の重要度スコアとして、重要度スコア「10」及び重要度スコア「8」のうちの重要度スコア「10」を選択する。 If there is a common function included in multiple call flows of the same category (step S34 YES), the assigning unit 33 selects the importance score corresponding to the highest importance as the importance score of the common function (step S35). In the example of Figure 9, the function "do_com" is a common function of the first call flow and the second call flow, but the category of the first call flow is different from the category of the second call flow. If the category of the first call flow is "A" and the category of the second call flow is also "A", the assigning unit 33 selects the importance score "10" as the importance score of the function "do_com" from the importance score "10" and the importance score "8".
出力部34は、各コールフローに含まれる各関数及び各関数に付与された重要度スコアに関するコールフロー情報を出力する(ステップS26)。ここで、出力部34は、互いにカテゴリが異なる複数のコールフローについては、各コールフローのコールフロー情報(ポリシ)を出力する。また、出力部34は、共通関数を含み且つカテゴリが同じ複数のコールフローについては、該複数のコールフローに共通のコールフロー情報(ポリシ)を出力する。 The output unit 34 outputs call flow information regarding each function included in each call flow and the importance score assigned to each function (step S26). Here, for multiple call flows that are in different categories, the output unit 34 outputs call flow information (policy) for each call flow. Furthermore, for multiple call flows that include a common function and are in the same category, the output unit 34 outputs call flow information (policy) common to the multiple call flows.
以上のように第3実施形態によれば、処理装置30にて付与部33は、コールフローに含まれる各関数に、特定部32にて特定された重要度スコア及びカテゴリを付与する。出力部34は、コールフローに含まれる各関数及び各関数に付与された重要度スコア及びカテゴリに関するコールフロー情報を出力する。 As described above, according to the third embodiment, the assigning unit 33 in the processing device 30 assigns the importance score and category identified by the identifying unit 32 to each function included in the call flow. The output unit 34 outputs call flow information related to each function included in the call flow and the importance score and category assigned to each function.
この処理装置30の構成により、コールフローに含まれる各関数及び各関数に付与された重要度スコア及びカテゴリに関するコールフロー情報を得ることができる。ソフトウェア検査処理の際にこのコールフロー情報を用いることによって、所望のカテゴリのコールフローの検査処理にリソースを優先的に振り分けることができるので、ソフトウェア検査処理の効率を向上させることができる。 This configuration of the processing device 30 makes it possible to obtain call flow information regarding each function included in the call flow and the importance score and category assigned to each function. By using this call flow information during software inspection processing, resources can be preferentially allocated to inspection processing of call flows in the desired category, thereby improving the efficiency of software inspection processing.
<第3実施形態の変形例>
図10は、本開示の処理装置の処理動作の他の一例の説明に供する図である。図10に示すように、コールフローは、複数のバイナリ(図10では、メインバイナリ、サブバイナリ(ライブラリ(lib)))に跨っていてもよい。この場合、出力部34は、バイナリ単位(ライブラリ単位)でコールフロー情報(ポリシ)を出力してもよい。図11A,11B,11Cは、コールフロー情報の一例を示す図である。図11Aは、ライブラリCの解析後のコールフロー情報を示す。また、図11Bは、ライブラリBの解析後のコールフロー情報を示す。また、図11Cは、ライブラリAの解析後のコールフロー情報を示す。図11Cに示すように、ライブラリA関数「do_com」の重要度スコアとして、重要度スコア「10」及び重要度スコア「8」のうちの重要度スコア「10」が選択されている。
<Modification of the third embodiment>
FIG. 10 is a diagram illustrating another example of the processing operation of the processing device of the present disclosure. As shown in FIG. 10, the call flow may span multiple binaries (in FIG. 10, a main binary and a sub-binary (library (lib))). In this case, the output unit 34 may output call flow information (policy) on a binary basis (library basis). FIGS. 11A, 11B, and 11C are diagrams illustrating examples of call flow information. FIG. 11A shows call flow information after analysis of library C. FIG. 11B shows call flow information after analysis of library B. FIG. 11C shows call flow information after analysis of library A. As shown in FIG. 11C, the importance score of "10" is selected as the importance score for the library A function "do_com" from the importance scores of "10" and "8."
<第4実施形態>
<ソフトウェア検査装置の構成例>
図12は、本開示のソフトウェア検査装置の一例を示すブロック図である。図12においてソフトウェア検査装置50は、特定部(第1特定部)51と、特定部(第2特定部)52と、付与部53と、出力部54と、検査処理部55とを有している。特定部51、特定部52、付与部53、及び出力部54は、特定部11、特定部12、付与部13、及び出力部14と同様の機能を有していてもよい。又は、特定部51、特定部52、付与部53、及び出力部54は、特定部21、特定部22、付与部23、及び出力部24と同様の機能を有していてもよい。又は、特定部51、特定部52、付与部53、及び出力部54は、特定部31、特定部32、付与部33、及び出力部34と同様の機能を有していてもよい。ここでは、特定部51、特定部52、付与部53、及び出力部54は、特定部31、特定部32、付与部33、及び出力部34と同様の機能を有していることを例にとり説明する。
Fourth Embodiment
<Configuration example of software inspection device>
12 is a block diagram showing an example of a software inspection device according to the present disclosure. In FIG. 12 , the software inspection device 50 includes an identification unit (first identification unit) 51, an identification unit (second identification unit) 52, an assignment unit 53, an output unit 54, and an inspection processing unit 55. The identification unit 51, the identification unit 52, the assignment unit 53, and the output unit 54 may have the same functions as the identification unit 11, the identification unit 12, the assignment unit 13, and the output unit 14. Alternatively, the identification unit 51, the identification unit 52, the assignment unit 53, and the output unit 54 may have the same functions as the identification unit 21, the identification unit 22, the assignment unit 23, and the output unit 24. Alternatively, the identification unit 51, the identification unit 52, the assignment unit 53, and the output unit 54 may have the same functions as the identification unit 31, the identification unit 32, the assignment unit 33, and the output unit 34. Here, the description will be given by taking as an example that the identification unit 51, the identification unit 52, the assignment unit 53, and the output unit 54 have the same functions as the identification unit 31, the identification unit 32, the assignment unit 33, and the output unit 34.
検査処理部55は、指定された検査範囲指定パラメータに基づいて、対象ソフトウェアの一部を検査範囲に設定し、設定した検査範囲において対象ソフトウェアの検査を実行する。例えば、検査処理部55は、対象ソフトウェアの検査処理として、「処理フロー解析」を実行する。 The inspection processing unit 55 sets a portion of the target software as the inspection range based on the specified inspection range specification parameters, and performs an inspection of the target software within the set inspection range. For example, the inspection processing unit 55 performs "process flow analysis" as the inspection process for the target software.
上記の検査範囲指定パラメータは、スコア閾値であってもよいし、カテゴリであってもよいし、スコア閾値及びカテゴリの組み合わせであってもよい。 The above inspection range specification parameters may be score thresholds, categories, or a combination of score thresholds and categories.
例えば、検査範囲指定パラメータとしてスコア閾値「9」が設定された場合、検査処理部55は、重要度スコアの値が9以上の関数を検査範囲として対象ソフトウェアを検査する。すなわち、検査処理部55は、コールフロー情報に基づいて、対象ソフトウェアのコールフローに含まれる複数の関数のうちで重要度スコアの示す重要度が所定レベルよりも高い関数を検査処理対象としてもよい。 For example, if a score threshold of "9" is set as the inspection range specification parameter, the inspection processing unit 55 will inspect the target software with functions having an importance score value of 9 or greater as the inspection range. In other words, based on the call flow information, the inspection processing unit 55 may inspect functions of the multiple functions included in the call flow of the target software whose importance indicated by an importance score is higher than a predetermined level.
また、例えば、検査範囲指定パラメータとしてカテゴリ「A」が設定された場合、検査処理部55は、カテゴリ「A」の関数を検査範囲として対象ソフトウェアを検査する。 Furthermore, for example, if category "A" is set as the inspection range specification parameter, the inspection processing unit 55 inspects the target software with functions in category "A" as the inspection range.
また、例えば、検査範囲指定パラメータとしてスコア閾値「9」及びカテゴリ「A」が設定された場合、検査処理部55は、カテゴリ「A」で且つ重要度スコアの値が9以上の関数を検査範囲として対象ソフトウェアを検査する。 Furthermore, for example, if a score threshold of "9" and a category of "A" are set as the inspection range specification parameters, the inspection processing unit 55 will inspect the target software with the inspection range set to functions in category "A" with an importance score value of 9 or greater.
例えば、検査処理部55は、各コールフローに対応する「コールフロー関数リスト」と、各コールフローに含まれる各関数及び各関数に付与された重要度スコア及びカテゴリに関するコールフロー情報とを、受け取る。そして、検査処理部55は、検査範囲指定パラメータによって指定された検査範囲のコールフロー(つまり、関数)についてデータフロー解析及び制御フロー解析を行うことによって、検査範囲のコールフローにおいてバックドアトリガの可能性が高い条件分岐を特定する。そして、検査処理部55は、特定した条件分岐等に関する情報を含む検査結果を出力する。 For example, the inspection processing unit 55 receives a "call flow function list" corresponding to each call flow, and call flow information regarding each function included in each call flow and the importance score and category assigned to each function. The inspection processing unit 55 then performs data flow analysis and control flow analysis on the call flows (i.e., functions) in the inspection range specified by the inspection range specification parameters, thereby identifying conditional branches in the call flows in the inspection range that are likely to trigger a backdoor. The inspection processing unit 55 then outputs inspection results that include information regarding the identified conditional branches, etc.
<ソフトウェア検査装置の動作例>
図13は、本開示の処理装置の処理動作の他の一例を示すフローチャートである。
<Example of software inspection device operation>
FIG. 13 is a flowchart showing another example of the processing operation of the processing device of the present disclosure.
特定部51は、対象ソフトウェアに含まれる各コールフローにおいて、所定のシステムコール命令又は所定の関数を特定する(ステップS41)。 The identification unit 51 identifies a specific system call command or a specific function in each call flow included in the target software (step S41).
特定部52は、特定された所定のシステムコール命令又は所定の関数の種類に対応する重要度スコア及びカテゴリを、「対応関係」に基づいて特定する(ステップS42)。 The identification unit 52 identifies the importance score and category corresponding to the identified specific system call instruction or type of specific function based on the "correspondence" (step S42).
付与部53は、各コールフローに含まれる各関数に、各コールフローについて特定された重要度スコアを付与する(ステップS43)。 The assigning unit 53 assigns the importance score identified for each call flow to each function included in each call flow (step S43).
付与部53は、カテゴリが同じ複数のコールフローに含まれる共通関数が存在するかを判定する(ステップS44)。 The assignment unit 53 determines whether there are any common functions included in multiple call flows of the same category (step S44).
カテゴリが同じ複数のコールフローに含まれる共通関数が存在する場合(ステップS44YES)、付与部53は、共通関数の重要度スコアとして、最も高い重要度に対応する重要度スコアを選択する(ステップS45)。 If there is a common function included in multiple call flows of the same category (step S44 YES), the assignment unit 53 selects the importance score corresponding to the highest importance as the importance score of the common function (step S45).
出力部54は、各コールフローに含まれる各関数及び各関数に付与された重要度スコアに関するコールフロー情報と、対象ソフトウェアとを出力する(ステップS46)。 The output unit 54 outputs call flow information regarding each function included in each call flow and the importance score assigned to each function, as well as the target software (step S46).
検査処理部55は、指定された検査範囲指定パラメータに基づいて、対象ソフトウェアの一部を検査範囲に設定し、設定した検査範囲において対象ソフトウェアの検査を実行する(ステップS47)。 The inspection processing unit 55 sets a portion of the target software as the inspection range based on the specified inspection range specification parameters, and performs an inspection of the target software within the set inspection range (step S47).
以上のように第4実施形態によれば、ソフトウェア検査装置50にて検査処理部55は、指定された検査範囲指定パラメータに基づいて、対象ソフトウェアの一部を検査範囲に設定し、設定した検査範囲において対象ソフトウェアの検査を実行する。 As described above, according to the fourth embodiment, the inspection processing unit 55 in the software inspection device 50 sets a portion of the target software as the inspection range based on the specified inspection range designation parameters, and performs inspection of the target software within the set inspection range.
このソフトウェア検査装置50の構成により、検査範囲の検査処理にリソースを優先的に振り分けることができるので、ソフトウェア検査処理の効率を向上させることができる。 This software inspection device 50 configuration allows resources to be preferentially allocated to inspection processing within the inspection range, thereby improving the efficiency of software inspection processing.
<他の実施形態>
<1>図14は、処理装置の構成例を示す図である。図14において処理装置100は、プロセッサ101と、メモリ102とを有している。プロセッサ101は、例えば、マイクロプロセッサ、MPU(Micro Processing Unit)、又はCPU(Central Processing Unit)であってもよい。プロセッサ101は、複数のプロセッサを含んでもよい。メモリ102は、揮発性メモリ及び不揮発性メモリの組み合わせによって構成される。メモリ102は、プロセッサ101から離れて配置されたストレージを含んでもよい。この場合、プロセッサ101は、図示されていないI(Input)/O(Output)インタフェースを介してメモリ102にアクセスしてもよい。
<Other Embodiments>
<1> FIG. 14 is a diagram illustrating an example of the configuration of a processing device. In FIG. 14, the processing device 100 includes a processor 101 and a memory 102. The processor 101 may be, for example, a microprocessor, a micro processing unit (MPU), or a central processing unit (CPU). The processor 101 may include multiple processors. The memory 102 is configured by a combination of volatile memory and non-volatile memory. The memory 102 may include storage located away from the processor 101. In this case, the processor 101 may access the memory 102 via an I (Input)/O (Output) interface (not shown).
第1実施形態から第3実施形態の処理装置10,20,30は、それぞれ、図14に示した構成を有することができる。第1実施形態から第3実施形態の処理装置10,20,30の特定部11,21,31と、特定部12,22,32と、付与部13,23,33と、出力部14,24,34とは、プロセッサ101がメモリ102に記憶されたプログラムを読み込んで実行することにより実現されてもよい。すなわち、第1実施形態から第3実施形態の処理装置10,20,30は、ソフトウェアで実現可能である。プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、処理装置10,20,30に供給することができる。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)を含む。さらに、非一時的なコンピュータ可読媒体の例は、CD-ROM(Read Only Memory)、CD-R、CD-R/Wを含む。さらに、非一時的なコンピュータ可読媒体の例は、半導体メモリを含む。半導体メモリは、例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory)を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によって処理装置10,20,30に供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムを処理装置10,20,30に供給できる。 The processing devices 10, 20, and 30 of the first to third embodiments can each have the configuration shown in FIG. 14. The identification units 11, 21, and 31, the identification units 12, 22, and 32, the assignment units 13, 23, and 33, and the output units 14, 24, and 34 of the processing devices 10, 20, and 30 of the first to third embodiments may be realized by the processor 101 reading and executing a program stored in the memory 102. In other words, the processing devices 10, 20, and 30 of the first to third embodiments can be realized by software. The program can be stored using various types of non-transitory computer-readable medium and supplied to the processing devices 10, 20, and 30. Examples of non-transitory computer-readable medium include magnetic recording media (e.g., flexible disks, magnetic tapes, and hard disk drives) and magneto-optical recording media (e.g., magneto-optical disks). Further examples of non-transitory computer-readable media include CD-ROM (Read Only Memory), CD-R, and CD-R/W. Further examples of non-transitory computer-readable media include semiconductor memory. Semiconductor memory includes, for example, mask ROM, PROM (Programmable ROM), EPROM (Erasable PROM), flash ROM, and RAM (Random Access Memory). The program may also be supplied to the processing devices 10, 20, and 30 by various types of transitory computer-readable medium. Examples of transitory computer-readable medium include electrical signals, optical signals, and electromagnetic waves. The transitory computer-readable medium may supply the program to the processing devices 10, 20, and 30 via wired communication paths such as electrical wires and optical fibers, or wireless communication paths.
または、第1実施形態から第3実施形態の処理装置10,20,30の特定部11,21,31と、特定部12,22,32と、付与部13,23,33と、出力部14,24,34とは、それぞれが専用のハードウェアで実現されていてもよい。また、各装置の各構成要素の一部又は全部は、汎用または専用の回路(circuitry)、プロセッサ等やこれらの組合せによって実現されもよい。これらは、単一のチップによって構成されてもよいし、バスを介して接続される複数のチップによって構成されてもよい。各装置の各構成要素の一部又は全部は、上述した回路等とプログラムとの組合せによって実現されてもよい。また、プロセッサとして、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、FPGA(field-programmable gate array)、量子プロセッサ(量子コンピュータ制御チップ)等を用いることができる。 Alternatively, the identification units 11, 21, 31, identification units 12, 22, 32, assignment units 13, 23, 33, and output units 14, 24, 34 of the processing devices 10, 20, 30 of the first to third embodiments may each be realized by dedicated hardware. Furthermore, some or all of the components of each device may be realized by general-purpose or dedicated circuits, processors, etc., or a combination of these. These may be configured by a single chip, or by multiple chips connected via a bus. Some or all of the components of each device may be realized by a combination of the above-mentioned circuits, etc., and programs. Furthermore, processors that can be used include CPUs (Central Processing Units), GPUs (Graphics Processing Units), FPGAs (Field-Programmable Gate Arrays), quantum processors (quantum computer control chips), etc.
また、第1実施形態から第3実施形態の処理装置10,20,30の各構成要素の一部又は全部が複数の情報処理装置や回路等により実現される場合には、複数の情報処理装置や回路等は、集中配置されてもよいし、分散配置されてもよい。例えば、情報処理装置や回路等は、クライアントサーバシステム、クラウドコンピューティングシステム等、各々が通信ネットワークを介して接続される形態として実現されてもよい。また、第1実施形態から第3実施形態の処理装置10,20,30の機能がSaaS(Software as a Service)形式で提供されてもよい。 Furthermore, when some or all of the components of the processing devices 10, 20, 30 of the first to third embodiments are realized by multiple information processing devices, circuits, etc., the multiple information processing devices, circuits, etc. may be centrally located or distributed. For example, the information processing devices, circuits, etc. may be realized as a client-server system, cloud computing system, etc., in which each is connected via a communications network. Furthermore, the functions of the processing devices 10, 20, 30 of the first to third embodiments may be provided in a SaaS (Software as a Service) format.
<2>図15は、ソフトウェア検査装置の構成例を示す図である。図15においてソフトウェア検査装置200は、プロセッサ201と、メモリ202とを有している。プロセッサ201は、例えば、マイクロプロセッサ、MPU(Micro Processing Unit)、又はCPU(Central Processing Unit)であってもよい。プロセッサ201は、複数のプロセッサを含んでもよい。メモリ202は、揮発性メモリ及び不揮発性メモリの組み合わせによって構成される。メモリ202は、プロセッサ201から離れて配置されたストレージを含んでもよい。この場合、プロセッサ201は、図示されていないI(Input)/O(Output)インタフェースを介してメモリ202にアクセスしてもよい。 <2> Figure 15 is a diagram showing an example configuration of a software inspection device. In Figure 15, the software inspection device 200 has a processor 201 and a memory 202. The processor 201 may be, for example, a microprocessor, an MPU (Micro Processing Unit), or a CPU (Central Processing Unit). The processor 201 may include multiple processors. The memory 202 is composed of a combination of volatile memory and non-volatile memory. The memory 202 may include storage located away from the processor 201. In this case, the processor 201 may access the memory 202 via an I (Input)/O (Output) interface not shown.
第4実施形態のソフトウェア検査装置50は、図15に示した構成を有することができる。第4実施形態のソフトウェア検査装置50の特定部51と、特定部52と、付与部53と、出力部54と、検査処理部55とは、プロセッサ201がメモリ202に記憶されたプログラムを読み込んで実行することにより実現されてもよい。すなわち、第4実施形態のソフトウェア検査装置50は、ソフトウェアで実現可能である。プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、ソフトウェア検査装置50に供給することができる。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)を含む。さらに、非一時的なコンピュータ可読媒体の例は、CD-ROM(Read Only Memory)、CD-R、CD-R/Wを含む。さらに、非一時的なコンピュータ可読媒体の例は、半導体メモリを含む。半導体メモリは、例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory)を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってソフトウェア検査装置50に供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをソフトウェア検査装置50に供給できる。 The software inspection device 50 of the fourth embodiment may have the configuration shown in FIG. 15. The identification unit 51, identification unit 52, assignment unit 53, output unit 54, and inspection processing unit 55 of the software inspection device 50 of the fourth embodiment may be realized by the processor 201 reading and executing a program stored in the memory 202. In other words, the software inspection device 50 of the fourth embodiment can be realized by software. The program can be stored using various types of non-transitory computer-readable medium and supplied to the software inspection device 50. Examples of non-transitory computer-readable medium include magnetic recording media (e.g., flexible disks, magnetic tapes, hard disk drives) and magneto-optical recording media (e.g., magneto-optical disks). Further examples of non-transitory computer-readable media include CD-ROMs (Read Only Memory), CD-Rs, and CD-R/Ws. Further examples of non-transitory computer-readable media include semiconductor memories. Semiconductor memories include, for example, mask ROM, PROM (Programmable ROM), EPROM (Erasable PROM), flash ROM, and RAM (Random Access Memory). The program may also be supplied to the software inspection device 50 by various types of transitory computer-readable medium. Examples of transitory computer-readable medium include electrical signals, optical signals, and electromagnetic waves. The transitory computer-readable medium may supply the program to the software inspection device 50 via a wired communication path such as an electrical wire or optical fiber, or a wireless communication path.
または、第4実施形態のソフトウェア検査装置50の特定部51と、特定部52と、付与部53と、出力部54と、検査処理部55とは、それぞれが専用のハードウェアで実現されていてもよい。また、各装置の各構成要素の一部又は全部は、汎用または専用の回路(circuitry)、プロセッサ等やこれらの組合せによって実現されもよい。これらは、単一のチップによって構成されてもよいし、バスを介して接続される複数のチップによって構成されてもよい。各装置の各構成要素の一部又は全部は、上述した回路等とプログラムとの組合せによって実現されてもよい。また、プロセッサとして、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、FPGA(field-programmable gate array)、量子プロセッサ(量子コンピュータ制御チップ)等を用いることができる。 Alternatively, the identification unit 51, identification unit 52, assignment unit 53, output unit 54, and inspection processing unit 55 of the software inspection device 50 of the fourth embodiment may each be realized by dedicated hardware. Furthermore, some or all of the components of each device may be realized by general-purpose or dedicated circuits, processors, etc., or a combination of these. These may be configured by a single chip, or by multiple chips connected via a bus. Some or all of the components of each device may be realized by a combination of the above-mentioned circuits, etc., and programs. Furthermore, processors that can be used include CPUs (Central Processing Units), GPUs (Graphics Processing Units), FPGAs (Field-Programmable Gate Arrays), quantum processors (quantum computer control chips), etc.
また、第4実施形態のソフトウェア検査装置50の各構成要素の一部又は全部が複数の情報処理装置や回路等により実現される場合には、複数の情報処理装置や回路等は、集中配置されてもよいし、分散配置されてもよい。例えば、情報処理装置や回路等は、クライアントサーバシステム、クラウドコンピューティングシステム等、各々が通信ネットワークを介して接続される形態として実現されてもよい。また、第4実施形態のソフトウェア検査装置50の機能がSaaS(Software as a Service)形式で提供されてもよい。 Furthermore, when some or all of the components of the software inspection device 50 of the fourth embodiment are realized by multiple information processing devices, circuits, etc., the multiple information processing devices, circuits, etc. may be centrally located or distributed. For example, the information processing devices, circuits, etc. may be realized as a client-server system, cloud computing system, etc., in a form in which each is connected via a communications network. Furthermore, the functions of the software inspection device 50 of the fourth embodiment may be provided in the form of SaaS (Software as a Service).
以上、実施の形態を参照して本願発明を説明したが、本願発明は上記によって限定されるものではない。本願発明の構成や詳細には、発明のスコープ内で当業者が理解し得る様々な変更をすることができる。そして、各実施の形態は、適宜他の実施の形態と組み合わせることができる。 The present invention has been described above with reference to the embodiments, but the present invention is not limited to the above. Various modifications to the configuration and details of the present invention that are understandable to those skilled in the art can be made within the scope of the invention. Furthermore, each embodiment can be combined with other embodiments as appropriate.
各図面は、1又はそれ以上の実施形態を説明するための単なる例示である。各図面は、1つの特定の実施形態のみに関連付けられるのではなく、1又はそれ以上の他の実施形態に関連付けられてもよい。当業者であれば理解できるように、いずれか1つの図面を参照して説明される様々な特徴又はステップは、例えば明示的に図示または説明されていない実施形態を作り出すために、1又はそれ以上の他の図に示された特徴又はステップと組み合わせることができる。例示的な実施形態を説明するためにいずれか1つの図に示された特徴またはステップのすべてが必ずしも必須ではなく、一部の特徴またはステップが省略されてもよい。いずれかの図に記載されたステップの順序は、適宜変更されてもよい。 Each drawing is merely an example for describing one or more embodiments. Each drawing does not relate to only one particular embodiment, but may also relate to one or more other embodiments. As will be understood by those skilled in the art, various features or steps described with reference to any one drawing can be combined with features or steps shown in one or more other drawings to create, for example, an embodiment not explicitly shown or described. Not all features or steps shown in any one drawing are necessarily required to describe an exemplary embodiment, and some features or steps may be omitted. The order of steps described in any drawing may be changed as appropriate.
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1)
対象ソフトウェアに含まれるコールフローの始点の関数及び終点の関数を含み且つ呼出関係を有する複数の関数を有する前記コールフローにおいて、所定のシステムコール命令又は所定の関数を特定することと、
システムコール命令又は関数についての複数の種類と各種類に応じた重要度スコアとの対応関係に基づいて、前記特定された所定のシステムコール命令又は所定の関数の種類に対応する重要度スコアを特定することと、
前記コールフローに含まれる各関数に、前記特定された重要度スコアを付与することと、
前記コールフローに含まれる各関数及び各関数に付与された重要度スコアに関するコールフロー情報を出力することと、
を含む、処理を処理装置に実行させるプログラム。
(付記2)
前記対象ソフトウェアは、第1コールフロー及び第2コールフローを含み、
前記所定のシステムコール命令又は前記所定の関数を特定することは、前記第1コールフロー及び前記第2コールフローのそれぞれにおいて、前記所定のシステムコール命令又は前記所定の関数を特定することを含み、
前記重要度スコアを特定することは、前記第1コールフローにおいて特定された所定のシステムコール命令又は所定の関数の種類に対応する第1重要度スコア、及び、前記第2コールフローにおいて特定された所定のシステムコール命令又は所定の関数の種類に対応する第2重要度スコアを、それぞれ特定することを含み、
前記重要度スコアを付与することは、前記第1コールフローに含まれる各関数に前記第1重要度スコアを付与し、前記第2コールフローに含まれる各関数に前記第2重要度スコアを付与することを含む、
付記1記載のプログラム。
(付記3)
前記重要度スコアを付与することは、前記第1コールフロー及び前記第2コールフローの両方に含まれる共通関数が存在する場合、前記共通関数に、前記第1重要度スコア及び前記第2重要度スコアのうちでより高い重要度に対応するスコアを付与することを含む、
付記2記載のプログラム。
(付記4)
前記対応関係は、前記複数の種類と各種類に応じた重要度スコア及びカテゴリとを対応づけ、
前記重要度スコアを付与することは、前記コールフローに含まれる各関数に、前記特定された重要度スコア及びカテゴリを付与することを含む、
付記1記載のプログラム。
(付記5)
前記対象ソフトウェアは、第1コールフロー及び第2コールフローを含み、
前記所定のシステムコール命令又は前記所定の関数を特定することは、前記第1コールフロー及び前記第2コールフローのそれぞれにおいて、前記所定のシステムコール命令又は前記所定の関数を特定し、
前記重要度スコアを特定することは、前記第1コールフローにおいて特定された所定のシステムコール命令又は所定の関数の種類に対応する第1重要度スコア及び第1カテゴリ、並びに、前記第2コールフローにおいて特定された所定のシステムコール命令又は所定の関数の種類に対応する第2重要度スコア及び第2カテゴリを、それぞれ特定することを含み、
前記重要度スコアを付与することは、前記第1コールフローに含まれる各関数に前記第1重要度スコア及び前記第1カテゴリを付与し、前記第2コールフローに含まれる各関数に前記第2重要度スコア及び第2カテゴリを付与することを含む、
付記4記載のプログラム。
(付記6)
前記重要度スコアを付与することは、前記第1コールフロー及び前記第2コールフローの両方に含まれる共通関数が存在し且つ前記第1カテゴリと前記第2カテゴリとが同じである場合、前記共通関数に、前記第1重要度スコア及び前記第2重要度スコアのうちでより高い重要度に対応するスコアを付与することを含む、
付記5記載のプログラム。
(付記7)
前記出力することは、前記対象ソフトウェアと前記コールフロー情報とを出力することを含む、
付記1から6のいずれか1項に記載のプログラム。
(付記8)
前記処理は、前記コールフロー情報に基づいて、前記対象ソフトウェアのコールフローに含まれる複数の関数のうちで重要度スコアの示す重要度が所定レベルよりも高い関数を検査処理対象とすることを含む、
付記7記載のプログラム。
(付記9)
対象ソフトウェアに含まれるコールフローの始点の関数及び終点の関数を含み且つ呼出関係を有する複数の関数を有する前記コールフローにおいて、所定のシステムコール命令又は所定の関数を特定する第1特定部と、
システムコール命令又は関数についての複数の種類と各種類に応じた重要度スコアとの対応関係に基づいて、前記特定された所定のシステムコール命令又は所定の関数の種類に対応する重要度スコアを特定する第2特定部と、
前記コールフローに含まれる各関数に、前記特定された重要度スコアを付与する付与部と、
前記コールフローに含まれる各関数及び各関数に付与された重要度スコアに関するコールフロー情報を出力する出力部と、
を具備する処理装置。
(付記10)
前記対象ソフトウェアは、第1コールフロー及び第2コールフローを含み、
前記第1特定部は、前記第1コールフロー及び前記第2コールフローのそれぞれにおいて、所定のシステムコール命令又は所定の関数を特定し、
前記第2特定部は、前記第1コールフローにおいて特定された所定のシステムコール命令又は所定の関数の種類に対応する第1重要度スコア、及び、前記第2コールフローにおいて特定された所定のシステムコール命令又は所定の関数の種類に対応する第2重要度スコアを、それぞれ特定し、
前記付与部は、前記第1コールフローに含まれる各関数に前記第1重要度スコアを付与し、前記第2コールフローに含まれる各関数に前記第2重要度スコアを付与する、
付記9記載の処理装置。
(付記11)
前記付与部は、前記第1コールフロー及び前記第2コールフローの両方に含まれる共通関数が存在する場合、前記共通関数に、前記第1重要度スコア及び前記第2重要度スコアのうちでより高い重要度に対応するスコアを付与する、
付記10記載の処理装置。
(付記12)
前記対応関係は、前記複数の種類と各種類に応じた重要度スコア及びカテゴリとを対応づけ、
前記付与部は、前記コールフローに含まれる各関数に、前記特定された重要度スコア及びカテゴリを付与する、
付記9記載の処理装置。
(付記13)
前記対象ソフトウェアは、第1コールフロー及び第2コールフローを含み、
前記第1特定部は、前記第1コールフロー及び前記第2コールフローのそれぞれにおいて、所定のシステムコール命令又は所定の関数を特定し、
前記第2特定部は、前記第1コールフローにおいて特定された所定のシステムコール命令又は所定の関数の種類に対応する第1重要度スコア及び第1カテゴリ、並びに、前記第2コールフローにおいて特定された所定のシステムコール命令又は所定の関数の種類に対応する第2重要度スコア及び第2カテゴリを、それぞれ特定し、
前記付与部は、前記第1コールフローに含まれる各関数に前記第1重要度スコア及び前記第1カテゴリを付与し、前記第2コールフローに含まれる各関数に前記第2重要度スコア及び第2カテゴリを付与する、
付記12記載の処理装置。
(付記14)
前記付与部は、前記第1コールフロー及び前記第2コールフローの両方に含まれる共通関数が存在し且つ前記第1カテゴリと前記第2カテゴリとが同じである場合、前記共通関数に、前記第1重要度スコア及び前記第2重要度スコアのうちでより高い重要度に対応するスコアを付与する、
付記13記載の処理装置。
(付記15)
前記出力部は、前記対象ソフトウェアと前記コールフロー情報とを出力する、
付記9から14のいずれか1項に記載の処理装置。
(付記16)
付記15記載の処理装置と、
前記コールフロー情報に基づいて、前記対象ソフトウェアのコールフローに含まれる複数の関数のうちで重要度スコアの示す重要度が所定レベルよりも高い関数を検査処理対象とする検査処理部と、
を具備するソフトウェア検査装置。
(付記17)
対象ソフトウェアに含まれるコールフローの始点の関数及び終点の関数を含み且つ呼出関係を有する複数の関数を有する前記コールフローにおいて、所定のシステムコール命令又は所定の関数を特定することと、
システムコール命令又は関数についての複数の種類と各種類に応じた重要度スコアとの対応関係に基づいて、前記特定された所定のシステムコール命令又は所定の関数の種類に対応する重要度スコアを特定することと、
前記コールフローに含まれる各関数に、前記特定された重要度スコアを付与することと、
前記コールフローに含まれる各関数及び各関数に付与された重要度スコアに関するコールフロー情報を出力することと、
を含む方法。
(付記18)
前記対象ソフトウェアは、第1コールフロー及び第2コールフローを含み、
前記所定のシステムコール命令又は前記所定の関数を特定することは、前記第1コールフロー及び前記第2コールフローのそれぞれにおいて、前記所定のシステムコール命令又は前記所定の関数を特定することを含み、
前記重要度スコアを特定することは、前記第1コールフローにおいて特定された所定のシステムコール命令又は所定の関数の種類に対応する第1重要度スコア、及び、前記第2コールフローにおいて特定された所定のシステムコール命令又は所定の関数の種類に対応する第2重要度スコアを、それぞれ特定することを含み、
前記重要度スコアを付与することは、前記第1コールフローに含まれる各関数に前記第1重要度スコアを付与し、前記第2コールフローに含まれる各関数に前記第2重要度スコアを付与することを含む、
付記17記載の方法。
(付記19)
前記重要度スコアを付与することは、前記第1コールフロー及び前記第2コールフローの両方に含まれる共通関数が存在する場合、前記共通関数に、前記第1重要度スコア及び前記第2重要度スコアのうちでより高い重要度に対応するスコアを付与することを含む、
付記18記載の方法。
(付記20)
前記対応関係は、前記複数の種類と各種類に応じた重要度スコア及びカテゴリとを対応づけ、
前記重要度スコアを付与することは、前記コールフローに含まれる各関数に、前記特定された重要度スコア及びカテゴリを付与することを含む、
付記17記載の方法。
(付記21)
前記対象ソフトウェアは、第1コールフロー及び第2コールフローを含み、
前記所定のシステムコール命令又は前記所定の関数を特定することは、前記第1コールフロー及び前記第2コールフローのそれぞれにおいて、前記所定のシステムコール命令又は前記所定の関数を特定し、
前記重要度スコアを特定することは、前記第1コールフローにおいて特定された所定のシステムコール命令又は所定の関数の種類に対応する第1重要度スコア及び第1カテゴリ、並びに、前記第2コールフローにおいて特定された所定のシステムコール命令又は所定の関数の種類に対応する第2重要度スコア及び第2カテゴリを、それぞれ特定することを含み、
前記重要度スコアを付与することは、前記第1コールフローに含まれる各関数に前記第1重要度スコア及び前記第1カテゴリを付与し、前記第2コールフローに含まれる各関数に前記第2重要度スコア及び第2カテゴリを付与することを含む、
付記20記載の方法。
(付記22)
前記重要度スコアを付与することは、前記第1コールフロー及び前記第2コールフローの両方に含まれる共通関数が存在し且つ前記第1カテゴリと前記第2カテゴリとが同じである場合、前記共通関数に、前記第1重要度スコア及び前記第2重要度スコアのうちでより高い重要度に対応するスコアを付与することを含む、
付記21記載の方法。
(付記23)
前記出力することは、前記対象ソフトウェアと前記コールフロー情報とを出力することを含む、
付記17から22のいずれか1項に記載の方法。
(付記24)
前記方法は、前記コールフロー情報に基づいて、前記対象ソフトウェアのコールフローに含まれる複数の関数のうちで重要度スコアの示す重要度が所定レベルよりも高い関数を検査処理対象とすることを含む、
付記23記載の方法。
A part or all of the above-described embodiments can be described as, but not limited to, the following supplementary notes.
(Appendix 1)
Identifying a predetermined system call command or a predetermined function in a call flow that includes a start function and an end function of the call flow included in the target software and has a plurality of functions that have a call relationship;
Identifying an importance score corresponding to the specified type of system call instruction or function based on a correspondence relationship between a plurality of types of system call instructions or functions and an importance score corresponding to each type;
assigning the identified importance score to each function in the call flow;
outputting call flow information relating to each function included in the call flow and the importance score assigned to each function;
A program for causing a processing device to execute a process, including:
(Appendix 2)
the subject software includes a first call flow and a second call flow;
identifying the predetermined system call instruction or the predetermined function includes identifying the predetermined system call instruction or the predetermined function in each of the first call flow and the second call flow;
identifying the importance score includes identifying a first importance score corresponding to a predetermined system call instruction or a predetermined type of function identified in the first call flow, and a second importance score corresponding to a predetermined system call instruction or a predetermined type of function identified in the second call flow,
assigning the importance scores includes assigning the first importance score to each function included in the first call flow and assigning the second importance score to each function included in the second call flow.
Attachment 1. The program described in claim 1.
(Appendix 3)
assigning the importance score includes, when a common function included in both the first call flow and the second call flow exists, assigning the common function a score corresponding to a higher importance out of the first importance score and the second importance score.
The program described in Appendix 2.
(Appendix 4)
the correspondence relationship associates the plurality of types with importance scores and categories corresponding to each type;
assigning the importance score includes assigning the identified importance score and category to each function included in the call flow.
Attachment 1. The program described in claim 1.
(Appendix 5)
the subject software includes a first call flow and a second call flow;
Identifying the predetermined system call instruction or the predetermined function includes identifying the predetermined system call instruction or the predetermined function in each of the first call flow and the second call flow;
identifying the importance score includes identifying a first importance score and a first category corresponding to a predetermined system call instruction or a predetermined type of function identified in the first call flow, and a second importance score and a second category corresponding to a predetermined system call instruction or a predetermined type of function identified in the second call flow,
assigning the importance scores includes assigning the first importance score and the first category to each function included in the first call flow, and assigning the second importance score and the second category to each function included in the second call flow.
Attachment 4: The program described in claim 4.
(Appendix 6)
assigning the importance score includes, when a common function included in both the first call flow and the second call flow exists and the first category and the second category are the same, assigning the common function a score corresponding to a higher importance out of the first importance score and the second importance score.
Attachment 5. The program according to claim 5.
(Appendix 7)
the outputting includes outputting the target software and the call flow information.
7. The program according to any one of appendices 1 to 6.
(Appendix 8)
the processing includes determining, based on the call flow information, a function having an importance score higher than a predetermined level among a plurality of functions included in the call flow of the target software as a target for inspection processing;
8. The program according to claim 7.
(Appendix 9)
a first identification unit that identifies a predetermined system call command or a predetermined function in a call flow that includes a start function and an end function of the call flow included in the target software and has a plurality of functions that have a call relationship;
a second identification unit that identifies an importance score corresponding to the identified type of predetermined system call instruction or function based on a correspondence relationship between a plurality of types of system call instruction or function and an importance score corresponding to each type;
an assigning unit that assigns the identified importance score to each function included in the call flow;
an output unit that outputs call flow information regarding each function included in the call flow and an importance score assigned to each function;
A processing device comprising:
(Appendix 10)
the subject software includes a first call flow and a second call flow;
the first identification unit identifies a predetermined system call command or a predetermined function in each of the first call flow and the second call flow;
the second identification unit identifies a first importance score corresponding to the type of a predetermined system call instruction or a predetermined function identified in the first call flow, and a second importance score corresponding to the type of a predetermined system call instruction or a predetermined function identified in the second call flow,
the assigning unit assigns the first importance score to each function included in the first call flow, and assigns the second importance score to each function included in the second call flow;
10. The processing device of claim 9.
(Appendix 11)
When a common function included in both the first call flow and the second call flow exists, the assigning unit assigns a score corresponding to a higher importance between the first importance score and the second importance score to the common function.
11. The processing device of claim 10.
(Appendix 12)
the correspondence relationship associates the plurality of types with importance scores and categories corresponding to each type;
the assigning unit assigns the identified importance score and category to each function included in the call flow.
10. The processing device of claim 9.
(Appendix 13)
the subject software includes a first call flow and a second call flow;
the first identification unit identifies a predetermined system call command or a predetermined function in each of the first call flow and the second call flow;
the second identification unit identifies a first importance score and a first category corresponding to the type of the predetermined system call instruction or the predetermined function identified in the first call flow, and a second importance score and a second category corresponding to the type of the predetermined system call instruction or the predetermined function identified in the second call flow,
the assigning unit assigns the first importance score and the first category to each function included in the first call flow, and assigns the second importance score and the second category to each function included in the second call flow.
13. The processing device of claim 12.
(Appendix 14)
the assigning unit assigns, to the common function, a score corresponding to a higher importance between the first importance score and the second importance score, when a common function included in both the first call flow and the second call flow exists and the first category and the second category are the same.
14. The processing device of claim 13.
(Appendix 15)
the output unit outputs the target software and the call flow information.
15. The processing device of any one of appendices 9 to 14.
(Appendix 16)
a processing device according to claim 15; and
an inspection processing unit that, based on the call flow information, selects functions of importance indicated by importance scores higher than a predetermined level among a plurality of functions included in the call flow of the target software as inspection processing targets;
A software inspection device comprising:
(Appendix 17)
Identifying a predetermined system call command or a predetermined function in a call flow that includes a start function and an end function of the call flow included in the target software and has a plurality of functions that have a call relationship;
Identifying an importance score corresponding to the specified type of system call instruction or function based on a correspondence relationship between a plurality of types of system call instructions or functions and an importance score corresponding to each type;
assigning the identified importance score to each function in the call flow;
outputting call flow information relating to each function included in the call flow and the importance score assigned to each function;
A method comprising:
(Appendix 18)
the subject software includes a first call flow and a second call flow;
identifying the predetermined system call instruction or the predetermined function includes identifying the predetermined system call instruction or the predetermined function in each of the first call flow and the second call flow;
identifying the importance score includes identifying a first importance score corresponding to a predetermined system call instruction or a predetermined type of function identified in the first call flow, and a second importance score corresponding to a predetermined system call instruction or a predetermined type of function identified in the second call flow,
assigning the importance scores includes assigning the first importance score to each function included in the first call flow and assigning the second importance score to each function included in the second call flow.
18. The method of claim 17.
(Appendix 19)
assigning the importance score includes, when a common function included in both the first call flow and the second call flow exists, assigning the common function a score corresponding to a higher importance among the first importance score and the second importance score.
19. The method of claim 18.
(Appendix 20)
the correspondence relationship associates the plurality of types with importance scores and categories corresponding to each type;
assigning the importance score includes assigning the identified importance score and category to each function included in the call flow.
18. The method of claim 17.
(Appendix 21)
the subject software includes a first call flow and a second call flow;
Identifying the predetermined system call instruction or the predetermined function includes identifying the predetermined system call instruction or the predetermined function in each of the first call flow and the second call flow;
identifying the importance score includes identifying a first importance score and a first category corresponding to a predetermined system call instruction or a predetermined type of function identified in the first call flow, and a second importance score and a second category corresponding to a predetermined system call instruction or a predetermined type of function identified in the second call flow,
assigning the importance scores includes assigning the first importance score and the first category to each function included in the first call flow, and assigning the second importance score and the second category to each function included in the second call flow.
21. The method of claim 20.
(Appendix 22)
assigning the importance score includes, when a common function included in both the first call flow and the second call flow exists and the first category and the second category are the same, assigning the common function a score corresponding to a higher importance out of the first importance score and the second importance score.
22. The method of claim 21.
(Appendix 23)
the outputting includes outputting the target software and the call flow information.
23. The method of any one of claims 17 to 22.
(Appendix 24)
the method includes determining, based on the call flow information, functions of a plurality of functions included in the call flow of the target software, the functions having importance indicated by importance scores higher than a predetermined level, as targets of inspection processing;
24. The method of claim 23.
10 処理装置
11 特定部(第1特定部)
12 特定部(第2特定部)
13 付与部
14 出力部
20 処理装置
21 特定部(第1特定部)
22 特定部(第2特定部)
23 付与部
24 出力部
30 処理装置
31 特定部(第1特定部)
32 特定部(第2特定部)
33 付与部
34 出力部
50 ソフトウェア検査装置
51 特定部(第1特定部)
52 特定部(第2特定部)
53 付与部
54 出力部
55 検査処理部
10 Processing device 11 Identification unit (first identification unit)
12 Specific Section (Second Specific Section)
13 Assignment unit 14 Output unit 20 Processing device 21 Identification unit (first identification unit)
22 Specific Section (Second Specific Section)
23 Assignment unit 24 Output unit 30 Processing device 31 Identification unit (first identification unit)
32 Specific Section (Second Specific Section)
33 Assignment unit 34 Output unit 50 Software inspection device 51 Identification unit (first identification unit)
52 Specific Section (Second Specific Section)
53 Assignment unit 54 Output unit 55 Inspection processing unit
Claims (24)
システムコール命令又は関数についての複数の種類と各種類に応じた重要度スコアとの対応関係に基づいて、前記特定された所定のシステムコール命令又は所定の関数の種類に対応する重要度スコアを特定することと、
前記コールフローに含まれる各関数に、前記特定された重要度スコアを付与することと、
前記コールフローに含まれる各関数及び各関数に付与された重要度スコアに関するコールフロー情報を出力することと、
を含む、処理を処理装置に実行させるプログラム。 Identifying a predetermined system call command or a predetermined function in a call flow that includes a start function and an end function of the call flow included in the target software and has a plurality of functions that have a call relationship;
Identifying an importance score corresponding to the specified type of system call instruction or function based on a correspondence relationship between a plurality of types of system call instructions or functions and an importance score corresponding to each type;
assigning the identified importance score to each function in the call flow;
outputting call flow information relating to each function included in the call flow and the importance score assigned to each function;
A program for causing a processing device to execute a process, including:
前記所定のシステムコール命令又は前記所定の関数を特定することは、前記第1コールフロー及び前記第2コールフローのそれぞれにおいて、前記所定のシステムコール命令又は前記所定の関数を特定することを含み、
前記重要度スコアを特定することは、前記第1コールフローにおいて特定された所定のシステムコール命令又は所定の関数の種類に対応する第1重要度スコア、及び、前記第2コールフローにおいて特定された所定のシステムコール命令又は所定の関数の種類に対応する第2重要度スコアを、それぞれ特定することを含み、
前記重要度スコアを付与することは、前記第1コールフローに含まれる各関数に前記第1重要度スコアを付与し、前記第2コールフローに含まれる各関数に前記第2重要度スコアを付与することを含む、
請求項1記載のプログラム。 the subject software includes a first call flow and a second call flow;
identifying the predetermined system call instruction or the predetermined function includes identifying the predetermined system call instruction or the predetermined function in each of the first call flow and the second call flow;
identifying the importance score includes identifying a first importance score corresponding to a predetermined system call instruction or a predetermined type of function identified in the first call flow, and a second importance score corresponding to a predetermined system call instruction or a predetermined type of function identified in the second call flow,
assigning the importance scores includes assigning the first importance score to each function included in the first call flow and assigning the second importance score to each function included in the second call flow.
The program according to claim 1.
請求項2記載のプログラム。 assigning the importance score includes, when a common function included in both the first call flow and the second call flow exists, assigning the common function a score corresponding to a higher importance out of the first importance score and the second importance score.
The program according to claim 2.
前記重要度スコアを付与することは、前記コールフローに含まれる各関数に、前記特定された重要度スコア及びカテゴリを付与することを含む、
請求項1記載のプログラム。 the correspondence relationship associates the plurality of types with importance scores and categories corresponding to each type;
assigning the importance score includes assigning the identified importance score and category to each function included in the call flow.
The program according to claim 1.
前記所定のシステムコール命令又は前記所定の関数を特定することは、前記第1コールフロー及び前記第2コールフローのそれぞれにおいて、前記所定のシステムコール命令又は前記所定の関数を特定し、
前記重要度スコアを特定することは、前記第1コールフローにおいて特定された所定のシステムコール命令又は所定の関数の種類に対応する第1重要度スコア及び第1カテゴリ、並びに、前記第2コールフローにおいて特定された所定のシステムコール命令又は所定の関数の種類に対応する第2重要度スコア及び第2カテゴリを、それぞれ特定することを含み、
前記重要度スコアを付与することは、前記第1コールフローに含まれる各関数に前記第1重要度スコア及び前記第1カテゴリを付与し、前記第2コールフローに含まれる各関数に前記第2重要度スコア及び第2カテゴリを付与することを含む、
請求項4記載のプログラム。 the subject software includes a first call flow and a second call flow;
Identifying the predetermined system call instruction or the predetermined function includes identifying the predetermined system call instruction or the predetermined function in each of the first call flow and the second call flow;
identifying the importance score includes identifying a first importance score and a first category corresponding to a predetermined system call instruction or a predetermined type of function identified in the first call flow, and a second importance score and a second category corresponding to a predetermined system call instruction or a predetermined type of function identified in the second call flow,
assigning the importance scores includes assigning the first importance score and the first category to each function included in the first call flow, and assigning the second importance score and the second category to each function included in the second call flow.
The program according to claim 4.
請求項5記載のプログラム。 assigning the importance score includes, when a common function included in both the first call flow and the second call flow exists and the first category and the second category are the same, assigning the common function a score corresponding to a higher importance out of the first importance score and the second importance score.
The program according to claim 5.
請求項1から6のいずれか1項に記載のプログラム。 the outputting includes outputting the target software and the call flow information.
The program according to any one of claims 1 to 6.
請求項7記載のプログラム。 the processing includes determining, based on the call flow information, a function having an importance score higher than a predetermined level among a plurality of functions included in the call flow of the target software as a target for inspection processing;
The program according to claim 7.
システムコール命令又は関数についての複数の種類と各種類に応じた重要度スコアとの対応関係に基づいて、前記特定された所定のシステムコール命令又は所定の関数の種類に対応する重要度スコアを特定する第2特定部と、
前記コールフローに含まれる各関数に、前記特定された重要度スコアを付与する付与部と、
前記コールフローに含まれる各関数及び各関数に付与された重要度スコアに関するコールフロー情報を出力する出力部と、
を具備する処理装置。 a first identification unit that identifies a predetermined system call command or a predetermined function in a call flow that includes a start function and an end function of the call flow included in the target software and has a plurality of functions that have a call relationship;
a second identification unit that identifies an importance score corresponding to the identified type of predetermined system call instruction or function based on a correspondence relationship between a plurality of types of system call instruction or function and an importance score corresponding to each type;
an assigning unit that assigns the identified importance score to each function included in the call flow;
an output unit that outputs call flow information regarding each function included in the call flow and an importance score assigned to each function;
A processing device comprising:
前記第1特定部は、前記第1コールフロー及び前記第2コールフローのそれぞれにおいて、所定のシステムコール命令又は所定の関数を特定し、
前記第2特定部は、前記第1コールフローにおいて特定された所定のシステムコール命令又は所定の関数の種類に対応する第1重要度スコア、及び、前記第2コールフローにおいて特定された所定のシステムコール命令又は所定の関数の種類に対応する第2重要度スコアを、それぞれ特定し、
前記付与部は、前記第1コールフローに含まれる各関数に前記第1重要度スコアを付与し、前記第2コールフローに含まれる各関数に前記第2重要度スコアを付与する、
請求項9記載の処理装置。 the subject software includes a first call flow and a second call flow;
the first identification unit identifies a predetermined system call command or a predetermined function in each of the first call flow and the second call flow;
the second identification unit identifies a first importance score corresponding to the type of a predetermined system call instruction or a predetermined function identified in the first call flow, and a second importance score corresponding to the type of a predetermined system call instruction or a predetermined function identified in the second call flow,
the assigning unit assigns the first importance score to each function included in the first call flow, and assigns the second importance score to each function included in the second call flow;
The processing device according to claim 9.
請求項10記載の処理装置。 When a common function included in both the first call flow and the second call flow exists, the assigning unit assigns a score corresponding to a higher importance between the first importance score and the second importance score to the common function.
The processing device of claim 10.
前記付与部は、前記コールフローに含まれる各関数に、前記特定された重要度スコア及びカテゴリを付与する、
請求項9記載の処理装置。 the correspondence relationship associates the plurality of types with importance scores and categories corresponding to each type;
the assigning unit assigns the identified importance score and category to each function included in the call flow.
The processing device according to claim 9.
前記第1特定部は、前記第1コールフロー及び前記第2コールフローのそれぞれにおいて、所定のシステムコール命令又は所定の関数を特定し、
前記第2特定部は、前記第1コールフローにおいて特定された所定のシステムコール命令又は所定の関数の種類に対応する第1重要度スコア及び第1カテゴリ、並びに、前記第2コールフローにおいて特定された所定のシステムコール命令又は所定の関数の種類に対応する第2重要度スコア及び第2カテゴリを、それぞれ特定し、
前記付与部は、前記第1コールフローに含まれる各関数に前記第1重要度スコア及び前記第1カテゴリを付与し、前記第2コールフローに含まれる各関数に前記第2重要度スコア及び第2カテゴリを付与する、
請求項12記載の処理装置。 the subject software includes a first call flow and a second call flow;
the first identification unit identifies a predetermined system call command or a predetermined function in each of the first call flow and the second call flow;
the second identification unit identifies a first importance score and a first category corresponding to the type of the predetermined system call instruction or the predetermined function identified in the first call flow, and a second importance score and a second category corresponding to the type of the predetermined system call instruction or the predetermined function identified in the second call flow,
the assigning unit assigns the first importance score and the first category to each function included in the first call flow, and assigns the second importance score and the second category to each function included in the second call flow.
The processing device of claim 12.
請求項13記載の処理装置。 the assigning unit assigns, to the common function, a score corresponding to a higher importance between the first importance score and the second importance score, when a common function included in both the first call flow and the second call flow exists and the first category and the second category are the same.
The processing device of claim 13.
請求項9から14のいずれか1項に記載の処理装置。 the output unit outputs the target software and the call flow information.
The processing device according to any one of claims 9 to 14.
前記コールフロー情報に基づいて、前記対象ソフトウェアのコールフローに含まれる複数の関数のうちで重要度スコアの示す重要度が所定レベルよりも高い関数を検査処理対象とする検査処理部と、
を具備するソフトウェア検査装置。 a processing device according to claim 15;
an inspection processing unit that, based on the call flow information, selects functions of importance indicated by importance scores higher than a predetermined level among a plurality of functions included in the call flow of the target software as inspection processing targets;
A software inspection device comprising:
システムコール命令又は関数についての複数の種類と各種類に応じた重要度スコアとの対応関係に基づいて、前記特定された所定のシステムコール命令又は所定の関数の種類に対応する重要度スコアを特定することと、
前記コールフローに含まれる各関数に、前記特定された重要度スコアを付与することと、
前記コールフローに含まれる各関数及び各関数に付与された重要度スコアに関するコールフロー情報を出力することと、
を含む方法。 Identifying a predetermined system call command or a predetermined function in a call flow that includes a start function and an end function of the call flow included in the target software and has a plurality of functions that have a call relationship;
Identifying an importance score corresponding to the specified type of system call instruction or function based on a correspondence relationship between a plurality of types of system call instructions or functions and an importance score corresponding to each type;
assigning the identified importance score to each function in the call flow;
outputting call flow information relating to each function included in the call flow and the importance score assigned to each function;
A method comprising:
前記所定のシステムコール命令又は前記所定の関数を特定することは、前記第1コールフロー及び前記第2コールフローのそれぞれにおいて、前記所定のシステムコール命令又は前記所定の関数を特定することを含み、
前記重要度スコアを特定することは、前記第1コールフローにおいて特定された所定のシステムコール命令又は所定の関数の種類に対応する第1重要度スコア、及び、前記第2コールフローにおいて特定された所定のシステムコール命令又は所定の関数の種類に対応する第2重要度スコアを、それぞれ特定することを含み、
前記重要度スコアを付与することは、前記第1コールフローに含まれる各関数に前記第1重要度スコアを付与し、前記第2コールフローに含まれる各関数に前記第2重要度スコアを付与することを含む、
請求項17記載の方法。 the subject software includes a first call flow and a second call flow;
identifying the predetermined system call instruction or the predetermined function includes identifying the predetermined system call instruction or the predetermined function in each of the first call flow and the second call flow;
identifying the importance score includes identifying a first importance score corresponding to a predetermined system call instruction or a predetermined type of function identified in the first call flow, and a second importance score corresponding to a predetermined system call instruction or a predetermined type of function identified in the second call flow,
assigning the importance scores includes assigning the first importance score to each function included in the first call flow and assigning the second importance score to each function included in the second call flow.
18. The method of claim 17.
請求項18記載の方法。 assigning the importance score includes, when a common function included in both the first call flow and the second call flow exists, assigning the common function a score corresponding to a higher importance out of the first importance score and the second importance score.
20. The method of claim 18.
前記重要度スコアを付与することは、前記コールフローに含まれる各関数に、前記特定された重要度スコア及びカテゴリを付与することを含む、
請求項17記載の方法。 the correspondence relationship associates the plurality of types with importance scores and categories corresponding to each type;
assigning the importance score includes assigning the identified importance score and category to each function included in the call flow.
18. The method of claim 17.
前記所定のシステムコール命令又は前記所定の関数を特定することは、前記第1コールフロー及び前記第2コールフローのそれぞれにおいて、前記所定のシステムコール命令又は前記所定の関数を特定し、
前記重要度スコアを特定することは、前記第1コールフローにおいて特定された所定のシステムコール命令又は所定の関数の種類に対応する第1重要度スコア及び第1カテゴリ、並びに、前記第2コールフローにおいて特定された所定のシステムコール命令又は所定の関数の種類に対応する第2重要度スコア及び第2カテゴリを、それぞれ特定することを含み、
前記重要度スコアを付与することは、前記第1コールフローに含まれる各関数に前記第1重要度スコア及び前記第1カテゴリを付与し、前記第2コールフローに含まれる各関数に前記第2重要度スコア及び第2カテゴリを付与することを含む、
請求項20記載の方法。 the subject software includes a first call flow and a second call flow;
Identifying the predetermined system call instruction or the predetermined function includes identifying the predetermined system call instruction or the predetermined function in each of the first call flow and the second call flow;
identifying the importance score includes identifying a first importance score and a first category corresponding to a predetermined system call instruction or a predetermined type of function identified in the first call flow, and a second importance score and a second category corresponding to a predetermined system call instruction or a predetermined type of function identified in the second call flow,
assigning the importance scores includes assigning the first importance score and the first category to each function included in the first call flow, and assigning the second importance score and the second category to each function included in the second call flow.
21. The method of claim 20.
請求項21記載の方法。 assigning the importance score includes, when a common function included in both the first call flow and the second call flow exists and the first category and the second category are the same, assigning the common function a score corresponding to a higher importance out of the first importance score and the second importance score.
22. The method of claim 21.
請求項17から22のいずれか1項に記載の方法。 the outputting includes outputting the target software and the call flow information.
23. The method of any one of claims 17 to 22.
請求項23記載の方法。 the method includes determining, based on the call flow information, functions of a plurality of functions included in the call flow of the target software, the functions having an importance indicated by an importance score higher than a predetermined level, as targets of inspection processing;
24. The method of claim 23.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/JP2024/009981 WO2025191784A1 (en) | 2024-03-14 | 2024-03-14 | Program, processing device, and method |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/JP2024/009981 WO2025191784A1 (en) | 2024-03-14 | 2024-03-14 | Program, processing device, and method |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2025191784A1 true WO2025191784A1 (en) | 2025-09-18 |
Family
ID=97063268
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/JP2024/009981 Pending WO2025191784A1 (en) | 2024-03-14 | 2024-03-14 | Program, processing device, and method |
Country Status (1)
| Country | Link |
|---|---|
| WO (1) | WO2025191784A1 (en) |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20170161038A1 (en) * | 2014-09-18 | 2017-06-08 | Facebook, Inc. | Code placement using a dynamic call graph |
| WO2019159397A1 (en) * | 2018-02-15 | 2019-08-22 | 三菱電機株式会社 | Software visualization device, software visualization method, and software visualization program |
| WO2021079408A1 (en) * | 2019-10-21 | 2021-04-29 | 三菱電機株式会社 | Software analysis device |
-
2024
- 2024-03-14 WO PCT/JP2024/009981 patent/WO2025191784A1/en active Pending
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20170161038A1 (en) * | 2014-09-18 | 2017-06-08 | Facebook, Inc. | Code placement using a dynamic call graph |
| WO2019159397A1 (en) * | 2018-02-15 | 2019-08-22 | 三菱電機株式会社 | Software visualization device, software visualization method, and software visualization program |
| WO2021079408A1 (en) * | 2019-10-21 | 2021-04-29 | 三菱電機株式会社 | Software analysis device |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US9047196B2 (en) | Usage aware NUMA process scheduling | |
| US8806648B2 (en) | Automatic classification of security vulnerabilities in computer software applications | |
| US20160110543A1 (en) | Apparatus and method for detecting malicious application based on visualization similarity | |
| JP2005534092A (en) | Method and apparatus for automatic determination of potentially worm-like behavior of a program | |
| CN110325994B (en) | Apparatus and methods for enhancing control flow integrity of software applications | |
| CN106874180A (en) | Detection System And Method Thereof | |
| US11500982B2 (en) | Systems and methods for reliably injecting control flow integrity into binaries by tokenizing return addresses | |
| US20200150941A1 (en) | Heterogenous computer system optimization | |
| KR102344496B1 (en) | Method and apparatus for analysing function of malicious code | |
| CN110674474A (en) | Operation control method and device for application program | |
| US20230418623A1 (en) | Application remodeling method, system, cluster, medium, and program product | |
| WO2025191784A1 (en) | Program, processing device, and method | |
| US11934517B2 (en) | Systems and methods for reliably injecting control flow integrity into binaries without source code | |
| US11868465B2 (en) | Binary image stack cookie protection | |
| WO2021024476A1 (en) | Software analysis device, software analysis method, and computer-readable medium | |
| JP7318707B2 (en) | Semiconductor device, control flow inspection method, control flow inspection program, and electronic device | |
| US20230096849A1 (en) | Offload server, offload control method, and offload program | |
| JP7468641B2 (en) | Software correction device, software correction method, and program | |
| CN118734305A (en) | Process scanning method and device, and electronic equipment | |
| WO2025191823A1 (en) | Program, processing device, and method | |
| KR102323621B1 (en) | Apparatus and method for fuzzing firmware | |
| CN112148364B (en) | Partition linking method and system for embedded microkernel operating system | |
| WO2022201323A1 (en) | Symbol narrowing-down device, program analysis device, symbol extraction method, program analysis method, and non-temporary computer-readable medium | |
| US20250085939A1 (en) | Information processing apparatus, information processing method, and non-transitory computer readable medium | |
| US7305660B2 (en) | Method to generate a formatted trace for an embedded device |
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: 24929572 Country of ref document: EP Kind code of ref document: A1 |