Notes | A large-Scale Empirical Study of Security Patches

此文为笔者简单的论文笔记,仅供浏览学习,请不要置以其余任何用途

Introduction

  • 对安全补丁进行大规模的实证研究,调查了影响682个开源软件项目的3000多个漏洞的4000多个漏洞修复
  • 数据集来自NVD的漏洞条目、从相关外部引用、受影响的软件库、相关的安全修复程序中提取的信息
  • 对补丁开发生命周期进行深入分析,包括漏洞生命周期、安全修复的时效性,以及开发人员生成安全可靠的安全补丁的(可靠)程度
  • security patches 与non-security patches的对比特征
  • 不同类型补丁的复杂性及其对code base的影响

Data Resource

  • 数据来源:NVD、外部链接、受影响的软件库、相关的安全修复程序

  • 调查对象: 682个开源项目 —— 3000+ bugs —— 4000+ bug fixes

  • 调查内容:
      a. 漏洞对代码库的影响时长
      b. 补丁开发的时效性
      c. 所开发的修复程序的安全可靠程度(the degree to which developers produce safe and reliable fixes)
      d. security fixes v.s. non-security fixes

   Why NVD?

   (1) public, free, and easily accessible in XML format, allowing for reproducibility and follow-on studies
   (2) expansive, as the NVD aims to catalog all publicly disclosed vulnerabilities across numerous software packages
   (3) manually vetted and curated, which in theory provides more accurate data
   (4) detailed, containing extensive documentation of vulnerabilities (notably external references).

   About NVD: CVE process

    1. 发现漏洞,请求CVE ID(此时漏洞的相关信息尚未公开)
    2. 公开漏洞信息,CVE ID与其详细信息加入CVE list
    3. NVD进一步调查,增加相关信息:链接到外部应用,列举受影响的软件,CWE分类,CVSS评估严重性程度

   Why open-source projects?

Related work

  • 目前已有关于漏洞生命周期的工作以及关注补丁特性的工作大多是在较小的规模上进行的,且未区分不同类型的漏
  • 作者广泛探索了补丁开发动态的新方面,将从漏洞数据库收集到的信息与从软件源代码中显露出来的信息相结合
  • 通过研究大规模超过650个不同的开源项目来得出结论
  • 试图梳理出security patch 和 non-security patch之间的区别,此项之前没有进行过

Data collection methodology

  • Finding pubilc vulnerabities
  • Identifying software repositories & security patches
  • Identifying non-security bug fixes
  • Processing commits
  • Estimating vulnerability public disclosure dates

另,贯穿以上全部过程的验证方法:抽取大约100个样本手工检查

1. Finding Public vulnerabilities

使用 2016/12/25 NVD XML dataset snapshot —— 80,741 CVE vulnerabilities 作为数据集。
在这里插入图片描述

数据收集方法:

  1. 从 NVD 中 有链接到 Git 提交链接的 CVE 中提取漏洞特征
  2. 爬取其他 references ,并获取页面的公布日期来评估公开披露日期
  3. 爬取 Git 提交链接 来识别并克隆Git的源代码库,并获取 security fixes(collected security fixes using the commit hashes in the links)
  4. 用 Git 仓库获取 non-security fixes

2. Identifying software repositories & security patches

  • 通过 CVE 中链接到修复特定存储库提交的 web URL 获取安全补丁、访问源代码库。
  • 重点关注链接到 Git 的URL

Why Git URL?

  • Git是最常用的开源软件版本控制系统,也在CVE 的外部链接中最常见
  • 作者统计URL数据:5700+ “git”子串(不含“digit”子串)、1144个“svn”子串、613个“cvs”子串、347个“hg”或“mercurial” ⇒ Git 相比其余流行的版本控制系统在URL中被包含的更多
  • 进一步验证 URL 与 Git相关:手工随机抽样100个URL,发现只有 2 个不是Git URL

怎么找到Git仓库及security patches?

  • 对包含常见git应用(cgit\Github\GitWeb\Gitlab)的URL进行逆向,其中95%的URL都包含“git”子串
  • 对链接到git界面的但不包含“git”子串的128个URL进行逆向
    (故而由上述两种情况,认为已经识别到了大多数的Git URLs)
  • 对于上述80%的URL(链接到特定提交的URL),爬取web界面摘要/主页并获取Git clone URLs(如
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值