Patent ID: 9210184
Filing Date: 2015-12-08
Classification: G06F,H04L

Abstract:
1. A system for determining the vulnerability of computer software applications to attacks, the system comprising: a computing device, including a memory and a processor; the memory is configured to store executable instructions; the processor is configured to execute the executable instructions to cause the processor to: identify a defense-related variable within a computer software application that is assigned results of a defense operation, wherein said defense operation is performed to defend against a predefined type of attack; identify a control-flow predicate dominating a security-sensitive operation within said computer software application, wherein said security-sensitive operation is security-sensitive with respect to said predefined type of attack; identify a data-flow dependent variable defined within instructions of said computer software application that is data-flow dependent on said defense-related variable, determine that a first condition is true in response to a verification that said control-flow predicate uses said data-flow dependent variable to make a branching decision, determine that the first condition is false in response to a verification that said control-flow predicate does not use said data-flow dependent variable to make the branching decision; determine that a second condition is true in response to a verification that a control-flow path leading to said security-sensitive operation is taken only as a result of said data-flow dependent variable is being compared against a value of a predefined type, that is received from a source external to said computer software application; determine that the second condition is false in response to a verification that the control-flow path leading to said security-sensitive operation is not taken only as the result of said data-flow dependent variable being compared against the value of the predefined type that is received from the source external to said computer software application; determine that said security-sensitive operation is safe from said predefined type of attack in response to a verification that both of said conditions are true, and determine that said computer software application is safe from said predefined type of attack in response to a verification that both of said conditions are true for all security-sensitive operations in said computer software application.