DETECTING AND LOCALIZING SECURITY VULNERABILITIES IN CLIENT-SERVER APPLICATION
First Claim
1. A computer-implemented method for analyzing a set of two or more communicating applications comprising a plurality of code fragments, the computer-implemented method comprising:
- dynamically executing and/or statically analyzing at least one ofa portion of code fragments as part of a first application, anda portion of code fragments as part of a second application,wherein the first application and the second application are communicating at least one of data and control with each other;
recording a correlation between the code fragments in at least one of the first application and the second application that have been executed and at least one execution characteristic that the code fragments exhibited on execution;
performing with at least one of a static oracle and a dynamic oracle, an analysis of at least a portion of the code fragments that comprise the first application that have been executed; and
prioritizing the code fragments in at least one of the first application and the second application based on an evaluation produced by the oracle, and based on the correlation between the code fragments that have been executed and the execution characteristic exhibited by the code fragments.
1 Assignment
0 Petitions
Accused Products
Abstract
The present invention provides a system, computer program product, and a computer implemented method for analyzing a set of two or more communicating applications. The method includes executing a first application, such as a client application, and executing a second application, such as a server application. The applications are communicating with each other. A correlation is recorded between the applications and an execution characteristic exhibited on execution. An oracle is used to determine an analysis of the first application that has been executed. The execution of the first application causes a change of state in the second application and/or a change control flow in the second application. Code fragment in the first application and/or the second application are prioritized based on an evaluation produced by the oracle, and based on the correlation between the code fragments that have been executed and the execution characteristic exhibited by the code fragments.
89 Citations
25 Claims
-
1. A computer-implemented method for analyzing a set of two or more communicating applications comprising a plurality of code fragments, the computer-implemented method comprising:
-
dynamically executing and/or statically analyzing at least one of a portion of code fragments as part of a first application, and a portion of code fragments as part of a second application, wherein the first application and the second application are communicating at least one of data and control with each other; recording a correlation between the code fragments in at least one of the first application and the second application that have been executed and at least one execution characteristic that the code fragments exhibited on execution; performing with at least one of a static oracle and a dynamic oracle, an analysis of at least a portion of the code fragments that comprise the first application that have been executed; and prioritizing the code fragments in at least one of the first application and the second application based on an evaluation produced by the oracle, and based on the correlation between the code fragments that have been executed and the execution characteristic exhibited by the code fragments.
-
-
2. The computer implemented method of claim 2, wherein the evaluation produced by the oracle is a fault localization evaluation.
-
3. A computer-implemented method for analyzing a set of two or more communicating applications comprising a plurality of code fragments, the computer-implemented method comprising:
-
executing at least a portion of code fragments as part of a first application and executing at least a portion of the code fragments as part of a second application, wherein the first application and the second application are communicating with each other; recording a correlation between the code fragments in at least one of the first application and the second application that have been executed and at least one execution characteristic that the code fragments exhibited on execution; determining with an oracle an analysis of at least a portion of the code fragments that comprise the first application that have been executed, and wherein an execution of the first application causes at least one of a change of state in the second application and a change control flow in the second application; and prioritizing the code fragments in at least one of the first application and the second application based on an evaluation produced by the oracle, and based on the correlation between the code fragments that have been executed and the execution characteristic exhibited by the code fragments. - View Dependent Claims (4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. A computer program product for analyzing a set of two or more communicating applications comprising a plurality of code fragments, the computer program product comprising:
a storage medium readable by a computer system, the computer readable medium storing software programming instructions capable of performing with a processor programming code to carry out; executing at least a portion of code fragments as part of a first application and executing at least a portion of the code fragments as part of a second application, wherein the first application and the second application are communicating with each other; recording a correlation between the code fragments in at least one of the first application and the second application that have been executed and at least one execution characteristic that the code fragments exhibited on execution; determining with an oracle an analysis of at least a portion of the code fragments that comprise the first application that have been executed, and wherein an execution of the first application causes at least one of a change of state in the second application and a change control flow in the second application; and prioritizing the code fragments in at least one of the first application and the second application based on an evaluation produced by the oracle, and based on the correlation between the code fragments that have been executed and the execution characteristic exhibited by the code fragments. - View Dependent Claims (14, 15, 16, 17, 18, 19, 20)
-
21. The computer program product of 18, wherein the violation of information flow includes untrusted information flowing into a trusted application.
-
22. The computer program product of 18, wherein the violation of information flow includes private data flowing into a public application.
-
23. A system for analyzing a set of two or more communicating applications comprising a plurality of code fragments, the system comprising:
-
a computer memory capable of storing machine instructions; and a processor in communication with said computer memory, said processor capable of accessing said machine instructions to perform; executing at least a portion of code fragments as part of a first application and executing at least a portion of the code fragments as part of a second application, wherein the first application and the second application are communicating with each other; recording a correlation between the code fragments in at least one of the first application and the second application that have been executed and at least one execution characteristic that the code fragments exhibited on execution; determining with an oracle an analysis of at least a portion of the code fragments that comprise the first application that have been executed, and wherein an execution of the first application causes at least one of a change of state in the second application and a change control flow in the second application; and prioritizing the code fragments in at least one of the first application and the second application based on an evaluation produced by the oracle, and based on the correlation between the code fragments that have been executed and the execution characteristic exhibited by the code fragments. - View Dependent Claims (24, 25)
-
Specification