论文部分内容阅读
随着信息科学技术的发展和软件需求的大规模扩张,软件开发的难度和时效性要求越来越高,软件复用技术应用而生。开发人员可以通过引用的方式使用他人开发的组件,也可以将自己研发的软件放到公开网站上,这样做不仅可以利用开源社区资源快速地实现软件功能,而且减少了重复开发带来的无效劳动。但是,这种方式也带来了新的安全问题,攻击者可以利用软件供应链对目标软件进行攻击,例如在公开的软件组件库中更换带有后门或病毒的组件,开发人员一旦使用它们便会引入新的安全风险。由于软件供应链攻击成本低且效果好,针对软件供应链的攻击日渐猖獗。目前,传统的针对软件安全的研究主要围绕开发人员在开发过程中产生的安全问题展开,未对第三方库引入的供应链漏洞进行检测。为此,本课题设计并实现了基于知识图谱的软件供应链漏洞检测系统。本课题以美国国家漏洞数据库中公开漏洞和相关的组件数据作为核心数据,通过采集主流供应链软件依赖组件和依赖关系,构造了一个以漏洞数据为核心的组件-漏洞知识图谱,并基于该知识图谱检测软件供应链漏洞。与其他漏洞检测技术相比,该系统能够有效地对第三方库引入的漏洞进行检测。除此之外,该系统还能够对待测软件供应链进行完整复原,有助于开发人员透视软件深层次依赖关系。本课题从功能和性能两方面对实现系统进行了详细测试,功能方面,本课题收集并处理了 1.4万条漏洞信息和1.2万条组件信息,实现了组件-漏洞知识图谱的构建和软件供应链的漏洞检测功能;在性能方面,该工具在测试数据上实现了 85%的准确率,验证了软件供应链漏洞的检测能力,同时对出现误报的原因进行了分析并展望了该技术未来的发展方向。