WO2011151931A1 - アプリケーションの解析方法、解析システム及び記録媒体 - Google Patents

アプリケーションの解析方法、解析システム及び記録媒体 Download PDF

Info

Publication number
WO2011151931A1
WO2011151931A1 PCT/JP2010/062442 JP2010062442W WO2011151931A1 WO 2011151931 A1 WO2011151931 A1 WO 2011151931A1 JP 2010062442 W JP2010062442 W JP 2010062442W WO 2011151931 A1 WO2011151931 A1 WO 2011151931A1
Authority
WO
WIPO (PCT)
Prior art keywords
program
procedure
analysis
application program
processor
Prior art date
Application number
PCT/JP2010/062442
Other languages
English (en)
French (fr)
Inventor
博泰 西山
Original Assignee
株式会社日立製作所
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to US13/699,151 priority Critical patent/US8898649B2/en
Publication of WO2011151931A1 publication Critical patent/WO2011151931A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data

Definitions

  • the present invention relates to an application analysis method, and more particularly, to a method for specifying a cause of an illegal operation of a program in a Web application having a three-layer architecture.
  • a three-layer architecture in which an application is configured with three layers of a Web layer, a logic layer, and a database layer is widely spread.
  • the three-tier architecture a series of combinations of user interface presentation, input action, and data operation corresponding to the action is realized as a service.
  • various Web systems are configured by combining a plurality of such services.
  • Non-Patent Document 1 a source code analysis tool that outputs the call relationship (call graph) of procedures in the program based on the static analysis result of the program, and outputs the dynamic call relationship of procedures Means such as a program trace tool and interactive execution trace of a program using a source level debugger have been used (see Non-Patent Document 1).
  • a malfunction of a program is manifested as an error in the control flow caused by an error in the control logic in the program or an illegal data value caused by an error in the calculation logic in the program. Therefore, the former can be verified by confirming the flow of program control using a source code analysis tool or a program trace tool and confirming whether the actual operation matches the expected operation. On the other hand, the latter can be verified by stopping the execution of the program at each execution time using a source code debugger and checking the values of variables and the like.
  • the program source code of the logic layer can be confirmed interactively by using a source level debugger.
  • the processing of the database layer program can be generally realized by issuing a command described in SQL, which is a database processing language, to the application of the logic layer to the application of the logic layer.
  • the SQL command issued by the logic layer application is handled as character string data and dynamically constructed in the logic layer program. Therefore, by understanding what kind of SQL statement is executed with the execution of the logic layer program and the execution process of the logic layer program, the operation of the logic layer is performed by using a program trace or an interactive debugger together. Confirm. As a result, the operation of the entire program of the three-layer architecture can be confirmed.
  • Non-Patent Document 2 In addition to the method of detecting a program malfunction by understanding the program operation in this way, there is a method of detecting a program vulnerability by a static analysis of the program (see Non-Patent Document 2).
  • Non-Patent Document 2 whether or not there is a data flow from an unreliable data such as user input data to an API that may cause a security problem such as database reference by using a data flow analysis method.
  • a method for verifying is disclosed. According to this method, if there is no security guarantee procedure in the middle of the data flow, it can be estimated that a security vulnerability exists. Further, according to this method, it is possible to detect a problem of the program in a short time without requiring time and effort to understand the program specification in detail.
  • Patent Document 1 discloses means for providing a general-purpose security analysis module for a plurality of program languages such as Java and PL / SQL. According to this technology, it is possible to realize a general-purpose security analysis module by once converting a plurality of programming languages into a unified internal representation and applying analysis processing to the converted internal representation.
  • the method of detecting the vulnerability of the program by the static analysis of the program can detect the vulnerability of the program, it cannot identify the cause of the vulnerability of the program.
  • it is necessary to consider the interaction between the plurality of services. Therefore, it is more difficult to identify the cause of the vulnerability of the program as compared to a single service or program.
  • the present invention has been made in consideration of the above-described problems, and an object of the present invention is to provide an application analysis method for easily identifying the cause of a program malfunction or vulnerability in a three-layer architecture application. .
  • an analysis system comprising a processor that executes a program and a memory that stores a program executed by the processor is a method for analyzing an application program including a database operation statement, wherein the processor includes the application program And a first procedure for analyzing a flow of control of the application program and data used in the application program based on an execution result of the application program, and the processor includes the database program including a plurality of database operation statements.
  • FIG. 1A is a diagram showing a schematic configuration of a computer system 1 according to the first embodiment of this invention.
  • FIG. 1B is a diagram illustrating a configuration of the analysis system 101 according to the first embodiment of this invention.
  • the analysis system 101 includes an AP flow analysis module 102, an SQL flow analysis module 103, an analysis start point analysis module 104, an unauthorized propagation path analysis module 105, an origin narrowing module 106, a path mapping module 107, an SQL dependency table. (Table) 113 is provided.
  • the analysis system 101 includes a memory device 21, an arithmetic processing device 22, an interface device 23, an auxiliary storage device 25, an input device 24, and a drive device 26 that are mutually connected by a bus 30.
  • the memory device 21 is a RAM (Random Access Memory) that reads and stores a program such as a program (a program for executing the processing of each module 102 to 107 in FIG. 1A) stored in the auxiliary storage device 25 when the analysis system 101 is activated. Or the like.
  • the memory device 21 also stores files necessary for program execution, data of processing results of the modules 102 to 107, and the like.
  • the arithmetic processing device 22 is an arithmetic processing device such as a CPU (Central Processing Unit) that executes a program stored in the memory device 21.
  • the interface device 23 is an interface device for connecting to an external network or the like.
  • the input device 24 is an input device (for example, a keyboard or a mouse) that provides a user interface.
  • the auxiliary storage device 25 is a storage device such as an HDD (Hard Disk Drive) that stores programs, files, data, and the like.
  • the drive device 26 is a device that reads a program recorded on the recording medium 27.
  • the program read by the drive device 26 is installed in the auxiliary storage device 25.
  • the recording medium 27 is a recording medium such as a USB (Universal Serial Bus) memory or an SD memory card in which the above-described program is recorded.
  • the analysis system 101 outputs (presents) the analysis result 111 to the user terminal 112 connected via a network (not shown).
  • the target program 108 is a program to be analyzed by the analysis system 101.
  • the target program 108 operates based on an instruction from the user terminal 110 and outputs an execution result 109 such as an execution log. Note that the target program 108 may operate on a system other than the analysis system 101.
  • the AP flow analysis module 102 inputs the target program 108 and the execution result 109, and based on the target program 108 and the execution result 109, the control flow (control flow) of the target program 108 and each execution point of the target program 108 Analyzes the value of the variable in.
  • the AP flow analysis module 102 can be realized by the technique disclosed in Non-Patent Document 3, for example.
  • the SQL flow analysis module 103 executes SQL commands and SQL commands executed by each SQL operation statement (SQL execution statement) described in the target program 108 based on the analysis result and the execution result 109 by the AP flow analysis module 102. Analyze the relationship of execution order.
  • the SQL flow analysis module 103 stores, in the SQL dependency table 113, information indicating the relationship of the execution order of each SQL command obtained as a result of the analysis.
  • FIG. 2 is a flowchart showing the control logic of the SQL flow analysis module 103 according to the first embodiment of this invention.
  • the SQL flow analysis module 103 starts the process (201).
  • the SQL flow analysis module 103 uses the variable N in each sentence S (processing step) in the target program 108 and the set of possible values V of the variable N ⁇ V ⁇ as a variable E (hereinafter referred to as a variable E). , (Set E)) (202).
  • the elements of the set E are expressed as the mapping (N ⁇ ⁇ V ⁇ ) from the variable N to the set ⁇ V ⁇ of the value V from each sentence S (S ⁇ ⁇ N ⁇ ⁇ V ⁇ ).
  • a set of SQL operation statements in the target program 108 is stored in variables D and D ′ (hereinafter referred to as “set D, D ′”) representing the set, and a variable S (hereinafter referred to as “set D, D ′”). It is initialized by making “set S”) an empty set.
  • set D, D ′ a set of SQL operation statements stored in the sets D and D ′ can be obtained by calling a procedure for an SQL operation defined in various programming languages and libraries.
  • the SQL flow analysis module 103 determines whether or not the set D ′ is an empty set (203). If the set D ′ is not an empty set (NO in 203), the process proceeds to processing 204, where one element (SQL operation statement) is extracted from the set D ′ and stored in the variable d ′ (204). In the process 204, the SQL operation character string in the SQL operation statement stored in the variable d ′ is stored in the variable s. For example, when the SQL operation statement is “stmt.executeQuery (sql)”, the SQL operation character string is the value of the variable sql (for example, “select * from T”).
  • the SQL operation character string is obtained by referring to the mapping relationship between the variable N and the set of possible values V of the variable N ⁇ V ⁇ in the sentence d ′ obtained by the AP flow analysis module 102. Thereafter, the mapping from variable d ′ to variable s ( ⁇ d ′ ⁇ s ⁇ ) is added to set S.
  • step 205 the SQL flow analysis module 103 stores the set S (a set of mappings from each SQL operation statement to the SQL operation character string) in a variable S ′ representing the set (205).
  • the SQL flow analysis module 103 obtains a set S, S ′ of mapping from each SQL operation statement to the SQL operation character string in the target program 108.
  • the SQL flow analysis module 103 determines whether or not the set S ′ is an empty set (206). If the set S ′ is an empty set (YES in 206), there is no SQL operation statement to be analyzed, and the process ends (213). On the other hand, when the set S ′ is not an empty set (NO in 206), the SQL flow analysis module 103 extracts one element (mapping from the SQL operation statement to the SQL operation character string) from the set S ′ and sets it in the variable s ′. Store (207). Further, a set (S ⁇ ⁇ s ′ ⁇ ) obtained by removing the elements stored in the variable s ′ from the set S is stored in a variable S ′′ representing the set (hereinafter referred to as “set S” ”).
  • the SQL flow analysis module 103 determines whether or not the set S ′′ is an empty set (208). If the set S ′′ is an empty set (YES in 208), the process returns to the process 206. On the other hand, when the set S ′′ is not an empty set (NO in 208), the SQL flow analysis module 103 extracts one element from the set S ′′ and stores it in the variable s ′′ (209). Thereafter, it is stored in the variable s ′. The dependency relationship between the generated element and the element stored in the variable s "is analyzed (210). The process 210 will be described later with reference to FIG.
  • the SQL flow analysis module 103 determines whether or not there is a dependency relationship between the element stored in the variable s ′ and the element stored in the variable s ′′ (211). When there is no dependency relationship (NO in 211) ), The process 208 is returned to, and the dependency relationship with another element stored in the set S ′′ is analyzed. On the other hand, if there is a dependency relationship (YES in 211), the SQL flow analysis module 103 registers the set of the variable s ′ and the variable s ′′ in the SQL dependency table 113 (212), and returns to the processing 208.
  • the SQL flow analysis module 103 can analyze the relationship of the execution order of each SQL command.
  • the possible values of the variables obtained as a result of the analysis by the AP flow analysis module 102 described above may be indeterminate due to the analysis accuracy.
  • the SQL flow analysis module 103 can improve the accuracy of the analysis by using the execution result 109 of the target program 108.
  • FIG. 3 is a flowchart showing the control logic of the dependency analysis processing between two SQL operation statements according to the first embodiment of this invention.
  • the process 210 of FIG. 2 will be described in detail.
  • the SQL flow analysis module 103 starts the process (301).
  • the SQL flow analysis module 103 converts the dependency source SQL operation statement, the dependency source SQL operation string, the dependency destination SQL operation statement, and the dependency destination SQL operation string into variables f_s, f_c, Store in t_s and t_c (302).
  • the dependence source SQL operation statement and the SQL operation character string are obtained based on the elements stored in the variable s ′ (see the process 207 in FIG. 2).
  • the dependent SQL operation sentence and the SQL operation character string are obtained based on the elements stored in the variable s ′′ (see the process 209 in FIG. 2).
  • the SQL flow analysis module 103 determines whether or not control can be reached from the dependency source SQL operation statement stored in the variable f_s with respect to the dependency destination SQL operation statement stored in the variable t_s (303). ).
  • the reachability of control can be analyzed by a control flow analysis technique in a known compiler or the like by the AP flow analysis module 102.
  • the SQL flow analysis module 103 determines the execution order of the process based on the dependency source SQL operation statement and the process based on the dependency destination SQL operation statement. That is, when the dependence source SQL operation statement is a process that may be executed before the dependence destination SQL operation statement, it is determined that the control is reachable. On the other hand, if the dependency source SQL operation statement is a process that is unlikely to be executed before the dependency destination SQL operation statement, it is determined that the control is unreachable.
  • the SQL flow analysis module 103 determines that there is no dependency (305), and ends the process (307). On the other hand, if the control is reachable in process 303 (YES in 303), the process proceeds to process 304, and the SQL flow analysis module 103 stores the operation of the SQL operation character string stored in the variable f_c in the variable t_c. It is determined whether the execution result of the executed SQL operation character string is affected (304).
  • the SQL flow analysis module 103 determines whether the operation content of the former SQL operation character string affects the operation content of the latter SQL operation character string. That is, when the operation content of the former SQL operation character string is “update database” and the operation content of the latter SQL operation character string is “database search”, the update result of the database affects the search result. , It is determined to affect. On the other hand, when the operation content of the former SQL operation character string is “database search based on the first condition” and the operation content of the latter SQL operation character string is “database search based on the second condition”, Since each search is independent, it is determined that there is no influence.
  • the SQL flow analysis module 103 determines that there is no dependency (305), and ends the process (307). On the other hand, if the process 304 has an influence (YES in 304), the SQL flow analysis module 103 determines that there is a dependency (306) and ends the process (307).
  • the SQL flow analysis module 103 can analyze the dependency between two SQL operation statements.
  • FIG. 4 is a flowchart showing the control logic of the analysis start point analysis module 104 according to the first embodiment of this invention.
  • the analysis start point analysis module 104 starts the process (401).
  • the analysis start point analysis module 104 sets a location designated by the user as an analysis start point (analysis start point) (402).
  • the analysis start point is set by pointing out the location (sentence) where the user confirmed an invalid value in the program, or indicating the location where the user has an invalid value among the results displayed on the display. It is realized by.
  • the process ends (403).
  • the analysis start point analysis module 104 can set the location designated by the user as the analysis start point.
  • FIG. 5 is a flowchart showing the control logic of the unauthorized propagation path analysis module 105 according to the first embodiment of this invention.
  • the unauthorized propagation path analysis module 105 analyzes a propagation path (path) of an unauthorized calculation result using the analysis start point set by the analysis start point analysis module 104 as a start point.
  • the unauthorized propagation path analysis module 105 starts the process (601).
  • the unauthorized propagation path analysis module 105 stores the analysis start point sentence set by the analysis start point analysis module 104 in a variable o, and a variable P representing a set of paths (hereinafter referred to as “path set P”). )) Is set as an empty set (602).
  • the illegal propagation path analysis module 105 uses a variable R (hereinafter referred to as a “reference set R”) representing a set of references as a set of variables and memory locations referred to in the sentence at the analysis start point stored in the variable o. (603).
  • a reference set R representing a set of references as a set of variables and memory locations referred to in the sentence at the analysis start point stored in the variable o. (603).
  • the illegal propagation path analysis module 105 determines whether or not the reference set R is an empty set (604). When the reference set R is an empty set (YES in 604), the process proceeds to process 611, the path set P is set as the path set of the illegal propagation path (611), and the process ends (612).
  • the process proceeds to process 605, and the illegal propagation path analysis module 105 extracts one element from the reference set R and stores it in the variable r ( 605).
  • the set of definition sentences of the variable r is stored in a variable Q representing the set of definition sentences (hereinafter referred to as “definition sentence set Q”).
  • the definition sentence of the variable r is a sentence for calculating the value held by the variable r.
  • the processing for obtaining a set of definition sentences can be realized by a control flow analysis technique in a known compiler or the like by the AP flow analysis module 102.
  • the illegal propagation path analysis module 105 determines whether or not the definition statement set Q is an empty set (606). If the definition statement set Q is an empty set (YES in 606), the process proceeds to process 611, the path set P is set as the path set of the illegal propagation path (611), and the process ends (612).
  • the process proceeds to process 607, and the illegal propagation path analysis module 105 extracts one element (definition sentence) from the definition sentence set Q.
  • a series of illegal propagation path analysis control logic shown in FIG. 5 is recursively called to obtain a path set having an element stored in the variable q as an analysis start point, and the obtained path set is changed to a path set. It is stored in a variable P ′ (hereinafter referred to as “path set P ′”) (608).
  • the unauthorized propagation path analysis module 105 analyzes the data propagation path in the reverse direction with respect to the control flow of the target program 108, starting from the analysis start point set by the analysis start point analysis module 104. This makes it possible to obtain a path set that represents the execution path of a sentence that is a cause of an incorrect calculation result.
  • FIG. 6 is a flowchart showing the control logic of the starting point narrowing module 106 according to the first embodiment of this invention.
  • the starting point narrowing module 106 removes a part that is unlikely or causes a malfunction of the program from the propagation path (path set) obtained by the illegal propagation path analysis module 105 to thereby obtain a starting point (cause part). ).
  • the starting point narrowing module 106 starts processing (701).
  • the starting point narrowing module 106 stores the processing target path (propagation path) obtained by the unauthorized propagation path analysis module 105 in the variable w (702).
  • a set of edges transitions from a predetermined sentence to the next executed sentence
  • X and X ′ are stored in variables X and X ′ (hereinafter referred to as “transition edge set”).
  • X, X ′ a non-presentation edge set (a set of edges that should not be presented to the user) preset by the user or the like is stored in the variable Y (hereinafter referred to as“ non-presentation edge set Y ”).
  • the starting point narrowing module 106 determines whether or not the transition edge set X is an empty set (703). If the transition edge set X is an empty set (YES in 703), the process proceeds to process 707, and a path obtained by combining the transition edge set X ′ is set as a presentation path (path to be presented to the user) (707). Then, the process ends (708).
  • the process proceeds to process 704, where the starting point narrowing module 106 extracts one element (edge) from the transition edge set X and sets it as a variable x. Store (704). Thereafter, it is determined whether or not the edge stored in the variable x is included in the non-presentation edge set Y (705).
  • the process returns to the process 703 and the process is repeated for the next edge.
  • the process proceeds to process 706, where the starting point narrowing module 106 removes the edge stored in the variable x from the set X ′ (X '- ⁇ X ⁇ ) is set as set X' (706). Thereafter, the processing returns to the processing 703 and the processing is repeated for the next edge.
  • the starting point narrowing module 106 determines whether each element (edge) of the transition edge set X is included in the non-presentation edge set Y, and is not included in the non-presentation edge set Y. Set the path that combines the elements as the presentation path. As a result, the edges included in the non-presentation edge set can be removed from the processing target path.
  • FIG. 7 is a flowchart showing the control logic of the route mapping module 107 according to the first embodiment of this invention.
  • the route mapping module 107 executes processing for presenting the presentation path obtained by the origin narrowing module 106 to the user.
  • the path mapping module 107 starts the process (801).
  • the path mapping module 107 stores the presentation path obtained by the starting point narrowing module 106 in a variable g (802).
  • the edge set of the presentation path stored in the variable g is stored in the variable G (hereinafter referred to as “edge set G”).
  • the path mapping module 107 determines whether or not the edge set G is an empty set (803). If the edge set G is an empty set (YES in 803), the process ends (805). On the other hand, if the edge set G is not an empty set in the process 803 (NO in 803), the process proceeds to the process 804, and the path mapping module 107 extracts one element (edge) from the edge set G and sets the transition source sentence.
  • the variable j and the transition destination sentence are respectively stored in the variable k (804). In process 804, the transition from the transition source sentence to the transition destination sentence is presented as a route. Thereafter, the process returns to the process 803 to repeat the process.
  • the route mapping module 107 presents the presentation path obtained by the starting point narrowing module 106 to the user.
  • FIG. 8 is an example of a user interface in the user terminal 110 according to the specific example of the first embodiment of the present invention.
  • a Web interface 901 illustrated in FIG. 8 is displayed on the display of the user terminal 110. This Web interface 901 is created based on the execution result 109 of FIG.
  • the web interface 901 includes a search number input form 902 for inputting a search number, an inquiry button 903 for inquiring the input search number, and a search result 904 obtained as a result of the inquiry for the input search number. .
  • the search result of “attribute # 1” is null. That is, a search result of “attribute # 1” having an invalid value such as null indicates a malfunction of the program.
  • FIG. 9 is a diagram showing the target program 108 as a specific example of the first embodiment of the present invention.
  • a target program 1001 shown in FIG. 9 is a logic layer program as an example of the target program 108. This target program 1001 realizes a single service.
  • the method doPost is called by a user action.
  • the method C0.m0 (statement (g)) and the method CO.m1 (statement (h)) in the method doPost are sequentially called.
  • the SQL operation character string s1 indicating the SQL search sentence is generated in the sentence (d).
  • an SQL search process (query) is executed.
  • an invalid value stored in the database by the sentence (c) described above is extracted as a search result.
  • the extracted search result (incorrect value) is output. That is, the search result 904 in FIG. 8 is a display example of an incorrect value output with the execution of the sentence (f).
  • FIG. 10 is a diagram illustrating an analysis result of the AP flow analysis module 102 for the target program 1001 according to the specific example of the first embodiment of the present invention.
  • the analysis result table 1303 shown in FIG. 10 includes an execution path column 1301 and a variable column 1302.
  • the execution path column 1301 shows the control flow ((g) ⁇ (a) ⁇ (b) ⁇ (c) ⁇ (h) ⁇ (d) ⁇ (e) ⁇ (f)) of the target program 1001 in FIG. Show.
  • the variable column 1302 includes a sentence column 1304 indicating each sentence (a) to (f) of the target program 1001, a variable name column 1305 indicating a variable in each sentence (a) to (f), and a value indicating the value of the variable.
  • Column 1306 includes a sentence column 1304 indicating each sentence (a) to (f) of the target program 1001, a variable name column 1305 indicating a variable in each sentence (a) to (f), and a value indicating the value of the variable.
  • FIG. 11 is a diagram illustrating an example of a table 1501 used by the SQL flow analysis module 103 according to the specific example of the first embodiment of this invention to analyze the dependency relationship between two SQL operation statements.
  • the table 1501 shown in FIG. 11 is used when the SQL flow analysis module 103 analyzes the dependency relationship between two SQL operation statements in step 304 of FIG.
  • the two SQL operation statements to be analyzed are called a pre-operation and a post-operation according to the execution order. Then, if the previous operation is update (update) and the database to be processed for the previous operation and the subsequent operation is the same, the subsequent operation depends on the result of the previous operation, that is, between the previous operation and the subsequent operation. There is a relationship. On the other hand, when the previous operation is search (select), there is no dependency between the previous operation and the subsequent operation.
  • the processing 210 analyzes the dependency relationship between each pair of (c) ⁇ (e) and (e) ⁇ (c).
  • control since control is not reachable from (e) to (c) (NO in step 303 in FIG. 3), there is no dependency relationship from (e) to (c) (305).
  • the SQL flow analysis module 103
  • the analysis start point analysis module 104 When the analysis start point analysis module 104 is instructed by the user that the search result of “attribute # 1” is an invalid value on the display screen of FIG. 8, the analysis start point analysis module 104 (the sentence (f) in FIG. 9). ) Is set as the analysis start point.
  • the illegal propagation path analysis module 105 executes the control logic of FIG. 5 to analyze the propagation path of the illegal calculation result using the sentence (f) of FIG. 9 set by the analysis start point analysis module 104 as the analysis start point. .
  • the illegal propagation path analysis module 105 first stores the analysis start point sentence (f) in the variable o and initializes the path set P to be an empty set by the process 602 in FIG. 5 (602). Thereafter, the variable v1 referred to in the analysis start point sentence (f) stored in the variable o is stored in the reference set R (603). Thereafter, the unauthorized propagation path analysis module 105 determines whether the reference set R is an empty set (604). Since the reference set R is not an empty set (NO in 604), the process proceeds to step 605, where one element (variable v1) is extracted from the reference set R and stored in the variable r (605).
  • the unauthorized propagation path analysis module 105 determines whether the path set P ′ is an empty set (609). Since the path set P ′ is not an empty set (NO in 609), the process proceeds to processing 610, and one element (path) is extracted from the path set P ′ and stored in the variable p ′ (610). In the process 610, the path ((e) added to the path stored in the variable p ′ with the transition from the end of the same path (statement (e)) to the analysis start point (statement (f)) stored in the variable o. ) ⁇ (f)) is added to the set P. Thereafter, the process returns to the process 609.
  • the process returns to the process 606. Since the definition statement set Q is an empty set (YES in 606), the process proceeds to process 611, the path set P is set as the path set of the illegal propagation path (611), and the process ends (612).
  • the illegal propagation path analysis module 105 starts the analysis start point (sentence (f)) set by the analysis start point analysis module 104 and starts the data propagation path with respect to the control flow of the target program 108. Analyze in the reverse direction. This makes it possible to obtain a path set that represents the execution path of a sentence that is a cause of an incorrect calculation result.
  • a data propagation path obtained as an analysis result is shown in FIG.
  • FIG. 12 is a diagram showing a path set obtained by the illegal propagation path analysis module 105 of the specific example of the first embodiment of the present invention.
  • the starting point narrowing module 106 narrows down the starting point (causing point) by excluding a part that is unlikely or not causing a program malfunction from the propagation path obtained by the illegal propagation path analyzing module 105.
  • the starting point narrowing module 106 first stores the path to be processed (for example, (h) ⁇ (d) ⁇ (e) ⁇ (f)) in the variable w by the process 702 in FIG. 6 (702).
  • a set of edges ( ⁇ (h) ⁇ (d), (d) ⁇ (e), (e) ⁇ (f) ⁇ ) that transitions on the path stored in the variable w is converted into a transition edge set.
  • X and X ′ are stored, and the non-presentation edge set is stored in the non-presentation edge set Y.
  • FIG. 13 is a diagram showing an example of a non-presentation edge set as a specific example of the first embodiment of the present invention. As shown in FIG. 13, an edge 1902 corresponding to each item number 1901 is registered as a non-presentation edge set. In the example shown in FIG. 13, ( ⁇ (h) ⁇ (d), (d) ⁇ (e) ⁇ ) is a non-presentation edge set.
  • the starting point narrowing module 106 determines whether or not the transition edge set X is an empty set (703). Since the transition edge set X is not an empty set (NO in 703), the process proceeds to step 704, where the starting point narrowing module 106 extracts one element (for example, (h) ⁇ (d)) from the transition edge set X and sets a variable Store in x (704). Thereafter, it is determined whether or not the edge ((h) ⁇ (d)) stored in the variable x is included in the non-presentation edge set Y (705).
  • one element for example, (h) ⁇ (d)
  • the process proceeds to process 706, and the starting point narrowing module 106 determines the transition edge set X ( ⁇ (h) ⁇ (d ), (D) ⁇ (e), (e) ⁇ (f) ⁇ ), and a set obtained by removing the edge ((h) ⁇ (d)) stored in the variable x is set as a transition edge set X ′. (706). Thereafter, the processing returns to the processing 703 and the processing is repeated for the next edge.
  • step 707 the starting point narrowing module 106 sets a path ((e) ⁇ (f)) obtained by combining the transition edge set X ′ as a presentation path (707), and ends the process.
  • the starting point narrowing module 106 is a processing target path ⁇ (g) ⁇ (b) ⁇ (c) ⁇ (e) ⁇ (f), (a) ⁇ (b) ⁇ (c) ⁇ (e) ⁇ (f) ⁇ , A similar analysis process is executed. Since these processing target paths do not include edges registered in the non-presentation edge set Y (see FIG. 13), the entire processing target paths are set as the presentation paths.
  • the starting point narrowing module 106 has processed the path ⁇ (h) ⁇ (d) ⁇ (e) ⁇ (f), (g) ⁇ (b) ⁇ (c) ⁇ (e) ⁇ (f ), (A) ⁇ (b) ⁇ (c) ⁇ (e) ⁇ (f) ⁇ , the edges included in the non-presentation edge set Y ( ⁇ (h) ⁇ (d), (d) ⁇ (e) ⁇ ) ⁇ ) Except the presentation path ⁇ (e) ⁇ (f), (g) ⁇ (b) ⁇ (c) ⁇ (e) ⁇ (f), (a) ⁇ (b) ⁇ (c) ⁇ (e ) ⁇ (f) ⁇ can be set. That is, by excluding edges included in the non-presentation edge set from the processing target path, data candidates presented to the user can be limited.
  • the route mapping module 107 executes a process of presenting the presentation path obtained by the starting point narrowing module 106 to the user.
  • the path mapping module 107 performs a process target path (for example, (g) ⁇ (b) ⁇ (c) ⁇ (e) ⁇ (f) of the presentation paths obtained by the start point narrowing module 106 by the process 802 in FIG. )) Is stored in the variable g (802).
  • a process target path for example, (g) ⁇ (b) ⁇ (c) ⁇ (e) ⁇ (f) of the presentation paths obtained by the start point narrowing module 106 by the process 802 in FIG. )
  • the edge set ((g) ⁇ (b), (b) ⁇ (c), (c) ⁇ (e), (e) ⁇ (f)) of the presentation path stored in the variable g is used.
  • edge set G Store in edge set G.
  • the path mapping module 107 determines whether or not the edge set G is an empty set (803). Since the edge set G is not an empty set (NO in 803), the process proceeds to step 804, and the path mapping module 107 extracts one element (for example, (g) ⁇ (b)) from the edge set G and makes a transition source. (G) is stored in the variable j, and the transition destination sentence (b) is stored in the variable k (804). In the process 804, a transition from the transition source sentence (g) to the transition destination sentence (b) is presented as a route. Thereafter, the processing returns to the processing 803 and the processing is repeated for the next element.
  • one element for example, (g) ⁇ (b)
  • the route mapping module 107 executes the same mapping process for the processing target paths ⁇ (e) ⁇ (f), (a) ⁇ (b) ⁇ (c) ⁇ (e) ⁇ (f) ⁇ .
  • the route mapping module 107 presents the presentation path obtained by the starting point narrowing module 106 to the user.
  • FIG. 14 is a diagram showing a display example of the presentation path 2001 as a specific example of the first embodiment of the present invention. As shown in FIG. 14, a broken line presentation path 2001 is presented in association with the target program 1001.
  • the first embodiment of the present invention it is possible to easily identify the cause of a program malfunction or vulnerability in a three-layer architecture Web application. Specifically, using the sentence (f), which is the location where the program malfunction occurs, as the analysis starting point, the path to the sentence (a), which is the cause of the malfunction, is analyzed in the reverse direction, as shown in FIG. It can be presented to the user. As a result, the user can easily identify the cause of the malfunction based on the location of the program malfunction.
  • the target program 108 (see FIG. 1) is configured from a single service like the target program 1001 in FIG. 9 has been described.
  • the target program 108 is composed of a plurality of services like the target program 1101 of FIG.
  • descriptions of configurations and operations similar to those of the first embodiment are omitted as appropriate. .
  • FIG. 15 is a diagram showing the target program 108 as a specific example of the second embodiment of the present invention.
  • a target program 1101 shown in FIG. 15 is a logic layer program as an example of the target program 108. This target program 1101 realizes a plurality of services.
  • classes C0 and C1 are programs that realize different services.
  • the method doPost of class C0 and the method doPost of class C1 are each called by a request from the user.
  • method C0.m0 state (d)
  • state (d) When method doPost of class C0 is called, method C0.m0 (statement (d)) is called.
  • method C0.m0 sentence (d)
  • an invalid value is stored in the variable v0 in the sentence (a).
  • sentence (b) the SQL operation character string s0 indicating the SQL update sentence is generated using the invalid value v0.
  • the SQL update process (update) is executed.
  • an invalid value is stored in the database to be processed by the target program 1101.
  • method C1.m1 state (h)
  • state (h) an SQL operation character string s1 indicating an SQL search sentence
  • an SQL search process query
  • this sentence (f) an invalid value stored in the database by the sentence (c) described above is extracted as a search result.
  • the extracted search result is output in the sentence (g).
  • the execution order of the method doPost of class CO and the method doPost of class C1 is unknown. Therefore, the AP flow analysis module 102 clarifies the execution order of the classes C0 and C1 by executing the processing shown in FIG. 16 based on the execution result 109.
  • FIG. 16 is a flowchart showing a control logic for synthesizing a plurality of services according to the second embodiment of this invention.
  • the AP flow analysis module 102 starts the process (2201).
  • the AP flow analysis module 102 stores a set of services to be analyzed in a variable L (hereinafter referred to as “analysis target service set L”) (2202).
  • a list of execution logs is stored in a variable M (hereinafter referred to as “execution log set M”), and a variable N for combining a plurality of services (hereinafter referred to as “analysis target service list N”). Is initialized with an empty list.
  • execution log list will be described with reference to FIG.
  • FIG. 17 is a diagram showing an example of an execution log list of a specific example of the second embodiment of the present invention.
  • the execution log list includes a time column 1201 for storing the time when the event was executed, and an event column 1202 for storing the contents of the event.
  • the AP flow analysis module 102 can confirm the order of calling a plurality of services by executing the following processes 2203 to 2207 using the execution log list.
  • the AP flow analysis module 102 determines whether or not the execution log set M is an empty set (2203). If the execution log set M is an empty set (YES in 2203), the process proceeds to process 2207, the calls of the execution log set M are combined (2207), and the process ends (2208).
  • the process 2203 if the execution log set M is not an empty set (NO in 2203), the process proceeds to the process 2204, and the AP flow analysis module 102 extracts one element (execution log) from the execution log set M and sets a variable. Store in m (2204). Thereafter, it is determined whether or not the element stored in the variable m is included in the analysis target service set L (2205).
  • the process returns to the process 2203 and the process is repeated for the next element.
  • the process proceeds to process 2206, and the AP flow analysis module 102 converts the element (execution log) stored in the variable m into the analysis target service. It adds to the list N (2206). Thereafter, the process returns to the process 2206 to repeat the process for the next element.
  • the AP flow analysis module 102 synthesizes and analyzes the call relationship with reference to the execution log (call log of each service of the multiple services) in the analysis of the multiple services.
  • a module other than the AP flow analysis module 102 may execute the process.
  • the AP flow analysis module 102 first stores a set of analysis target services (the method doPost of the class C0 and the method doPost of the class C1 in FIG. 15) in the analysis target service set L by the process 2202 of FIG. 16 (2202).
  • the execution log list (table shown in FIG. 17) is stored in the execution log set M, and the analysis target service list N is initialized as an empty list.
  • the AP flow analysis module 102 determines whether or not the execution log set M is an empty set (2203). Since the execution log set M is not an empty set (NO in 2203), the process proceeds to a process 2204, and the AP flow analysis module 102 extracts one element (for example, C0.doPost) from the execution log set M and sets it to the variable m. Store (2204). Thereafter, it is determined whether or not the element stored in the variable m is included in the analysis target service set L (2205).
  • one element for example, C0.doPost
  • the process proceeds to process 2206, and the AP flow analysis module 102 analyzes the element (C0.doPost) stored in the variable m. It is added to the target service list N (2206). Thereafter, the process returns to the process 2206 to repeat the process for the next element.
  • the AP flow analysis module 102 can obtain the analysis target service list N ([C0.doPost, C1.doPost]). Further, by combining the calls of the analysis target service list N by the process 2207, the provisional call program 2101 shown in FIG. 18 can be created.
  • FIG. 18 is a diagram showing a temporary call program 2101 as a specific example of the second embodiment of the present invention.
  • the temporary call program 2101 is a program in which each call process stored in the analysis target service list N is ordered.
  • the AP flow analysis module 102 can obtain the analysis result shown in FIG. 19 by executing the above analysis on the target program 1101 in FIG. 15 and the temporary call program 2101 in FIG.
  • FIG. 19 is a diagram illustrating an analysis result of the AP flow analysis module 102 for the target program 1101 according to the specific example of the second embodiment of the present invention.
  • the analysis result table 1403 shown in FIG. 19 includes a route column 1401 and a variable column 1402.
  • the path column 1401 is a flow of control of the target program 1101 in FIG. 15 and the temporary call program 2101 in FIG. 18 ((i) ⁇ (d) ⁇ (a) ⁇ (b) ⁇ (c) ⁇ (j) ⁇ (h ) ⁇ (e) ⁇ (f) ⁇ (g)).
  • the variable column 1402 includes a sentence column 1404 indicating each sentence (a) to (g) of the target program 1101, a variable name column 1405 indicating a variable in each sentence (a) to (g), and a value indicating the value of the variable.
  • Column 1406 indicates each sentence (a) to (g) of the target program 1101, a variable name column 1405 indicating a variable in each sentence (a) to (g), and a value indicating the value of the variable.
  • the cause of the malfunction or vulnerability of the program can be easily identified. Specifically, using the sentence (g) where the program malfunction occurs as the starting point for analysis, analyze the path to the sentence (a) that is the cause of the malfunction in the reverse direction and present it to the user Can do. As a result, the user can easily identify the cause of the malfunction based on the location of the program malfunction.
  • the analysis start point analysis module 104 sets a location designated by the user as an analysis start point (see FIG. 4).
  • a case will be described in which the analysis start point analysis module 104 sets, as an analysis start point, a location where exception processing has occurred during program execution.
  • FIG. 20 is a flowchart showing the control logic of the analysis start point analysis module 104 according to the third embodiment of the present invention.
  • the analysis start point analysis module 104 starts the process (501).
  • the analysis start point analysis module 104 stores a set of program execution logs in a variable T (hereinafter referred to as “execution log set T”) (502).
  • execution log set T The program execution log set will be described later with reference to FIG.
  • the analysis start point analysis module 104 determines whether or not the execution log set T is an empty set (503). If the execution log set T is an empty set (YES in 503), the process ends (507). On the other hand, if the execution log set T is not an empty set (NO in 503), the process proceeds to processing 504, and the analysis start point analysis module 104 extracts one element (execution log) from the execution log set T and stores it in the variable u. (504).
  • the process proceeds to process 506, the element stored in the variable u is set as the analysis start point (506), and the process ends ( 507). On the other hand, if the element stored in the variable u is not an entry indicating the occurrence of an exception (NO in 505), the process returns to the process 503 to repeat the process for the next element.
  • the analysis start point analysis module 104 sets a location where exception processing has occurred during execution of the program as an analysis start point.
  • FIG. 21 is a diagram illustrating an example of an execution log set as a specific example of the third exemplary embodiment of the present invention.
  • the execution log set includes an item number column 1701 indicating the order relationship and an event column 1702 indicating the content of the event corresponding to each item number in the item number column 1701.
  • the entry 1703 of “item number # 3” is a process indicating the occurrence of an exception.
  • the analysis start point analysis module 104 stores the execution log set shown in FIG. 21 in the execution log set T by the process 502 of FIG. 20 (502). Thereafter, it is determined whether or not the execution log set T is an empty set (503). Since the execution log set T is not an empty set (NO in 503), the process proceeds to processing 504, and the analysis start point analysis module 104 extracts one element ([# 1, call CO.doPost]) from the execution log set T. Store in variable u (504).
  • the process returns to the processing 503 and the next element ([# 2, call C1.doPost] ]).
  • the analysis start point analysis module 104 sets an element ([# 3, Exception in thread “main”) representing an exception occurrence as the analysis start point (506). Is finished (507).
  • the analysis start point analysis module 104 can set the entry 1703 of FIG. 21 as the analysis start point.
  • the target program 108 (see FIG. 1) corresponding to such an execution log is shown in FIG.
  • FIG. 22 is a diagram showing the target program 108 as a specific example of the third embodiment of the present invention.
  • a target program 1601 shown in FIG. 22 is a logic layer program as an example of the target program 108.
  • This target program 1601 realizes a single service (a service defined by class C2).
  • method C2.m2 (sentence (d)) is a process that indicates the occurrence of an exception. That is, the sentence (d) can be set as the analysis start point by the control logic shown in FIG.
  • the third embodiment of the present invention it is possible to automatically set a sentence (d), which is a location where a program malfunction occurs, as an analysis starting point. Thereafter, by the method described in the first embodiment, the path to the sentence that is the cause of the malfunction can be analyzed in the reverse direction and presented to the user. As a result, the user can easily identify the cause of the malfunction based on the location of the program malfunction.
  • the present invention relates to an application analysis method, and is particularly useful for specifying a cause of an illegal operation of a program in a Web application having a three-layer architecture.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

データベース操作文を含むプログラムを解析する方法であって、プログラム及びプログラムの実行結果に基づいて、プログラムの制御の流れ及びプログラムにおいて用いられるデータを解析する第1の手順と、第1の手順の解析結果及び複数のデータベース操作文の操作内容に応じて、複数のデータベース操作文の間の依存関係を解析する第2の手順と、第1の手順の解析結果及び第2の手順の解析結果に基づいて、プログラム中の不正に動作している所定の箇所を解析始点として、不正動作の伝播経路を、前記制御の流れに対して逆向きに解析する第3の手順と、第3の手順によって求められた伝播経路上のプログラム文を提示する第4の手順と、を含む。

Description

アプリケーションの解析方法、解析システム及び記録媒体
 本発明は、アプリケーションの解析方法に関し、特に、3層アーキテクチャのWebアプリケーションにおいて、プログラムの不正動作の要因を特定するための方法に関する。
 Webシステムにおけるアプリケーションの実装方式として、Web層、ロジック層、データベース層の3層でアプリケーションを構成する3層アーキテクチャが広く普及している。3層アーキテクチャでは、ユーザインターフェースの提示、入力に対するアクション、アクションに対応するデータ操作の一連の組をサービスとして実現する。一般に、各種のWebシステムは、このようなサービスを複数組み合わせることによって構成される。
 近年、プログラムの大規模化・複雑化が進んでおり、上記3層アーキテクチャのうちのロジック層のプログラムが複雑化している。一方、頻繁な仕様変更、工数削減、開発/保守の迅速化等の理由から、プログラム仕様が実際のプログラムと合致しないケースやプログラム仕様自体が作成されないケースが多々存在する。この結果、プログラムの開発においてデバッグや保守に要する時間が増加する事態が生じる。
 このような事態を回避するため、従来、プログラムのソースコードに基づいてプログラム仕様を理解し、その内容に応じて修正案を作成していた。また、プログラム仕様の理解を支援するために、プログラムの静的解析結果に基づいてプログラム内の手続きの呼出し関係(コールグラフ)を出力するソースコード解析ツール、手続きの動的な呼出し関係を出力するプログラムトレースツール、ソースレベルデバッガによるプログラムの対話的な実行トレース等の手段が用いられていた(非特許文献1参照)。
 一般に、プログラムの動作不良は、プログラム内の制御ロジックの誤りによって生じる制御の流れの誤り、又は、プログラム内の計算ロジックの誤りによって生じるデータ値の不正として顕在化する。そこで、前者については、ソースコード解析ツールやプログラムトレースツールを用いてプログラムの制御の流れを確認し、実際の動作が期待される動作と合致するか否かを確認することによって検証できる。一方、後者については、ソースコードデバッガを用いてプログラムの実行を各実行時点で停止させ、変数等の値を確認することによって検証できる。
 上記3層アーキテクチャによって実現されるサービスでは、ソースレベルデバッガを用いることによって、ロジック層のプログラムソースコードを対話的に確認することができる。一方、データベース層のプログラムの処理については、一般に、ロジック層のアプリケーションがデータベース層のアプリケーションに対して、データベース処理言語であるSQLで記述したコマンドを発行することによって実現できる。
 ここで、ロジック層のアプリケーションによって発行されるSQLコマンドは、ロジック層のプログラムにおいて、文字列データとして扱われ動的に構築される。そこで、ロジック層のプログラムの実行に伴ってどのようなSQL文が実行されるか及びロジック層のプログラムの実行過程を理解し、プログラムトレース又は対話的なデバッガを併用することによって、ロジック層の動作を確認する。これにより、3層アーキテクチャのプログラム全体の動作を確認することができる。
 このようにプログラムの動作を理解することによってプログラムの動作不良を検出する方法以外に、プログラムの静的解析によってプログラムの脆弱性を検出する方法がある(非特許文献2参照)。非特許文献2には、データフロー解析手法を用いることによって、ユーザ入力データ等の信頼性の低いデータから、データベース参照等セキュリティ上の問題を生じ得るAPIへのデータの流れが存在するか否かを検証する方法が開示されている。この方法によれば、データの流れの途中にセキュリティを保証する手続きが存在しない場合、セキュリティ上の脆弱性が存在すると推定できる。また、この方法によれば、プログラム仕様を詳細に理解する手間を必要とせず、短い時間でプログラムの問題点を検出することが可能である。
 その他、このようにセキュリティ上の脆弱性を検証するモジュールを、複数のプログラム言語に対して適用可能とする技術が存在する(特許文献1参照)。特許文献1には、Java、PL/SQLなど複数のプログラム言語を対象に汎用的なセキュリティ解析モジュールを提供する手段が開示されている。この技術によれば、複数のプログラム言語を一度統一的な内部表現に変換し、変換された内部表現に対して解析処理を適用することによって、汎用的なセキュリティ解析モジュールの実現を可能としている。
特表2008-502046号公報
M. Linton, The Evolution of Dbx, In Proceedings of the 1990 Summer USENIX Conference, 1990. V. Livshits, 他, Finding Security Vulnerabilities in Java Applications with Static Analysis, In Proceedings of the 14th Conference on USENIX Security Symposium, 2005. Aho他、Compilers: Principles, Techniques, & Tools, second edition, Addison-Wesley, 2006.
 しかしながら、上記従来技術では、3層アーキテクチャのWebアプリケーションにおいて、プログラムの動作不良や脆弱性等の原因箇所の特定が困難であるという課題があった。
 すなわち、対話的デバッガを用いてプログラム仕様を理解する方法では、プログラム仕様の理解度が低い場合、プログラム全体から動作不良の原因箇所を特定するのに長時間を要していた。特に、3層アーキテクチャのWebアプリケーションのようにデータアクセスを伴うプログラムでは、データアクセスコマンドがプログラムの実行によって動的に構成されることが、プログラム仕様の理解をさらに困難にしている。
 一方、プログラムの静的解析によってプログラムの脆弱性を検出する手法では、プログラムの脆弱性を検出できるものの、プログラムの脆弱性の原因箇所を特定することができなかった。特に、プログラムが複数のサービスから構成されるWebアプリケーションの場合、複数のサービス間の相互作用を考慮する必要がある。そのため、単一のサービス又はプログラムと比較して、プログラムの脆弱性の原因箇所を特定することがさらに困難であった。
 本発明は、上述した課題を考慮したものであって、3層アーキテクチャのアプリケーションにおいて、プログラムの動作不良や脆弱性等の原因箇所を容易に特定するアプリケーションの解析方法を提供することを目的とする。
 本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、プログラムを実行するプロセッサと、前記プロセッサによって実行されるプログラムを格納するメモリとを備えた解析システムが、データベース操作文を含むアプリケーションプログラムを解析する方法であって、前記プロセッサが、前記アプリケーションプログラム及び前記アプリケーションプログラムの実行結果に基づいて、前記アプリケーションプログラムの制御の流れ及び前記アプリケーションプログラムにおいて用いられるデータを解析する第1の手順と、前記プロセッサが、前記アプリケーションプログラムが複数のデータベース操作文を含む場合に、前記第1の手順の解析結果及び前記複数のデータベース操作文の操作内容に応じて、前記複数のデータベース操作文の間の依存関係を解析する第2の手順と、前記プロセッサが、前記第1の手順の解析結果及び前記第2の手順の解析結果に基づいて、前記アプリケーションプログラム中の不正に動作している所定の箇所を解析始点として、当該不正動作の伝播経路を、前記制御の流れに対して逆向きに解析する第3の手順と、前記プロセッサが、前記第3の手順によって求められた前記伝播経路上のプログラム文を提示する第4の手順と、を含むことを特徴とする。
 本発明によれば、3層アーキテクチャのアプリケーションにおいて、プログラムの動作不良や脆弱性等の原因箇所を容易に特定することができる。
本発明の第1の実施形態の計算機システムの概略構成を示す図である。 本発明の第1の実施形態の解析システムの構成を示す図である。 本発明の第1の実施形態のSQLフロー解析モジュールの制御ロジックを示すフローチャートである。 本発明の第1の実施形態の2つのSQL操作文の間の依存関係の解析処理の制御ロジックを示すフローチャートである。 本発明の第1の実施形態の解析始点解析モジュールの制御ロジックを示すフローチャートである。 本発明の第1の実施形態の不正伝播パス解析モジュールの制御ロジックを示すフローチャートである。 本発明の第1の実施形態の起点絞り込みモジュールの制御ロジックを示すフローチャートである。 本発明の第1の実施形態の経路マッピングモジュールの制御ロジックを示すフローチャートである。 本発明の第1の実施形態の具体例のユーザ端末におけるユーザインターフェースの一例である。 本発明の第1の実施形態の具体例の対象プログラムを示す図である。 本発明の第1の実施形態の具体例の対象プログラムに対するAPフロー解析モジュールの解析結果を示す図である。 本発明の第1の実施形態の具体例のSQLフロー解析モジュールが2つのSQL操作文の依存関係を解析するために用いるテーブルの一例を示す図である。 本発明の第1の実施形態の具体例の不正伝播パス解析モジュールによって得られるパス集合を示す図である。 本発明の第1の実施形態の具体例の非提示エッジ集合の一例を示す図である。 本発明の第1の実施形態の具体例の提示パスの表示例を示す図である。 本発明の第2の実施形態の具体例の対象プログラムを示す図である。 本発明の第2の実施形態の複数サービスを合成する制御ロジックを示すフローチャートである。 本発明の第2の実施形態の具体例の実行ログリストの一例を示す図である。 本発明の第2の実施形態の具体例の仮呼出しプログラムを示す図である。 本発明の第2の実施形態の具体例の対象プログラムに対するAPフロー解析モジュールの解析結果を示す図である。 本発明の第3の実施形態の解析始点解析モジュールの制御ロジックを示すフローチャートである。 本発明の第3の実施形態の具体例の実行ログ集合の一例を示す図である。 本発明の第3の実施形態の具体例の対象プログラムを示す図である。
 以下、本発明の実施形態について、図面を参照して説明する。
 (第1の実施形態)
 まず本発明の第1の実施形態について説明する。
 図1Aは、本発明の第1の実施形態の計算機システム1の概略構成を示す図である。図1Bは、本発明の第1の実施形態の解析システム101の構成を示す図である。
 図1Aに示すように、解析システム101は、APフロー解析モジュール102、SQLフロー解析モジュール103、解析始点解析モジュール104、不正伝播パス解析モジュール105、起点絞り込みモジュール106、経路マッピングモジュール107、SQL依存表(テーブル)113を備える。
 また図1Bに示すように、解析システム101は、それぞれバス30で相互に接続されたメモリ装置21、演算処理装置22、インターフェース装置23、補助記憶装置25、入力装置24、ドライブ装置26を備えるコンピュータ装置である。メモリ装置21は、解析システム101の起動時に補助記憶装置25に記憶されたプログラム(図1Aの各モジュール102~107の処理を実行するプログラム)等のプログラムを読み出して記憶するRAM(Random Access Memory)等の記憶装置である。このメモリ装置21は、プログラムの実行に必要なファイル、各モジュール102~107の処理結果のデータ等も記憶する。演算処理装置22は、メモリ装置21に格納されたプログラムを実行するCPU(Central Processing Unit)等の演算処理装置である。インターフェース装置23は、外部ネットワーク等に接続するためのインターフェース装置である。入力装置24は、ユーザインターフェースを提供する入力装置(例えばキーボード、マウス)である。補助記憶装置25は、プログラムやファイル、データ等を記憶するHDD(Hard Disk Drive)等の記憶装置である。ドライブ装置26は、記録媒体27に記録されたプログラムを読み出す装置である。ドライブ装置26によって読み出されたプログラムは、補助記憶装置25にインストールされる。記録媒体27は、上記のプログラム等を記録したUSB(Universal Serial Bus)メモリ、SDメモリカード等の記録媒体である。
 図1Aに戻り、解析システム101は、不図示のネットワークを介して接続されたユーザ端末112に対して、解析結果111を出力(提示)する。対象プログラム108は、解析システム101の解析対象のプログラムである。この対象プログラム108は、ユーザ端末110の指示に基づいて動作し、実行ログ等の実行結果109を出力する。なお、対象プログラム108は、解析システム101以外のシステム上で動作してもよい。
 APフロー解析モジュール102は、対象プログラム108及び実行結果109を入力し、これら対象プログラム108及び実行結果109に基づいて、対象プログラム108の制御の流れ(制御フロー)と、対象プログラム108の各実行時点における変数の値とを解析する。このAPフロー解析モジュール102は、例えば非特許文献3に開示された技術によって実現可能である。
 SQLフロー解析モジュール103は、APフロー解析モジュール102による解析結果及び実行結果109に基づいて、対象プログラム108中に記述された各SQL操作文(SQL実行文)によって実行されるSQLコマンドと各SQLコマンドの実行順序の関係とを解析する。このSQLフロー解析モジュール103は、解析の結果得られる各SQLコマンドの実行順序の関係を示す情報を、SQL依存表113に格納する。
 図2は、本発明の第1の実施形態のSQLフロー解析モジュール103の制御ロジックを示すフローチャートである。
 まず処理201において、SQLフロー解析モジュール103は処理を開始する(201)。次に処理202において、SQLフロー解析モジュール103は、対象プログラム108中の各文S(処理ステップ)における変数Nと変数Nの取り得る値Vの集合{V}を、集合を表す変数E(以下、「集合E」という。)に格納する(202)。なお、集合Eの要素は、変数Nから値Vの集合{V}へのマッピング(N→{V})を各文Sからマッピングしたもの(S→{N→{V}})として表現される。また処理202では、対象プログラム108中のSQL操作文の集合を、集合を表す変数D、D'(以下、「集合D、D'」という。)に格納し、集合を表す変数S(以下、「集合S」という。)を空集合とすることによって初期化する。集合D、D'に格納されるSQL操作文の集合は、各種プログラム言語やライブラリで定義されているSQL操作の手続きの呼出しを求めることによって得られる。
 その後、SQLフロー解析モジュール103は、集合D'が空集合か否か判定する(203)。集合D'が空集合でない場合(203でNO)、処理204に進んで、集合D'から1つの要素(SQL操作文)を取り出して変数d'に格納する(204)。また処理204では、変数d'に格納されたSQL操作文におけるSQL操作文字列を、変数sに格納する。例えば、SQL操作文が「stmt.executeQuery(sql)」である場合、SQL操作文字列は変数sqlの値(例えば"select * from T")である。なお、SQL操作文字列は、APフロー解析モジュール102によって求められた文d'における変数Nと変数Nの取り得る値Vの集合{V}のマッピング関係を参照することによって得られる。その後、変数d'から変数sへのマッピング({d'→s})を、集合Sに加える。
 一方、処理203において、集合D'が空集合である場合(203でYES)、処理205に進む。処理205に進むと、SQLフロー解析モジュール103は、集合S(各SQL操作文からSQL操作文字列へのマッピングの集合)を、集合を表す変数S'に格納する(205)。
 以上に示す処理201~205により、SQLフロー解析モジュール103は、対象プログラム108中の各SQL操作文からSQL操作文字列へのマッピングの集合S、S'を求める。
 その後、SQLフロー解析モジュール103は、集合S'が空集合か否か判定する(206)。集合S'が空集合である場合(206でYES)、解析すべきSQL操作文が存在しないので、処理を終了する(213)。一方、集合S'が空集合でない場合(206でNO)、SQLフロー解析モジュール103は、集合S'から1つの要素(SQL操作文からSQL操作文字列へのマッピング)を取り出して変数s'に格納する(207)。また、集合Sから変数s'に格納された要素を除いた集合(S-{s'})を、集合を表す変数S"(以下、「集合S"」という。)に格納する。
 その後、SQLフロー解析モジュール103は、集合S"が空集合か否か判定する(208)。集合S"が空集合である場合(208でYES)、処理206に戻る。一方、集合S"が空集合でない場合(208でNO)、SQLフロー解析モジュール103は、集合S"から1つの要素を取り出して変数s"に格納する(209)。その後、変数s'に格納された要素と変数s"に格納された要素との間の依存関係を解析する(210)。処理210の処理については図3を用いて後述する。
 その後、SQLフロー解析モジュール103は、変数s'に格納された要素と変数s"に格納された要素との間の依存関係の有無を判定する(211)。依存関係がない場合(211でNO)、処理208に戻って、集合S"に格納された別の要素との間で依存関係を解析する。一方、依存関係がある場合(211でYES)、SQLフロー解析モジュール103は、SQL依存表113に変数s'と変数s"との組を登録し(212)、処理208に戻る。
 以上の処理206~212により、SQLフロー解析モジュール103は、各SQLコマンドの実行順序の関係を解析することができる。
 なお、前述したAPフロー解析モジュール102による解析の結果得られる変数の取り得る値は、解析精度の関係から不確定となる可能性がある。この場合、SQLフロー解析モジュール103は、対象プログラム108の実行結果109を用いることによって解析の精度を向上することも可能である。
 図3は、本発明の第1の実施形態の2つのSQL操作文の間の依存関係の解析処理の制御ロジックを示すフローチャートである。ここでは、図2の処理210の処理を詳細に説明する。
 まず処理301において、SQLフロー解析モジュール103は、処理を開始する(301)。次に処理302において、SQLフロー解析モジュール103は、依存元のSQL操作文、依存元のSQL操作文字列、依存先のSQL操作文、依存先のSQL操作文字列を、それぞれ変数f_s、f_c、t_s、t_cに格納する(302)。ここで、依存元のSQL操作文及びSQL操作文字列は、変数s'(図2の処理207参照)に格納された要素に基づいて求められる。一方、依存先のSQL操作文及びSQL操作文字列は、変数s"(図2の処理209参照)に格納された要素に基づいて求められる。
 その後、SQLフロー解析モジュール103は、変数f_sに格納された依存元のSQL操作文から、変数t_sに格納された依存先のSQL操作文に対して制御が到達可能か否かを判定する(303)。ここで、制御の到達可否は、APフロー解析モジュール102による既知のコンパイラ等における制御フロー解析技術によって解析可能である。
 処理303において、SQLフロー解析モジュール103は、依存元のSQL操作文による処理と依存先のSQL操作文による処理との実行順序を判定している。すなわち、依存元のSQL操作文が依存先のSQL操作文よりも前に実行される可能性のある処理である場合、制御が到達可能であると判定される。一方、依存元のSQL操作文が依存先のSQL操作文よりも前に実行される可能性のない処理である場合、制御は到達不能であると判定される。
 処理303において、制御が到達不能である場合(303でNO)、SQLフロー解析モジュール103は、依存関係が無いと判定して(305)、処理を終了する(307)。一方、処理303において、制御が到達可能である場合(303でYES)、処理304に進んで、SQLフロー解析モジュール103は、変数f_cに格納されたSQL操作文字列の操作が、変数t_cに格納されたSQL操作文字列の実行結果に影響を与えるか否かを判定する(304)。
 処理304において、SQLフロー解析モジュール103は、前者のSQL操作文字列の操作内容が、後者のSQL操作文字列の操作内容に影響を与えるか否かを判定している。すなわち、前者のSQL操作文字列の操作内容が"データベースの更新"で、後者のSQL操作文字列の操作内容が"データベースの検索"である場合、データベースの更新結果が検索結果に影響を与えるので、影響を与えると判定される。一方、前者のSQL操作文字列の操作内容が"第1の条件に基づくデータベースの検索"で、後者のSQL操作文字列の操作内容が"第2の条件に基づくデータベースの検索"である場合、各々の検索は独立しているので、影響を与えないと判定される。
 処理304において、影響を与えない場合(304でNO)、SQLフロー解析モジュール103は、依存関係が無いと判定して(305)、処理を終了する(307)。一方、処理304において、影響を与える場合(304でYES)、SQLフロー解析モジュール103は、依存関係が有ると判定して(306)、処理を終了する(307)。
 以上の処理により、SQLフロー解析モジュール103は、2つのSQL操作文の間の依存関係を解析することができる。
 図4は、本発明の第1の実施形態の解析始点解析モジュール104の制御ロジックを示すフローチャートである。
 まず処理401において、解析始点解析モジュール104は、処理を開始する(401)。次に処理402において、解析始点解析モジュール104は、ユーザによって指示された箇所を解析始点(解析の開始点)として設定する(402)。この解析始点の設定は、ユーザがプログラム中で不正な値を確認した箇所(文)を指摘する方式や、ユーザがディスプレイ上に表示された結果のうち不正値な値を持つ箇所を指示する方式によって実現される。その後、処理を終了する(403)。
 以上の処理により、解析始点解析モジュール104は、ユーザによって指示された箇所を解析始点として設定することができる。
 図5は、本発明の第1の実施形態の不正伝播パス解析モジュール105の制御ロジックを示すフローチャートである。不正伝播パス解析モジュール105は、解析始点解析モジュール104によって設定された解析始点を始点として、不正な計算結果の伝播経路(パス)を解析する。
 まず処理601において、不正伝播パス解析モジュール105は、処理を開始する(601)。次に処理602において、不正伝播パス解析モジュール105は、解析始点解析モジュール104によって設定された解析始点の文を変数oに格納し、パスの集合を表す変数P(以下、「パス集合P」という。)を空集合とすることによって初期化する(602)。
 その後、不正伝播パス解析モジュール105は、変数oに格納された解析始点の文において参照される変数及びメモリロケーションの集合を、参照の集合を表す変数R(以下、「参照集合R」という。)に格納する(603)。
 その後、不正伝播パス解析モジュール105は、参照集合Rが空集合か否か判定する(604)。参照集合Rが空集合である場合(604でYES)、処理611に進んで、パス集合Pを不正伝播経路のパス集合として設定し(611)、処理を終了する(612)。
 一方、処理604において、参照集合Rが空集合でない場合(604でNO)、処理605に進んで、不正伝播パス解析モジュール105は、参照集合Rから1つの要素を取り出して変数rに格納する(605)。また処理605では、変数rの定義文の集合を、定義文の集合を表す変数Q(以下、「定義文集合Q」という。)に格納する。ここで、変数rの定義文とは、変数rが保持する値を計算する文を言う。定義文の集合を求める処理は、APフロー解析モジュール102による既知のコンパイラ等における制御フロー解析技術によって実現可能である。
 その後、不正伝播パス解析モジュール105は、定義文集合Qが空集合か否か判定する(606)。定義文集合Qが空集合である場合(606でYES)、処理611に進んで、パス集合Pを不正伝播経路のパス集合として設定し(611)、処理を終了する(612)。
 一方、処理606において、定義文集合Qが空集合でない場合(606でNO)、処理607に進んで、不正伝播パス解析モジュール105は、定義文集合Qから1つの要素(定義文)を取り出して変数qに格納する(607)。その後、図5に示す一連の不正伝播パス解析の制御ロジックを再帰的に呼び出すことによって、変数qに格納された要素を解析始点とするパス集合を求め、求められたパス集合を、パス集合を表す変数P'(以下、「パス集合P'」という。)に格納する(608)。
 処理609に進むと、不正伝播パス解析モジュール105は、パス集合P'が空集合か否か判定する(609)。パス集合P'が空集合である場合(609でYES)、処理606に戻る。一方、パス集合P'が空集合でない場合(609でNO)、処理610に進んで、不正伝播パス解析モジュール105は、パス集合P'から1つの要素(パス)を取り出して変数p'に格納する(610)。また処理610では、変数p'に格納されたパスに、同パスの最後から変数oに格納された解析始点への遷移を加えたパス(p'⇒o)を集合Pに加える。すなわち、p'に格納されたパスがn0⇒…⇒nmであるとき、新たなパスn0⇒…⇒nm⇒oを構成し、これを集合Pに加える。その後、処理609に戻る。
 以上の処理により、不正伝播パス解析モジュール105は、解析始点解析モジュール104によって設定された解析始点を始点として、データの伝播経路を、対象プログラム108の制御の流れに対して逆向きに解析する。これにより、不正な計算結果の原因候補となる文の実行経路を表すパス集合を求めることができる。
 図6は、本発明の第1の実施形態の起点絞り込みモジュール106の制御ロジックを示すフローチャートである。起点絞り込みモジュール106は、不正伝播パス解析モジュール105によって求められた伝播経路(パス集合)から、プログラムの動作不良の原因となる可能性が低い又は原因ではない箇所を除くことによって、起点(原因箇所)を絞り込む。
 まず処理701において、起点絞り込みモジュール106は、処理を開始する(701)。次に処理702において、起点絞り込みモジュール106は、不正伝播パス解析モジュール105によって求められた処理対象のパス(伝播経路)を変数wに格納する(702)。また処理702では、変数wに格納されたパス上を遷移するエッジ(所定の文から次に実行される文への遷移)の集合を変数X、X'に格納し(以下、「遷移エッジ集合X、X'」という。)、ユーザ等によって予め設定された非提示エッジ集合(ユーザに対して提示すべきでないエッジの集合)を変数Yに格納する(以下、「非提示エッジ集合Y」という。)。
 その後、起点絞り込みモジュール106は、遷移エッジ集合Xが空集合か否か判定する(703)。遷移エッジ集合Xが空集合である場合(703でYES)、処理707に進んで、遷移エッジ集合X'を結合したパスを提示パス(ユーザに対して提示すべきパス)として設定し(707)、処理を終了する(708)。
 一方、処理703において、遷移エッジ集合Xが空集合でない場合(703でNO)、処理704に進んで、起点絞り込みモジュール106は、遷移エッジ集合Xから1つの要素(エッジ)を取り出して変数xに格納する(704)。その後、変数xに格納されたエッジが、非提示エッジ集合Yに含まれるか否か判定する(705)。
 非提示エッジ集合Yに含まれない場合(705でNO)、処理703に戻って次のエッジについて処理を繰り返す。一方、処理705において、非提示エッジ集合Yに含まれる場合(705でYES)、処理706に進んで、起点絞り込みモジュール106は、集合X'から変数xに格納されたエッジを除いた集合(X'-{x})を、集合X'とする(706)。その後、処理703に戻って次のエッジについて処理を繰り返す。
 以上の処理により、起点絞り込みモジュール106は、遷移エッジ集合Xの各要素(エッジ)について、当該要素が非提示エッジ集合Yに含まれるか否かを判定し、非提示エッジ集合Yに含まれない要素を結合したパスを提示パスとして設定する。これにより、処理対象のパスから非提示エッジ集合に含まれるエッジを除くことができる。
 図7は、本発明の第1の実施形態の経路マッピングモジュール107の制御ロジックを示すフローチャートである。経路マッピングモジュール107は、起点絞り込みモジュール106によって求められた提示パスをユーザに提示する処理を実行する。
 まず処理801において、経路マッピングモジュール107は、処理を開始する(801)。次に処理802において、経路マッピングモジュール107は、起点絞り込みモジュール106によって求められた提示パスを変数gに格納する(802)。また処理802では、変数gに格納された提示パスのエッジ集合を変数Gに格納する(以下、「エッジ集合G」という。)。
 その後、経路マッピングモジュール107は、エッジ集合Gが空集合か否か判定する(803)。エッジ集合Gが空集合である場合(803でYES)、処理を終了する(805)。一方、処理803において、エッジ集合Gが空集合でない場合(803でNO)、処理804に進んで、経路マッピングモジュール107は、エッジ集合Gから1つの要素(エッジ)を取り出して遷移元の文を変数j、遷移先の文を変数kにそれぞれ格納する(804)。また処理804では、遷移元の文から遷移先の文への遷移を経路として提示する。その後、処理803に戻って処理を繰り返す。
 以上の処理により、経路マッピングモジュール107は、起点絞り込みモジュール106によって求められた提示パスをユーザに提示する。
 以下、本発明の第1の実施形態の具体例を説明する。
 図8は、本発明の第1の実施形態の具体例のユーザ端末110におけるユーザインターフェースの一例である。図8に示すWebインターフェース901は、ユーザ端末110のディスプレイに表示される。このWebインターフェース901は、図1の実行結果109に基づいて作成される。
 このWebインターフェース901は、検索番号を入力するための検索番号入力フォーム902、入力された検索番号を照会するための照会ボタン903、入力された検索番号に対する照会の結果として得られる検索結果904を含む。
 図8に示す例では、「属性#1」の検索結果がnullになっている。すなわち、「属性#1」の検索結果がnullのような不正値となることがプログラムの動作不良を示すものとする。
 図9は、本発明の第1の実施形態の具体例の対象プログラム108を示す図である。図9に示す対象プログラム1001は、対象プログラム108の一例としてのロジック層のプログラムである。この対象プログラム1001は、単一のサービスを実現する。
 図9に示す例において、メソッドdoPostは、ユーザアクションによって呼び出される。メソッドdoPostが呼び出されると、メソッドdoPost内のメソッドC0.m0(文(g))、メソッドCO.m1(文(h))が順に呼び出される。
 メソッドC0.m0(文(g))が呼び出されると、まず文(a)において、変数v0に不正値が格納される。次に文(b)において、この不正値v0を用いてSQL更新文を示すSQL操作文字列s0が生成される。その後文(c)において、SQL更新処理(update)が実行される。その結果、対象プログラム1001の処理対象のデータベース内に不正値が格納される。
 一方、メソッドC0.m1(文(h))が呼び出されると、まず文(d)において、SQL検索文を示すSQL操作文字列s1が生成される。次に文(e)において、SQL検索処理(query)が実行される。この文(e)では、前述した文(c)によってデータベース内に格納された不正値が検索結果として抽出される。その後文(f)において、抽出された検索結果(不正値)が出力される。すなわち、図8の検索結果904は、この文(f)の実行に伴い出力された不正値の表示例である。
 図10は、本発明の第1の実施形態の具体例の対象プログラム1001に対するAPフロー解析モジュール102の解析結果を示す図である。
 図10に示す解析結果テーブル1303は、実行経路欄1301と、変数欄1302とを含む。実行経路欄1301は、図9の対象プログラム1001の制御の流れ((g)→(a)→(b)→(c)→(h)→(d)→(e)→(f))を示す。変数欄1302は、対象プログラム1001の各文(a)~(f)を示す文欄1304と、各文(a)~(f)における変数を示す変数名欄1305と、変数の値を示す値欄1306とを含む。
 図11は、本発明の第1の実施形態の具体例のSQLフロー解析モジュール103が2つのSQL操作文の依存関係を解析するために用いるテーブル1501の一例を示す図である。
 図11に示すテーブル1501は、図3のステップ304において、SQLフロー解析モジュール103が2つのSQL操作文の依存関係を解析する際に用いられる。
 ここでは、解析対象の2つのSQL操作文を、実行順番に応じて前操作と後操作とよぶ。そうすると、前操作が更新(update)であって前操作と後操作の処理対象のデータベースが同一である場合、後操作は前操作の結果に依存する、すなわち前操作と後操作との間に依存関係が有る。一方、前操作が検索(select)である場合、前操作と後操作との間に依存関係が無い。
 以上に示す前提の元、SQLフロー解析モジュール103が図9の対象プログラム1001に基づいて、図2の制御ロジックを実行する動作を説明する。なお、図9の対象プログラム1001中のSQL操作文(c)、(e)に対応するSQL操作文字列は、それぞれ"update T set item=<不正値>"、 "select * from T …"である。
 SQLフロー解析モジュール103は、図2の処理202~204により、S={(c)→"update T set item=<不正値>"、(e)→"select * from T …"}を取得する。その後、処理210により、(c)⇒(e)及び(e)⇒(c)の各組の依存関係を解析する。ここで、(e)⇒(c)には制御が到達不能であるため(図3の処理303でNO)、(e)⇒(c)には依存関係が無い(305)。一方、(c)⇒(e)には制御が到達可能であり(図3の処理303でYES)、前操作(c)が更新(update)、後操作(e)が検索(select)であるため(304でYES)、(c)⇒(e)には依存関係が有る(306)。その結果、SQLフロー解析モジュール103は、(c)⇒(e)に依存関係が有ると判定する。
 解析始点解析モジュール104は、図8の表示画面上でユーザによって「属性#1」の検索結果が不正値であることを指示されると、指示された箇所(すなわち、図9の文(f))を解析始点として設定する。
 不正伝播パス解析モジュール105は、図5の制御ロジックを実行することによって、解析始点解析モジュール104によって設定された図9の文(f)を解析始点として、不正な計算結果の伝播経路を解析する。
 不正伝播パス解析モジュール105は、まず図5の処理602により、解析始点の文(f)を変数oに格納し、パス集合Pを空集合とすることによって初期化する(602)。その後、変数oに格納された解析始点の文(f)において参照される変数v1を、参照集合Rに格納する(603)。その後、不正伝播パス解析モジュール105は、参照集合Rが空集合か否か判定する(604)。参照集合Rは空集合ではないので(604でNO)、処理605に進んで、参照集合Rから1つの要素(変数v1)を取り出して変数rに格納する(605)。また処理605では、変数rに格納された変数v1の定義文である文(e)を、定義文集合Qに格納する。その後、不正伝播パス解析モジュール105は、定義文集合Qが空集合か否か判定する(606)。定義文集合Qは空集合ではないので(606でNO)、処理607に進んで、不正伝播パス解析モジュール105は、定義文集合Qから1つの要素(文(e))を取り出して変数qに格納する(607)。その後、図5に示す一連の不正伝播パス解析の制御ロジックを再帰的に呼出すことによって、変数qに格納された文(e)を解析始点とするパス集合を求め、求められたパス集合をパス集合P'に格納する(608)。その後、不正伝播パス解析モジュール105は、パス集合P'が空集合か否か判定する(609)。パス集合P'は空集合ではないので(609でNO)、処理610に進んで、パス集合P'から1つの要素(パス)を取り出して変数p'に格納する(610)。また処理610では、変数p'に格納されたパスに、同パスの最後(文(e))から変数oに格納された解析始点(文(f))への遷移を加えたパス((e)⇒(f))を集合Pに加える。その後、処理609に戻るが,パス集合P'は空集合であるので(609でYES)、処理606に戻る。また、定義文集合Qは空集合であるので(606でYES)、処理611に進んで、パス集合Pを不正伝播経路のパス集合として設定し(611)、処理を終了する(612)。
 以上の処理により、不正伝播パス解析モジュール105は、解析始点解析モジュール104によって設定された解析始点(文(f))を始点として、データの伝播経路を、対象プログラム108の制御の流れに対して逆向きに解析する。これにより、不正な計算結果の原因候補となる文の実行経路を表すパス集合を求めることができる。なお、解析結果として得られるデータの伝播経路を、図12に示す。
 図12は、本発明の第1の実施形態の具体例の不正伝播パス解析モジュール105によって得られるパス集合を示す図である。図12に示すように、文(f)を解析始点1801とするパス集合1804として、{(h)⇒(d)⇒(e)⇒(f)、(g)⇒(b)⇒(c)⇒(e)⇒(f)、(a)⇒(b)⇒(c)⇒(e)⇒(f)}が求められる。
 起点絞り込みモジュール106は、不正伝播パス解析モジュール105によって求められた伝播経路から、プログラムの動作不良の原因となる可能性が低い又は原因ではない箇所を除くことによって、起点(原因箇所)を絞り込む。
 起点絞り込みモジュール106は、まず図6の処理702により、処理対象のパス(例えば(h)⇒(d)⇒(e)⇒(f))を変数wに格納する(702)。また処理702では、変数wに格納されたパス上を遷移するエッジの集合({(h)⇒(d)、(d)⇒(e)、(e)⇒(f)})を遷移エッジ集合X、X'に格納し、非提示エッジ集合を非提示エッジ集合Yに格納する。
 図13は、本発明の第1の実施形態の具体例の非提示エッジ集合の一例を示す図である。図13に示すように、非提示エッジ集合として、各項番1901に対応するエッジ1902が登録されている。図13に示す例では、({(h)⇒(d)、(d)⇒(e)})が非提示エッジ集合である。
 その後、起点絞り込みモジュール106は、遷移エッジ集合Xが空集合か否か判定する(703)。遷移エッジ集合Xは空集合ではないので(703でNO)、処理704に進んで、起点絞り込みモジュール106は、遷移エッジ集合Xから1つの要素(例えば(h)⇒(d))を取り出して変数xに格納する(704)。その後、変数xに格納されたエッジ((h)⇒(d))が、非提示エッジ集合Yに含まれるか否か判定する(705)。エッジ((h)⇒(d))は非提示エッジ集合Yに含まれるので(705でYES)、処理706に進んで、起点絞り込みモジュール106は、遷移エッジ集合X({(h)⇒(d)、(d)⇒(e)、(e)⇒(f)})から、変数xに格納されたエッジ((h)⇒(d))を除いた集合を、遷移エッジ集合X'とする(706)。その後、処理703に戻って次のエッジについて処理を繰り返す。
 処理703~706を繰り返すと、遷移エッジ集合Xには((e)⇒(f))のみが格納される。その後、処理703に戻るが、遷移エッジ集合Xは空集合であるので(703でYES)、処理707に進む。処理707に進むと、起点絞り込みモジュール106は、遷移エッジ集合X'を結合したパス((e)⇒(f))を提示パスとして設定し(707)、処理を終了する。
 起点絞り込みモジュール106は、処理対象のパス{(g)⇒(b)⇒(c)⇒(e)⇒(f)、(a)⇒(b)⇒(c)⇒(e)⇒(f)}に対して同様の解析処理を実行する。これらの処理対象のパスは、非提示エッジ集合Y(図13参照)に登録されたエッジを含まないため、処理対象のパスの全体が提示パスとして設定される。
 以上の処理により、起点絞り込みモジュール106は、処理対象のパス{(h)⇒(d)⇒(e)⇒(f)、(g)⇒(b)⇒(c)⇒(e)⇒(f)、(a)⇒(b)⇒(c)⇒(e)⇒(f)}から、非提示エッジ集合Yに含まれるエッジ({(h)⇒(d)、(d)⇒(e)})を除いた提示パス{(e)⇒(f)、(g)⇒(b)⇒(c)⇒(e)⇒(f)、(a)⇒(b)⇒(c)⇒(e)⇒(f)}を設定することができる。つまり、処理対象のパスから非提示エッジ集合に含まれるエッジを除くことによって、ユーザに提示するデータ候補を限定することができる。
 経路マッピングモジュール107は、起点絞り込みモジュール106によって求められた提示パスをユーザに提示する処理を実行する。
 経路マッピングモジュール107は、まず図7の処理802により、起点絞り込みモジュール106によって求められた提示パスのうち処理対象のパス(例えば(g)⇒(b)⇒(c)⇒(e)⇒(f))を、変数gに格納する(802)。また処理802では、変数gに格納された提示パスのエッジ集合((g)⇒(b)、(b)⇒(c)、(c)⇒(e)、(e)⇒(f))をエッジ集合Gに格納する。
 その後、経路マッピングモジュール107は、エッジ集合Gが空集合か否か判定する(803)。エッジ集合Gは空集合ではないので(803でNO)、処理804に進んで、経路マッピングモジュール107は、エッジ集合Gから1つの要素(例えば、(g)⇒(b))を取り出して遷移元の文(g)を変数j、遷移先の文(b)を変数kにそれぞれ格納する(804)。また処理804では、遷移元の文(g)から遷移先の文(b)への遷移を経路として提示する。その後、処理803に戻って次の要素について処理を繰り返す。
 経路マッピングモジュール107は、処理対象のパス{(e)⇒(f)、(a)⇒(b)⇒(c)⇒(e)⇒(f)}に対して同様のマッピング処理を実行する。
 以上の処理により、経路マッピングモジュール107は、起点絞り込みモジュール106によって求められた提示パスをユーザに提示する。
 図14は、本発明の第1の実施形態の具体例の提示パス2001の表示例を示す図である。図14に示すように、破線の提示パス2001が対象プログラム1001と対応付けて提示される。
 以上説明してきた本発明の第1の実施形態によれば、3層アーキテクチャのWebアプリケーションにおいて、プログラムの動作不良や脆弱性等の原因箇所を容易に特定することができる。具体的には、プログラムの動作不良の発生箇所である文(f)を解析起点として、当該動作不良の原因箇所である文(a)までのパスを逆方向に解析し、図14のようにユーザに提示することができる。これにより、ユーザはプログラムの動作不良の発生箇所に基づいて当該動作不良の原因箇所を容易に特定可能となる。
 (第2の実施形態)
 次に本発明の第2の実施形態について説明する。
 前述の第1の実施形態では、対象プログラム108(図1参照)が図9の対象プログラム1001のように単一のサービスから構成される場合について説明した。ここでは、対象プログラム108が図15の対象プログラム1101のように複数のサービスから構成される場合について説明する。なお、第2の実施形態の解析システム101の構成、解析システム101の各モジュール102~107の動作のうち、前述の第1の実施形態と同様である構成、動作についての説明は、適宜省略する。
 図15は、本発明の第2の実施形態の具体例の対象プログラム108を示す図である。図15に示す対象プログラム1101は、対象プログラム108の一例としてのロジック層のプログラムである。この対象プログラム1101は、複数のサービスを実現する。
 図15に示す例において、クラスC0、C1は、それぞれ異なるサービスを実現するプログラムである。クラスC0のメソッドdoPost、クラスC1のメソッドdoPostは、それぞれユーザからのリクエストによって呼び出される。
 クラスC0のメソッドdoPostが呼び出されると、メソッドC0.m0(文(d))が呼び出される。メソッドC0.m0(文(d))が呼び出されると、まず文(a)において、変数v0に不正値が格納される。次に文(b)において、この不正値v0を用いてSQL更新文を示すSQL操作文字列s0が生成される。その後文(c)において、SQL更新処理(update)が実行される。その結果、対象プログラム1101の処理対象のデータベース内に不正値が格納される。
 一方、クラスC1のメソッドdoPostが呼び出されると、メソッドC1.m1(文(h))が呼び出される。メソッドC1.m0(文(h))が呼び出されると、まず文(e)において、SQL検索文を示すSQL操作文字列s1が生成される。次に文(f)において、SQL検索処理(query)が実行される。この文(f)では、前述した文(c)によってデータベース内に格納された不正値が検索結果として抽出される。その後文(g)において、抽出された検索結果(不正値)が出力される。
 このようなプログラムでは、クラスCOのメソッドdoPost及びクラスC1のメソッドdoPostの実行順序が不明である。そこで、APフロー解析モジュール102は、実行結果109に基づいて図16に示す処理を実行することにより、クラスC0、C1の実行順序を明確にする。
 図16は、本発明の第2の実施形態の複数サービスを合成する制御ロジックを示すフローチャートである。
 まず処理2201において、APフロー解析モジュール102は、処理を開始する(2201)。次に処理2202において、APフロー解析モジュール102は、解析対象のサービスの集合を変数L(以下、「解析対象サービス集合L」という。)に格納する(2202)。また処理2202では、実行ログのリストを変数Mに格納し(以下、「実行ログ集合M」という。)、複数サービスを合成するための変数N(以下、「解析対象サービスリストN」という。)を空リストとすることによって初期化する。実行ログリストについて図17を用いて説明する。
 図17は、本発明の第2の実施形態の具体例の実行ログリストの一例を示す図である。実行ログリストは、イベントが実行された時刻を格納する時刻欄1201、イベントの内容を格納するイベント欄1202を含む。APフロー解析モジュール102は、この実行ログのリストを用いて、以下に示す処理2203~2207を実行することによって、複数のサービスの呼び出された順番を確認することができる。
 処理2203において、APフロー解析モジュール102は、実行ログ集合Mが空集合か否か判定する(2203)。実行ログ集合Mが空集合である場合(2203でYES)、処理2207に進んで、実行ログ集合Mの呼出しを結合し(2207)、処理を終了する(2208)。
 一方、処理2203において、実行ログ集合Mが空集合でない場合(2203でNO)、処理2204に進んで、APフロー解析モジュール102は、実行ログ集合Mから1つの要素(実行ログ)を取り出して変数mに格納する(2204)。その後、変数mに格納された要素が、解析対象サービス集合Lに含まれるか否か判定する(2205)。
 解析対象サービス集合Lに含まれない場合(2205でNO)、処理2203に戻って次の要素について処理を繰り返す。一方、処理2205において、解析対象サービス集合Lに含まれる場合(2205でYES)、処理2206に進んで、APフロー解析モジュール102は、変数mに格納された要素(実行ログ)を、解析対象サービスリストNに追加する(2206)。その後、処理2206に戻って次の要素について処理を繰り返す。
 以上の処理により、APフロー解析モジュール102は、複数サービスの解析において、実行ログ(複数サービスの各々のサービスの呼出しログ)を参照して、呼出し関係を合成し解析する。なお、APフロー解析モジュール102以外のモジュールが当該処理を実行してもよい。
 以下、本発明の第2の実施形態の具体例を説明する。
 APフロー解析モジュール102は、まず図16の処理2202により、解析対象サービスの集合(図15のクラスC0のメソッドdoPost及びクラスC1のメソッドdoPost)を解析対象サービス集合Lに格納する(2202)。また処理2202では、実行ログリスト(図17に示す表)を実行ログ集合Mに格納し、解析対象サービスリストNを空リストとすることによって初期化する。
 その後、APフロー解析モジュール102は、実行ログ集合Mが空集合か否か判定する(2203)。実行ログ集合Mは空集合ではないので(2203でNO)、処理2204に進んで、APフロー解析モジュール102は、実行ログ集合Mから1つの要素(例えば、C0.doPost)を取り出して変数mに格納する(2204)。その後、変数mに格納された要素が、解析対象サービス集合Lに含まれるか否か判定する(2205)。
 要素(C0.doPost)は解析対象サービス集合Lに含まれるので(2205でYES)、処理2206に進んで、APフロー解析モジュール102は、変数mに格納された要素(C0.doPost)を、解析対象サービスリストNに追加する(2206)。その後、処理2206に戻って次の要素について処理を繰り返す。
 以上の処理により、APフロー解析モジュール102は、解析対象サービスリストN([C0.doPost、C1.doPost])を求めることができる。また処理2207により、このような解析対象サービスリストNの呼出しを結合することによって、図18に示す仮呼出しプログラム2101を作成することができる。
 図18は、本発明の第2の実施形態の具体例の仮呼出しプログラム2101を示す図である。仮呼出しプログラム2101は、解析対象サービスリストNに格納された各呼出し処理を順序付けしたプログラムである。
 APフロー解析モジュール102は、図15の対象プログラム1101及び図18の仮呼出しプログラム2101に対して上記の解析を実行することによって、図19に示す解析結果を得ることができる。
 図19は、本発明の第2の実施形態の具体例の対象プログラム1101に対するAPフロー解析モジュール102の解析結果を示す図である。
 図19に示す解析結果テーブル1403は、経路欄1401と、変数欄1402とを含む。経路欄1401は、図15の対象プログラム1101及び図18の仮呼出しプログラム2101の制御の流れ((i)→(d)→(a)→(b)→(c)→(j)→(h)→(e)→(f)→(g))を示す。変数欄1402は、対象プログラム1101の各文(a)~(g)を示す文欄1404と、各文(a)~(g)における変数を示す変数名欄1405と、変数の値を示す値欄1406とを含む。
 以上説明してきた本発明の第2の実施形態によれば、3層アーキテクチャのWebアプリケーションにおいて、プログラムが複数のサービスから構成される場合であっても、当該プログラムの動作不良や脆弱性等の原因箇所を容易に特定することができる。具体的には、プログラムの動作不良の発生箇所である文(g)を解析起点として、当該動作不良の原因箇所である文(a)までのパスを逆方向に解析し、ユーザに提示することができる。これにより、ユーザはプログラムの動作不良の発生箇所に基づいて当該動作不良の原因箇所を容易に特定可能となる。
 (第3の実施形態)
 次に本発明の第3の実施形態について説明する。
 前述の第1の実施形態では、解析始点解析モジュール104が、ユーザによって指示された箇所を解析始点として設定する場合について説明した(図4参照)。ここでは、解析始点解析モジュール104が、プログラムの実行中に例外処理が発生した箇所を解析始点として設定する場合について説明する。なお、第3の実施形態の解析システム101の構成、解析システム101の各モジュール102~107の動作のうち、前述の第1の実施形態と同様である構成、動作についての説明は、適宜省略する。
 図20は、本発明の第3の実施形態の解析始点解析モジュール104の制御ロジックを示すフローチャートである。
 まず処理501において、解析始点解析モジュール104は、処理を開始する(501)。次に処理502において、解析始点解析モジュール104は、プログラムの実行ログの集合を変数T(以下、「実行ログ集合T」という。)に格納する(502)。プログラムの実行ログ集合については、図21を用いて後述する。
 その後、解析始点解析モジュール104は、実行ログ集合Tが空集合か否か判定する(503)。実行ログ集合Tが空集合である場合(503でYES)、処理を終了する(507)。一方、実行ログ集合Tが空集合でない場合(503でNO)、処理504に進んで、解析始点解析モジュール104は、実行ログ集合Tから1つの要素(実行ログ)を取り出して変数uに格納する(504)。
 その後、変数uに格納された要素が、例外発生を表すエントリであるか否か判定する(505)。変数uに格納された要素が例外発生を表すエントリである場合(505でYES)、処理506に進んで、変数uに格納された要素を解析始点として設定し(506)、処理を終了する(507)。一方、変数uに格納された要素が例外発生を表すエントリでない場合(505でNO)、処理503に戻って次の要素について処理を繰り返す。
 以上の処理により、解析始点解析モジュール104は、プログラムの実行中に例外処理が発生した箇所を解析始点として設定する。
 以下、本発明の第3の実施形態の具体例を説明する。
 図21は、本発明の第3の実施形態の具体例の実行ログ集合の一例を示す図である。実行ログ集合は、順序関係を示す項番欄1701、項番欄1701の各項番に対応するイベントの内容を示すイベント欄1702を含む。図21に示す例では、「項番#3」のエントリ1703が例外発生を示す処理である。
 解析始点解析モジュール104は、まず図20の処理502により、図21に示す実行ログ集合を実行ログ集合Tに格納する(502)。その後、実行ログ集合Tが空集合か否か判定する(503)。実行ログ集合Tは空集合でないので(503でNO)、処理504に進んで、解析始点解析モジュール104は、実行ログ集合Tから1つの要素([#1、call CO.doPost])を取り出して変数uに格納する(504)。
 その後、変数uに格納された要素が、例外発生を表すエントリであるか否か判定する(505)。変数uに格納された要素([#1、call CO.doPost])は例外発生を表すエントリではないので(505でNO)、処理503に戻って次の要素([#2、call C1.doPost])について処理を実行する。処理503~505の処理を繰り返すことにより、解析始点解析モジュール104は、例外発生を表すエントリである要素([#3、Exception in thread"main")を、解析始点として設定し(506)、処理を終了する(507)。
 以上の処理により、解析始点解析モジュール104は、図21のエントリ1703を解析始点として設定することができる。なお、このような実行ログに対応する対象プログラム108(図1参照)を、図22に示す。
 図22は、本発明の第3の実施形態の具体例の対象プログラム108を示す図である。図22に示す対象プログラム1601は、対象プログラム108の一例としてのロジック層のプログラムである。この対象プログラム1601は、単一のサービス(クラスC2が定義するサービス)を実現する。
 図22に示す例において、メソッドC2.m2(文(d))が例外発生を表す処理である。すなわち、前述の図20に示す制御ロジックにより、文(d)を解析始点として設定することができる。
 以上説明してきた本発明の第3の実施形態によれば、プログラムの動作不良の発生箇所である文(d)を自動的に解析起点として設定することができる。その後、前述の第1の実施形態で説明した方法により、当該動作不良の原因箇所である文までのパスを逆方向に解析し、ユーザに提示することができる。これにより、ユーザはプログラムの動作不良の発生箇所に基づいて当該動作不良の原因箇所を容易に特定可能となる。
 以上、本発明を添付の図面を参照して詳細に説明したが、本発明はこのような具体的構成に限定されるものではなく、添付した請求の範囲の趣旨内における様々な変更及び同等の構成を含むものである。
 本発明は、アプリケーションの解析方法に関し、特に、3層アーキテクチャのWebアプリケーションにおいて、プログラムの不正動作の要因を特定する場合に有用である。

Claims (8)

  1.  プログラムを実行するプロセッサと、前記プロセッサによって実行されるプログラムを格納するメモリとを備えた解析システムが、データベース操作文を含むアプリケーションプログラムを解析する方法であって、
     前記プロセッサが、前記アプリケーションプログラム及び前記アプリケーションプログラムの実行結果に基づいて、前記アプリケーションプログラムの制御の流れ及び前記アプリケーションプログラムにおいて用いられるデータを解析する第1の手順と、
     前記プロセッサが、前記アプリケーションプログラムが複数のデータベース操作文を含む場合に、前記第1の手順の解析結果及び前記複数のデータベース操作文の操作内容に応じて、前記複数のデータベース操作文の間の依存関係を解析する第2の手順と、
     前記プロセッサが、前記第1の手順の解析結果及び前記第2の手順の解析結果に基づいて、前記アプリケーションプログラム中の不正に動作している所定の箇所を解析始点として、当該不正動作の伝播経路を、前記制御の流れに対して逆向きに解析する第3の手順と、
     前記プロセッサが、前記第3の手順によって求められた前記伝播経路上のプログラム文を提示する第4の手順と、
     を含むことを特徴とするアプリケーションプログラムの解析方法。
  2.  請求項1に記載のアプリケーションプログラムの解析方法であって、
     前記第3の手順は、
     前記プロセッサが、前記第3の手順によって求められた伝播経路上のプログラム文から、非提示とすべきプログラム文を除くことによって、提示すべきプログラム文を限定する手順を含むことを特徴とするアプリケーションプログラムの解析方法。
  3.  請求項1に記載のアプリケーションプログラムの解析方法であって、
     前記第4の手順において、前記プロセッサは、前記第3の手順によって求められた前記伝播経路上のプログラム文の実行経路を表すパス集合を提示することを特徴とするアプリケーションプログラムの解析方法。
  4.  請求項1に記載のアプリケーションプログラムの解析方法であって、
     前記第4の手順において、前記プロセッサは、前記第3の手順によって求められた前記伝播経路上のプログラム文を、当該アプリケーションプログラムのプログラム構造と対応付けて提示することを特徴とするアプリケーションプログラムの解析方法。
  5.  請求項1に記載のアプリケーションプログラムの解析方法であって、
     前記第2の手順と前記第3の手順との間に、
     前記プロセッサが、ユーザによって指示された箇所を、前記解析始点として設定する手順を含むことを特徴とするアプリケーションプログラムの解析方法。
  6.  請求項1に記載のアプリケーションプログラムの解析方法であって、
     前記第2の手順と前記第3の手順との間に、
     前記プロセッサが、前記アプリケーションプログラムの実行中に例外処理が発生した箇所を、前記解析始点として設定する手順を含むことを特徴とするアプリケーションプログラムの解析方法。
  7.  プログラムを実行するプロセッサと、前記プロセッサによって実行されるプログラムを格納するメモリとを備え、データベース操作文を含むアプリケーションプログラムを解析する解析システムであって、
     前記プロセッサは、
     前記アプリケーションプログラム及び前記アプリケーションプログラムの実行結果に基づいて、前記アプリケーションプログラムの制御の流れ及び前記アプリケーションプログラムにおいて用いられるデータを解析し、
     前記アプリケーションプログラムが複数のデータベース操作文を含む場合に、前記アプリケーションプログラムに関する解析結果及び前記複数のデータベース操作文の操作内容に応じて、前記複数のデータベース操作文の間の依存関係を解析し、
     前記アプリケーションプログラムに関する解析結果及び前記データベース操作文に関する解析結果に基づいて、前記アプリケーションプログラム中の不正に動作している所定の箇所を解析始点として、当該不正動作の伝播経路を、前記制御の流れに対して逆向きに解析し、
     前記伝播経路上のプログラム文を提示することを特徴とする解析システム。
  8.  プログラムを実行するプロセッサと、前記プロセッサによって実行されるプログラムを格納するメモリとを備え、データベース操作文を含むアプリケーションプログラムを解析する解析システムに用いられる解析プログラムを格納した記録媒体であって、
     前記アプリケーションプログラム及び前記アプリケーションプログラムの実行結果に基づいて、前記アプリケーションプログラムの制御の流れ及び前記アプリケーションプログラムにおいて用いられるデータを解析する第1の手順と、
     前記アプリケーションプログラムが複数のデータベース操作文を含む場合に、前記第1の手順の解析結果及び前記複数のデータベース操作文の操作内容に応じて、前記複数のデータベース操作文の間の依存関係を解析する第2の手順と、
     前記第1の手順の解析結果及び前記第2の手順の解析結果に基づいて、前記アプリケーションプログラム中の不正に動作している所定の箇所を解析始点として、当該不正動作の伝播経路を、前記制御の流れに対して逆向きに解析する第3の手順と、
     前記第3の手順によって求められた前記伝播経路上のプログラム文を提示する第4の手順と、
     を前記解析システムに実行させることを特徴とする解析プログラムを格納した記録媒体。
PCT/JP2010/062442 2010-06-02 2010-07-23 アプリケーションの解析方法、解析システム及び記録媒体 WO2011151931A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US13/699,151 US8898649B2 (en) 2010-06-02 2010-07-23 Application program analysis method, analysis system and recording medium for identifying a contributing factor for an invalid operation of an application program

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2010-126954 2010-06-02
JP2010126954A JP5303795B2 (ja) 2010-06-02 2010-06-02 アプリケーションの解析方法、解析システム及び解析プログラム

Publications (1)

Publication Number Publication Date
WO2011151931A1 true WO2011151931A1 (ja) 2011-12-08

Family

ID=45066326

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2010/062442 WO2011151931A1 (ja) 2010-06-02 2010-07-23 アプリケーションの解析方法、解析システム及び記録媒体

Country Status (3)

Country Link
US (1) US8898649B2 (ja)
JP (1) JP5303795B2 (ja)
WO (1) WO2011151931A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105446881A (zh) * 2015-11-26 2016-03-30 福建工程学院 一种程序不可达路径的自动检测方法
JP2017004500A (ja) * 2015-06-04 2017-01-05 富士通株式会社 分析支援方法、分析支援プログラムおよび分析支援装置
JP2020119348A (ja) * 2019-01-25 2020-08-06 富士通株式会社 解析プログラム、解析方法および解析装置

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8949797B2 (en) * 2010-04-16 2015-02-03 International Business Machines Corporation Optimizing performance of integrity monitoring
CN102789420B (zh) * 2012-07-24 2016-01-20 中国矿业大学 基于程序执行轨迹的动态切片系统
CN103914372B (zh) * 2012-12-31 2017-11-10 北京启明星辰信息技术股份有限公司 基于程序切片的代码缺陷静态检测的并行化方法及装置
WO2016161178A1 (en) * 2015-03-31 2016-10-06 Galaxe. Solutions, Inc. System and method for automated cross-application dependency mapping
US10747641B2 (en) * 2016-08-11 2020-08-18 Tata Consultancy Services Limited System and method for cause point analysis for effective handling of static analysis alarms

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06175884A (ja) * 1992-12-04 1994-06-24 Nippon Telegr & Teleph Corp <Ntt> プログラムエラー原因究明装置
JPH09282173A (ja) * 1996-04-10 1997-10-31 Hitachi Ltd プログラムの静的解析方法
JP2002108649A (ja) * 2000-09-29 2002-04-12 Toshiba Corp トレース解析を支援するためのプログラムを記録した記録媒体及びプログラム製品
JP2002342110A (ja) * 2001-05-17 2002-11-29 Fujitsu Ltd プログラム解析装置及びそのプログラム並びにプログラム記録媒体
JP2006185324A (ja) * 2004-12-28 2006-07-13 Internatl Business Mach Corp <Ibm> アプリケーション・プログラムの開発支援方法、プログラム、情報処理装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6173440B1 (en) * 1998-05-27 2001-01-09 Mcdonnell Douglas Corporation Method and apparatus for debugging, verifying and validating computer software
AU2004252837A1 (en) * 2003-06-04 2005-01-06 Fair Isaac Corporation Relational logic management system
JP3966518B2 (ja) * 2004-03-12 2007-08-29 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラム解析装置、その解析方法及びプログラム
KR101150653B1 (ko) 2004-06-04 2012-05-29 포티파이 소프트웨어 엘엘씨 보안 소프트웨어 개발, 테스팅 및 모니터링 장치 및 방법
US7617489B2 (en) * 2006-09-15 2009-11-10 Ounce Labs, Inc. Method and system for detecting interprocedural vulnerability by analysis of source code
US8365152B2 (en) * 2008-01-24 2013-01-29 Nec Laboratories America, Inc. Path-sensitive analysis through infeasible-path detection and syntactic language refinement

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06175884A (ja) * 1992-12-04 1994-06-24 Nippon Telegr & Teleph Corp <Ntt> プログラムエラー原因究明装置
JPH09282173A (ja) * 1996-04-10 1997-10-31 Hitachi Ltd プログラムの静的解析方法
JP2002108649A (ja) * 2000-09-29 2002-04-12 Toshiba Corp トレース解析を支援するためのプログラムを記録した記録媒体及びプログラム製品
JP2002342110A (ja) * 2001-05-17 2002-11-29 Fujitsu Ltd プログラム解析装置及びそのプログラム並びにプログラム記録媒体
JP2006185324A (ja) * 2004-12-28 2006-07-13 Internatl Business Mach Corp <Ibm> アプリケーション・プログラムの開発支援方法、プログラム、情報処理装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017004500A (ja) * 2015-06-04 2017-01-05 富士通株式会社 分析支援方法、分析支援プログラムおよび分析支援装置
CN105446881A (zh) * 2015-11-26 2016-03-30 福建工程学院 一种程序不可达路径的自动检测方法
JP2020119348A (ja) * 2019-01-25 2020-08-06 富士通株式会社 解析プログラム、解析方法および解析装置
JP7148802B2 (ja) 2019-01-25 2022-10-06 富士通株式会社 解析プログラム、解析方法および解析装置

Also Published As

Publication number Publication date
US20130212565A1 (en) 2013-08-15
US8898649B2 (en) 2014-11-25
JP2011253363A (ja) 2011-12-15
JP5303795B2 (ja) 2013-10-02

Similar Documents

Publication Publication Date Title
JP5303795B2 (ja) アプリケーションの解析方法、解析システム及び解析プログラム
CN109426723B (zh) 使用释放后内存的检测方法、系统、设备及存储介质
JP4148527B2 (ja) 機能テスト・スクリプト生成装置
Linares-Vásquez et al. Mining android app usages for generating actionable gui-based execution scenarios
US7849509B2 (en) Detection of security vulnerabilities in computer programs
US10761963B2 (en) Object monitoring in code debugging
EP2972882B1 (en) Javascript debugging using just my code
US20110154300A1 (en) Debugging From A Call Graph
US9454467B2 (en) Method and apparatus for mining test coverage data
JP2019053729A (ja) スマートコントラクトのテスト方法及びテスト装置
JP2006185211A (ja) プログラム解析装置、テスト実行装置、その解析方法及びプログラム
US9424163B2 (en) Exception and debugging behaviors for JavaScript debugging using just my code
US20110145799A1 (en) Path-sensitive dataflow analysis including path refinement
US10681076B1 (en) Automated security analysis of software libraries
US9715372B2 (en) Executable guidance experiences based on implicitly generated guidance models
CN110727476A (zh) 一种授权配置文件的生成方法、装置、设备及存储介质
US20110202906A1 (en) Compiling method and compiling program
Borzykh et al. Detecting Code Security Breaches by Means of Dataflow Analysis
KR101995176B1 (ko) 프로그램 실행 컨텍스트 기반의 빅데이터를 활용한 역공학 방법 및 시스템
US7533314B2 (en) Unit test extender
CN114691197A (zh) 代码分析方法、装置、电子设备和存储介质
CN112748930B (zh) 编译检测方法、装置、设备及存储介质
US8843896B2 (en) Metamodeling contextual navigation of computer software applications
JP2014106770A (ja) 型チェック装置、型チェック方法および型チェックプログラム
CN117171043B (zh) 一种源代码智能检测方法、系统、设备及存储介质

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

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 9709/CHENP/2012

Country of ref document: IN

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 13699151

Country of ref document: US

122 Ep: pct application non-entry in european phase

Ref document number: 10852535

Country of ref document: EP

Kind code of ref document: A1