1. 前言
NVD(National Vulnerability Database)是美国*基于标准的漏洞管理数据存储库,使用安全内容自动化协议(SCAP)表示。 此数据可实现漏洞管理,安全性度量和合规性的自动化。 NVD包括安全检查表参考,与安全相关的软件漏洞,配置错误,产品名称和影响指标的数据库。汽车信息安全的脆弱性管理要求评估信息安全事件及报告产品开发过程中脆弱性分析结果。
官方提供的NVD为JSON格式,不适合作为汽车信息安全脆弱性分析的成果物(如,Excel格式,并且追加组织或产品级的分析结果)。本文的目的是提供一个方法,能够将JSON的树状结构转换为Excel的二维表。
2. NVD介绍
NVD可以从NVD的官网上下载:https://nvd.nist.gov/vuln/data-feeds。下载的文件格式为压缩包,下载链接如下图所示:
下载的文件解压后为json扩展名的数据库文件,可以用任意的文本编辑器打开,可以看到如下的内容:
其中前5项是当前的数据库基于的CVE数据基本信息,从CVE_Items开始,每一个"cve"对象,就是一个已知的脆弱性条目。cve对象的属性包括当前条目的来源:
影响分析及cvssV2/cvssV3的评级等:
本文的目的就是将这些关键的脆弱性分析信息展开为Excel格式,用于后续的脆弱性管理流程。
3 Excel导入方法
Office 2019提供了导入JSON的方法,Ribbon Data->Get Data->From File->From JSON(如果是Office 2013,需要安装Power Query插件,该插件可以在Microsoft网站免费下载,安装后通过Power Query Ribbon进入相同的流程):
导入后的JSON基本信息已经列到了下面的窗口中:
基于CVE_Items列表对应JSON文件中的"cve"所有的条目,点击List,会进入到一张各个条目的表,列出了某个记录的概要信息,如:
点击impact,可以进入脆弱性评价指标页:
点击baseMetricV3对应的Record,可以看到基于cvssV3的可利用度及影响程度评分:
点击cvssV3对应的Record,可以看到攻击向量、攻击复杂度及其它一些指示:
点击屏幕右侧的Source,可以回到根结点:
基于这种树状的查询,可以很容易的在JSON的各个对象间浏览,查看其属性信息,但不便于管理和统计,下一节我们进行2维表的生成。
4 JSON转化为2维表
由于NVD中的记录都是内聚的,每条记录中都保存了完整的描述信息,因此我们只需要通过简单的点击就可以生成我们想要的2维结构(某些JSON使用的记录方式类似于关系型数据库的表结构,因此需要使用join操作)。
首先我们先进入到CVE_Items的列表中:
点击左上方的To Table,使用默认选项:
得到如下的数据视图:
点击Column1后面的展开按钮,可以得到列信息的选择项:
我们关注cve记录的ID,description,vectorString,exploitabilityScore,impactScore和publishData几个字段,这些字段分布在不同的数据结构中,因此我们逐级选择对应的字段显示。在当前级别,选择如下:
得到类似下面的表:
再根据需要点击展开按钮:
得到类似如下的2维表:
继续根据相应的字段选择,可以得到如下的2维表:
这个表中在description_data中多出了一个List的记录,这是因为个别的记录中有多个条目导致的,我们点击description_data后的展开按钮,选择Expend to New Row,展开这个字段:
选择其中的value字段:
这样我们就得到了我们以我们关注的内容为字段的的2020年的最新的脆弱性数据库:
这时这个还不是Excel表的结构,我们需要点击左上角的Close & Load,把查询到的数据导入到Excel表中:
基于这张表,我们就可以进行后续的脆弱性管理操作了。