Patent Document ID: 8156483
Application ID: 12163398

Base Claim:
1. A computer implemented method of detecting vulnerabilities in a pre-existing source code listing, said source code listing having a listed sequence of expressions, each expression including a set of operands and operators to transform values of the operands, said listed sequence of expressions having an inherent control flow indicative of the runtime execution of the expressions and an inherent data flow indicative of the run-time transformations of operand values, said source code listing being expressable in multiple programming languages, said source code listing further having routine calls including arguments with which to invoke a routine, said source code listing being stored in a computer-readable medium, said computer implemented method comprising the acts of: executing computer instructions to create a single intermediate representation of said source code listing regardless of programming language by parsing said source code listing; executing computer instructions to provide a database having computer-readable records associated with pre-identified routines, each record specifying matching rules of said corresponding pre-identified routine, that, if satisfied, presents a vulnerability during execution of said routine, said database allowing new rules to be incorporated into said database corresponding to new vulnerabilities; executing computer instructions to statically analyze said intermediate representation of said source code listing to create computer models of said source code listing, said models representing expected run time execution of a computer program created by compilation of said source code listing, said analysis including at least one of a data flow analysis, a semantic analysis and a control flow analysis; executing computer instructions to retrieve from said database records corresponding to routine calls represented in said intermediate representation; executing computer instructions to compare said models with said matching rules specified in said retrieved records to determine whether said routine calls possess vulnerabilities; and generating a report that identifies the detected vulnerabilities, including identifying call sites having the detected vulnerabilities, said report being viewable by a developer-user, and allowing the developer-user to address said vulnerabilities by modifying said source code listing.

---

Claim 3:
3. The computer implemented method of claim 1 wherein said execution of computer instructions to statically analyze said intermediate representation includes executing instructions to determine if the variable is visible to other routines or passed into other routines as an argument.