Many software analysis techniques attempt to determine whether bugs are reachable, but for security purpose this is only part of the story as it does not indicate whether the bugs found could be easily triggered by an attacker. The recently introduced notion of robust reachability aims at filling this gap by distinguishing the input controlled by the attacker from those that are not. Yet, this qualitative notion may be too strong in practice, leaving apart bugs which are mostly but not fully replicable. We aim here at proposing a quantitative version of robust reachability, more flexible and still amenable to automation. We propose quantitative robustness, a metric expressing how easily an attacker can trigger a bug while taking into account that he can only influence part of the program input, together with a dedicated quantitative symbolic execution technique (QRSE). Interestingly, QRSE relies on a variant of model counting (namely, functional E-MAJSAT) unseen so far in formal verification, but which has been studied in AI domains such as Bayesian network, knowledge representation and probabilistic planning. Yet, the existing solving methods from these fields turn out to be unsatisfactory for formal verification purpose, leading us to propose a novel parametric method. These results have been implemented and evaluated over two security-relevant case studies, allowing to demonstrate the feasibility and relevance of our ideas.
翻译:许多软件分析技术试图确定错误是否可达到,但为了安全目的,这只是故事的一部分,因为它没有表明发现错误是否容易被攻击者触发。最近引入的强力可达到性概念旨在通过区分攻击者控制的投入与非攻击者控制的投入来填补这一差距。然而,这一质量概念在实践中可能太强,使大部分但并非完全可复制的错误分离。我们在这里的目的是提出一个可靠可达到性、更灵活和仍然适合自动化的定量版本。我们提出了数量稳健性,一个表示攻击者能够触发错误的衡量标准,同时考虑到他只能影响部分程序输入,加上一个专门的量化象征性执行技术(QRSE ) 。有趣的是,QRSE依靠一种模型的变式(即功能性E-MAJSAT)在正式核查中远不为人所知晓,但已经在Bayesian网络、知识代表性和概率规划等AI领域进行了研究。然而,这些领域现有的解决方法在正式核查目的上无法令人满意,因此我们提出了一种新式的可行性研究。