We present the first compositional, incremental static analysis for detecting memory-safety and information leakage vulnerabilities in C-like programs. To do so, we develop the first under-approximate relational program logics for reasoning about information flow, including Insecurity Separation Logic (InsecSL). Like prior under-approximate separation logics, we show that InsecSL can be automated via symbolic execution. We then build a top-down, contextual, compositional, inter-procedural analysis for detecting vulnerabilities. We prove our approach sound in Isabelle/HOL and implement it in a proof-of-concept tool, Underflow, for analysing C programs, which we apply to various case studies.
翻译:我们在类似C类方案中提出第一个构成式、渐进式静态分析,以发现记忆安全和信息渗漏脆弱性。为此,我们开发了第一个关于信息流动推理的近距离关系逻辑,包括不安全分离逻辑(InsecSL ) 。和先前的近距离分离逻辑(InsecSL ) 一样,我们显示InsecSL可以通过象征性执行实现自动化。然后我们建立一个自上而下、背景性、构成性、程序间分析,以发现脆弱性。我们在伊莎贝尔/HOL中证明了我们的方法合理,并在一个概念验证工具“潜流”中加以实施,用于分析C程序,我们适用于各种案例研究。