In the last three decades, memory safety issues in system programming languages such as C or C++ have been one of the significant sources of security vulnerabilities. However, there exist only a few attempts with limited success to cope with the complexity of C++ program verification. Here we describe and evaluate a novel verification approach based on bounded model checking (BMC) and satisfiability modulo theories (SMT) to verify C++ programs formally. Our verification approach analyzes bounded C++ programs by encoding into SMT various sophisticated features that the C++ programming language offers, such as templates, inheritance, polymorphism, exception handling, and the Standard C++ Libraries. We formalize these features within our formal verification framework using a decidable fragment of first-order logic and then show how state-of-the-art SMT solvers can efficiently handle that. We implemented our verification approach on top of ESBMC. We compare ESBMC to LLBMC and DIVINE, which are state-of-the-art verifiers to check C++ programs directly from the LLVM bitcode. Experimental results show that ESBMC can handle a wide range of C++ programs, presenting a higher number of correct verification results. At the same time, it reduces the verification time if compared to LLBMC and DIVINE tools. Additionally, ESBMC has been applied to a commercial C++ application in the telecommunication domain and successfully detected arithmetic overflow errors, potentially leading to security vulnerabilities.


翻译:过去三十年来,C或C+++等系统方案编制语言中的记忆安全问题一直是安全脆弱性的重要根源之一。然而,在应对C++程序复杂的程序核查方面,只有少数尝试取得了有限的成功。在这里,我们描述和评价了一种基于约束式模式检查(BMC)和可视性模调理论(SMT)的新式核查方法,以正式核查C++程序。我们的核查方法通过将C+编程语言提供的各种复杂功能,如模板、继承、多元形态、例外处理和标准C++图书馆等,来分析C++程序的约束性C+方案。我们将这些功能正式纳入我们的正式核查框架,使用一阶逻辑的可破碎片段,然后展示出最先进的SMT解决者如何有效处理这些功能。我们在ESBMC上实施了我们的核查方法。我们将ESBMC与LBMC和DIVINE(LBMBBBBBBBBC和DIVINE)这两个最先进的校验器,直接检查C+BT的C方案。实验结果表明,ESMC可以处理广泛的前期核查结果,如果在C+BSBR(C)实地核查中,则减少DLBA工具。

0
下载
关闭预览

相关内容

【经典书】Linux UNIX系统编程手册,1554页pdf
专知会员服务
45+阅读 · 2021年2月20日
Linux导论,Introduction to Linux,96页ppt
专知会员服务
78+阅读 · 2020年7月26日
【2020新书】C++20 特性 第二版,A Problem-Solution Approach
专知会员服务
58+阅读 · 2020年4月26日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
87+阅读 · 2019年11月25日
强化学习最新教程,17页pdf
专知会员服务
174+阅读 · 2019年10月11日
[综述]深度学习下的场景文本检测与识别
专知会员服务
77+阅读 · 2019年10月10日
机器学习入门的经验与建议
专知会员服务
92+阅读 · 2019年10月10日
MIT新书《强化学习与最优控制》
专知会员服务
275+阅读 · 2019年10月9日
LibRec 精选:你见过最有趣的论文标题是什么?
LibRec智能推荐
4+阅读 · 2019年11月6日
Facebook PyText 在 Github 上开源了
AINLP
7+阅读 · 2018年12月14日
LibRec 精选:推荐系统的论文与源码
LibRec智能推荐
14+阅读 · 2018年11月29日
LibRec 精选:连通知识图谱与推荐系统
LibRec智能推荐
3+阅读 · 2018年8月9日
机器人开发库软件大列表
专知
10+阅读 · 2018年3月18日
【推荐】(TensorFlow)SSD实时手部检测与追踪(附代码)
机器学习研究会
11+阅读 · 2017年12月5日
【推荐】YOLO实时目标检测(6fps)
机器学习研究会
20+阅读 · 2017年11月5日
【推荐】Python机器学习生态圈(Scikit-Learn相关项目)
机器学习研究会
6+阅读 · 2017年8月23日
A Novel Compaction Approach for SBST Test Programs
Arxiv
0+阅读 · 2021年9月2日
Generating Fact Checking Explanations
Arxiv
9+阅读 · 2020年4月13日
Advances in Online Audio-Visual Meeting Transcription
Arxiv
4+阅读 · 2019年12月10日
Arxiv
3+阅读 · 2018年3月13日
Arxiv
8+阅读 · 2018年1月30日
VIP会员
相关VIP内容
【经典书】Linux UNIX系统编程手册,1554页pdf
专知会员服务
45+阅读 · 2021年2月20日
Linux导论,Introduction to Linux,96页ppt
专知会员服务
78+阅读 · 2020年7月26日
【2020新书】C++20 特性 第二版,A Problem-Solution Approach
专知会员服务
58+阅读 · 2020年4月26日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
87+阅读 · 2019年11月25日
强化学习最新教程,17页pdf
专知会员服务
174+阅读 · 2019年10月11日
[综述]深度学习下的场景文本检测与识别
专知会员服务
77+阅读 · 2019年10月10日
机器学习入门的经验与建议
专知会员服务
92+阅读 · 2019年10月10日
MIT新书《强化学习与最优控制》
专知会员服务
275+阅读 · 2019年10月9日
相关资讯
LibRec 精选:你见过最有趣的论文标题是什么?
LibRec智能推荐
4+阅读 · 2019年11月6日
Facebook PyText 在 Github 上开源了
AINLP
7+阅读 · 2018年12月14日
LibRec 精选:推荐系统的论文与源码
LibRec智能推荐
14+阅读 · 2018年11月29日
LibRec 精选:连通知识图谱与推荐系统
LibRec智能推荐
3+阅读 · 2018年8月9日
机器人开发库软件大列表
专知
10+阅读 · 2018年3月18日
【推荐】(TensorFlow)SSD实时手部检测与追踪(附代码)
机器学习研究会
11+阅读 · 2017年12月5日
【推荐】YOLO实时目标检测(6fps)
机器学习研究会
20+阅读 · 2017年11月5日
【推荐】Python机器学习生态圈(Scikit-Learn相关项目)
机器学习研究会
6+阅读 · 2017年8月23日
相关论文
Top
微信扫码咨询专知VIP会员