摘要
开源代码托管平台为软件开发行业带来了活力和机遇,但存在诸多安全隐患。开源代码的不规范性、项目依赖库的复杂性、漏洞披露平台收集漏洞的被动性等问题都影响着开源项目及引入开源组件的闭源项目的安全,大部分漏洞修复行为无法及时被察觉和识别,进而将各类项目的安全风险直接暴露给攻击者。为了全面且及时地发现开源项目中的漏洞修复行为,设计并实现了基于项目版本差异性的漏洞识别系统—VpatchFinder。系统自动获取开源项目中的更新代码及内容数据,对更新前后代码和文本描述信息进行提取分析。提出了基于安全行为与代码特征的差异性特征,提取了包括项目注释信息特征组、页面统计特征组、代码统计特征组以及漏洞类型特征组的共 40 个特征构建特征集,采用随机森林算法来训练可识别漏洞的分类器。通过真实漏洞数据进行测试,VpatchFinder 的精确率为 84.35%,准确率为 85.46%,召回率为85.09%,优于其他常见的机器学习算法模型。进一步通过整理的历年部分开源软件 CVE 漏洞数据进行实验,其结果表明 68.07%的软件漏洞能够提前被 VpatchFinder 发现。该研究结果可以为软件安全架构设计、开发及成分分析等领域提供有效技术支撑。
关键词: 漏洞识别 ; 开源平台 ; 安全修复 ; 机器学习
0 引言
《2021 年开源软件供应链安全风险研究报告》显示,自2015年起开源组件中漏洞数逐年递增,其中 2020 年报告的开源代码漏洞数量环比2019年增长近40%。漏洞数量激增的同时,缺乏有效的漏洞识别措施和全面的漏洞信息收集渠道是目前较为严重的问题。对开发者而言,项目引入的开源组件是否存在漏洞对项目整体的安全性至关重要,当开源组件发布一个漏洞修复后,引用者可能仍使用着包含漏洞的旧版本。虽然有如Dependabot