Symbolic execution is a program analysis technique commonly utilized to determine whether programs violate properties and, in case violations are found, to generate inputs that can trigger them. Used in the context of security properties such as noninterference, symbolic execution is precise when looking for counterexample pairs of traces when insecure information flows are found, however it is sound only up to a bound thus it does not allow to prove the correctness of programs with executions beyond the given bound. By contrast, abstract interpretation-based static analysis guarantees soundness but generally lacks the ability to provide counterexample pairs of traces. In this paper, we propose to weave both to obtain the best of two worlds. We demonstrate this with a series of static analyses, including a static analysis called RedSoundRSE aimed at verifying noninterference. RedSoundRSE provides both semantically sound results and the ability to derive counterexample pairs of traces up to a bound. It relies on a combination of symbolic execution and abstract domains inspired by the well known notion of reduced product. We formalize RedSoundRSE and prove its soundness as well as its relative precision up to a bound. We also provide a prototype implementation of RedSoundRSE and evaluate it on a sample of challenging examples.
翻译:执行是一种程序分析技术,通常用来确定方案是否违反特性,如果发现违规情况,则用来产生能够触发特性的投入。在不干预等安全特性的背景下,在发现不安全的信息流动时,在寻找对应对应的一对痕迹时,象征性执行是精确的,然而,这听起来只是一种约束,因此无法证明执行方案与超出给定界限的处决的正确性。相比之下,基于抽象解释的静态分析保证了正确性,但一般缺乏提供反相迹的能力。在本文件中,我们提议编织两者,以获得两个世界的最佳结果。我们用一系列静态分析,包括称为RedSoundRSE的静态分析,以核查不干涉情况。RedSoundRSE的静态结果和从一个约束线上获得对应的痕迹的正确性分析能力。它依赖于由众所周知的减少产品概念所激发的象征性执行和抽象区域。我们正式确定RDSRSE,并证明它的正确性和相对精确性,用以核查不受干扰。我们还要对RS的样品进行评估。