Computer-based systems have been used to solve several domain problems, such as industrial, military, education, and wearable. Those systems need high-quality software to guarantee security and safety. We advocate that Bounded Model Checking (BMC) techniques can detect security vulnerabilities in the early stages of development processes. However, this technique struggles to scale up and verify large software commonly found on computer-based systems. Here, we develop and evaluate a pragmatic approach to verify large software systems using a state-of-the-art bounded model checker. In particular, we pre-process the input source-code files and then guide the model checker to explore the code systematically. We also present a multi-core implementation of the k-induction proof algorithm to verify and falsify large software systems iteratively. Our experimental results using the Efficient SMT-based Model Checker (ESBMC) show that our approach can guide ESBMC to efficiently verify large software systems. We evaluate our approach using the PuTTY application to verify 136 files and 2803 functions in less than 86 minutes, and the SlimGuard allocator, where we have found real security vulnerabilities confirmed by the developers. We conclude that our approach can successfully guide a bounded model checker to verify large software systems systematically.
翻译:基于计算机的系统被用来解决工业、军事、教育和可磨损等若干领域问题。这些系统需要高质量的软件来保障安保和安全。我们主张,在开发过程的早期阶段,封闭模式检查技术能够探测出安全弱点。然而,这种技术在扩大和核查计算机系统中常见的大型软件方面挣扎不已。在这里,我们开发并评价一种实用的方法,用最先进的封闭模式检查器来核查大型软件系统。特别是,我们预先处理输入源代码文件,然后指导模型检查器系统地探索该代码。我们还提出使用多核心的K上传验证算法来反复核查和伪造大型软件系统。我们使用高效的SMTM模型检验器(ESBC)的实验结果表明,我们的方法可以指导ESBMC系统高效率地核查大型软件系统。我们用PUTTY应用程序在不到86分钟的时间里核查136个文档和2803个功能,我们用SlimGuard Aloctor来评估我们的方法,我们在那里找到了一个真正的安全弱点校验系统。我们能够成功地验证软件系统。