C++源代码漏洞静态扫描系统的设计与实现

来源 :南京大学 | 被引量 : 0次 | 上传用户:littleycy
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
C++源代码漏洞静态扫描是指在不运行程序的情况下,使用污点分析、数据流分析技术挖掘潜在的漏洞。C++是最流行的语言之一,但其内存模型决定了C++相比于Java等语言更容易出现内存损坏等漏洞。静态扫描技术成本低、速度快,得到了开发者的广泛使用。随着软件的规模变大、复杂度变高,静态扫描工具会忽略控制流、上下文来提升扫描效率,但会导致误报数量的增多。为了改善开发者漏洞审核流程,降低漏洞审核难度,C++源代码漏洞静态扫描系统亟需降低误报率来协助开发者交付更健壮的代码。本系统创新地引入基于机器学习的迭代反馈式误报过滤机制,来解决C++源代码漏洞扫描中误报率高的问题。首先,系统融合多个开源漏洞扫描工具对程序进行扫描,获取丰富的原始漏洞报告。其次,系统使用漏洞扫描工具集对带漏洞标签的源码数据集进行扫描来获取误报数据,并使用该数据结合机器学习算法训练误报过滤器,获取过滤后的漏洞报告。接着,系统将漏洞交给漏洞专家审核,获取误报漏洞。最后,系统使用相似度算法寻找与误报漏洞代码相似的代码,并用这些数据再次训练误报过滤器。通过将漏洞列表中的误报项过滤掉,漏洞报告的有效性和可用性得到了提升,同时开发者参考过滤后报告修复漏洞,可以生产更高质量代码。本系统划分为C++源代码漏洞静态扫描模块、C++源代码特征提取模块、漏洞静态扫描误报过滤模块、漏洞审核反馈模块。为实现服务间松耦合,本系统使用Docker容器技术对扫描服务、误报过滤服务进行封装。为保证扫描服务的高性能,本系统使用异步队列中间件Rabbit MQ进行服务间消息传递。为保证扫描服务的持续优化,本系统使用Jenkins持续集成工具实现误报过滤模型的自动更新。本系统相比于目前使用最广泛的开源工具Tscan Code和Cppcheck,F1值分别提高了30%和22%,有效地降低了C++源代码漏洞静态扫描的误报。本系统提高了C++源代码漏洞静态扫描器的可用性,减少了误报漏洞数量,减轻了开发者审核漏洞负担,为交付高可靠的代码提供保障。
其他文献
正视中职生,了解他们,找到适合他们的教学方法,让他们爱上计算机课。本文带着大家上一节适合中职生的计算机课,希望对计算机老师有所启发。
一、驰名商标是反淡化保护的对象美国是反淡化保护体系确立较早,也较为完善的国家之一.禁止淡化一直是美国多数州保护驰名商标的主要途径,许多州也有成文的淡化法,但效力仅及
语文教学中,教师要关注学生语言表达的体验与训练,重视思辨精神的培养;要取"拙"补"巧",不仅要研究教学设计的"巧",更要注重引导学生阅读和积累;要舍去浮躁的心态,关注学生长
小学五年级的数学作业情况调查表明,学生作业低效的现象十分普遍。数学作业成了“负担、累赘”的代名词。对此,我们追根溯源,寻找作业低效的症结所在,并以“错题本”为载体从
近日,一则关于某平台外卖员送餐时猝死的新闻被曝出,令人惊讶的是往日身着平台配送服的外卖小哥却因“无劳动关系”只获得平台人道主义2000元的补偿款,这也引发对外卖骑手群
为了比较圆弧齿线圆柱齿轮与传统齿轮传动性能的优劣,根据ZQA50型渐开线斜齿轮减速器结构参数,对圆弧齿线圆柱齿轮减速器进行了结构设计,并建立了ZQA50型渐开线斜齿轮减速器
分析了PDS-732A系列数字式无功电压自动调节装置采用两种调节方式在35kV~220kV变电站的应用,及无功电压自动调节实现方式软件模式、装设独立VQC装置的比较.
会计信息信誉危机近年来变成一种普遍现象,没有人清楚究竟有多少公司在会计账簿上做手脚,只有在公司丑闻败露、报表重编或是被分析师和媒体质疑时,投资者才会知道真相.所以今
二战后,亚太地区的经济合作开始形成,成立了许多重要的经济合作组织和机构,如1947年成立的联合国亚太经社会(ECCAP),1967年成立的太平洋盆地经济理事会(PBEC),1980年成立的太
模糊测试技术(Fuzzing)是一种广泛应用于漏洞扫描的测试技术。然而,模糊测试技术在生成测试用例的过程中存在着较大的随机性和盲目性。定向灰盒Fuzzing技术是一种专注于定位到程序中指定目标位置的漏洞检测技术,它在检测能力(可能遗漏重要缺陷)和测试效率方面面临着巨大的挑战。目前定向灰盒Fuzzing技术存在两个挑战:(1)功率调度的不公平性;(2)路径探索的不全面性。定向灰盒模糊器AFLGo通过