中文

探索 Python 中的安全提交

密码学与安全 2023-07-25 v1 软件工程

摘要

Python 因其对初学者友好而成为最流行的编程语言。然而,最近的一项研究发现,Python 中的大多数安全问题未被 CVE 收录,可能仅通过“静默”安全提交进行修复,这对软件安全构成威胁并阻碍下游软件的安全修复。识别隐藏的安全提交至关重要;然而,由于数据多样性有限、代码语义不全面以及学习到的特征不可解释,现有的数据集和方法不足以用于 Python 中的安全提交检测。在本文中,我们构建了 Python 中首个安全提交数据集,即 PySecDB,其包含三个子集:基础数据集、试点数据集和增强数据集。基础数据集包含由 MITRE 提供的与 CVE 记录关联的安全提交。为增加安全提交的多样性,我们通过筛选提交信息中的关键词从 GitHub 构建试点数据集。由于并非所有提交都提供提交信息,我们进一步通过理解代码变更的语义来构建增强数据集。为构建增强数据集,我们提出了一种名为 CommitCPG 的新图表示方法和一种名为 SCOPY 的多属性图学习模型,通过顺序与结构化的代码语义来识别安全提交候选。评估表明,我们提出的算法可将数据收集效率提高至多 40 个百分点。经三位安全专家人工验证后,PySecDB 包含 1,258 个安全提交和 2,791 个非安全提交。此外,我们对 PySecDB 进行了广泛的案例研究,发现了四种常见的安全修复模式,覆盖了 Python 中超过 85% 的安全提交,为安全软件维护、漏洞检测和自动化程序修复提供了见解。

关键词

引用

@article{arxiv.2307.11853,
  title  = {Exploring Security Commits in Python},
  author = {Shiyu Sun and Shu Wang and Xinda Wang and Yunlong Xing and Elisa Zhang and Kun Sun},
  journal= {arXiv preprint arXiv:2307.11853},
  year   = {2023}
}

备注

Accepted to 2023 IEEE International Conference on Software Maintenance and Evolution (ICSME)