Growing security requirements for systems and applications have raised the stakes on software security verification techniques. Static analysis has been widely used to detect vulnerabilities at compile time. It takes advantage of the relevant information generated by the compiler and scales well to large code base. However, it is limited to check low-level security properties that syntactically match concrete program actions. Recently, model-checking is settling and showing great promise in the arena of software verification. Nevertheless, it suffers from abstraction issues for deriving a model of the program that can be model-checked. In this thesis, we present our security verification approach that brings into a synergy static analysis and model-checking. This synergy leverages the advantages of both techniques. We use the static analysis to automatically generate a concise abstraction of the program. On the other-hand, the model-checking provides the capability and flexibility of specifying and verifying a wide range of properties, and we also benefit from the exhaustive program analysis provided by model-checking.
展开▼