[论文解读] On the Use of Fine-grained Vulnerable Code Statements for Software Vulnerability Assessment Models
本文提出一种基于机器学习的方法,通过细粒度的脆弱代码语句及其上下文,在函数级别评估软件漏洞(SV)严重性。结果表明,尽管脆弱语句的代码量小5.8倍,其在预测CVSS指标时的马修斯相关系数(MCC)仍比非脆弱语句高出7.5%–114.5%;结合上下文后,模型性能提升至MCC 0.64和F1值0.75,为函数级漏洞严重性评估建立了强有力的基线。
Many studies have developed Machine Learning (ML) approaches to detect Software Vulnerabilities (SVs) in functions and fine-grained code statements that cause such SVs. However, there is little work on leveraging such detection outputs for data-driven SV assessment to give information about exploitability, impact, and severity of SVs. The information is important to understand SVs and prioritize their fixing. Using large-scale data from 1,782 functions of 429 SVs in 200 real-world projects, we investigate ML models for automating function-level SV assessment tasks, i.e., predicting seven Common Vulnerability Scoring System (CVSS) metrics. We particularly study the value and use of vulnerable statements as inputs for developing the assessment models because SVs in functions are originated in these statements. We show that vulnerable statements are 5.8 times smaller in size, yet exhibit 7.5-114.5% stronger assessment performance (Matthews Correlation Coefficient (MCC)) than non-vulnerable statements. Incorporating context of vulnerable statements further increases the performance by up to 8.9% (0.64 MCC and 0.75 F1-Score). Overall, we provide the initial yet promising ML-based baselines for function-level SV assessment, paving the way for further research in this direction.
研究动机与目标
- 为解决CVSS指标在NVD报告中发布延迟的问题,这些报告通常在漏洞修复后146天才发布。
- 探究细粒度的脆弱代码语句及其上下文是否能提升函数级软件漏洞(SV)评估效果。
- 开发数据驱动模型,直接从代码预测七个CVSS指标(如访问向量、严重性等),实现修复优先级的早期确定。
- 评估脆弱代码行与非脆弱代码行在预测SV评估指标方面的相对有效性。
- 基于真实世界、多样化的Java项目,建立强大且可复用的函数级SV评估基线。
提出的方法
- 本研究使用来自200个真实Java项目的429个漏洞中的1,782个函数,数据来自公开代码库。
- 利用现有的细粒度SV检测方法识别脆弱语句,并保留其周围的代码上下文。
- 应用多种特征提取技术(如代码嵌入、语法特征)处理脆弱语句和非脆弱代码行。
- 训练多种机器学习分类器(如随机森林、XGBoost)以预测七个CVSS指标:访问向量、访问复杂度、认证需求、机密性、完整性、可用性及严重性。
- 采用马修斯相关系数(MCC)和F1值评估性能,并通过Wilcoxon符号秩检验验证统计显著性。
- 模型将脆弱语句与函数内其他所有代码行结合,以评估上下文对预测性能的影响。

实验结果
研究问题
- RQ1与非脆弱语句相比,细粒度脆弱语句在预测软件漏洞CVSS指标方面的有效性如何?
- RQ2在脆弱语句周围引入代码上下文,能在多大程度上提升函数级漏洞评估模型的性能?
- RQ3基于代码级输入训练的机器学习模型,能否在漏洞报告发布前实现高精度预测CVSS指标?
- RQ4脆弱语句的代码规模与非脆弱代码行相比如何?这种差异是否影响其预测能力?
- RQ5所提出模型在多样化的真实世界软件项目中的泛化能力如何?
主要发现
- 脆弱语句的代码行数仅为非脆弱语句的5.8倍小,但在预测CVSS指标时,其马修斯相关系数(MCC)仍高出7.5%–114.5%。
- 在脆弱语句周围整合上下文信息,可使模型性能最高提升8.9%,达到峰值MCC 0.64和F1值0.75。
- 仅使用脆弱语句即可在MCC上优于非脆弱语句7.4%–114.5%,在F1值上优于5.5%–43.6%,表明其具有高度的预测相关性。
- 研究结果在统计上显著(p值 < 0.01),且效应量非可忽略,证实了在多个指标上的稳健性。
- 所提出的模型即使在不同领域和规模的真实世界Java项目上训练,也表现出强大性能,表明其具有实际应用潜力。
- 本研究公开发布了数据集和训练好的模型,以支持在其他编程语言和应用场景中的复用与扩展。

更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。