检测结果以JSON格式存储,可以分为四部分:固件基本信息、检测结果统计、基础检测风险列表、检测规则的检测结果。本文介绍了各部分内容的详细情况。
检测结果
检测结果总体格式如下:
{
"fwBasicInfo": { //固件基本信息
"fwFileSize": 0,
"arch": "",
"fwSha256": "",
"filesystem": "",
"scanStartTime": 0
},
"riskStatistics": { //检测结果统计
"severityStatistics": [ //风险等级漏洞数统计
{ "name": "严重", "count": 0 },
{ "name": "高危", "count": 0 },
{ "name": "中危", "count": 0 },
{ "name": "低危", "count": 0 },
{ "name": "通告", "count": 0 }
],
"riskBrief": [ //按风险等级及分类统计
{
"risks": [{"riskType": "", "suggestion": "", "count": 0, "description": ""}],
"name": "严重", "count": 0
}
]
},
"risks": [ //检测风险列表
{
"name": "", "code": "", "enCategory": "", "category": "",
"description": "", "suggestion": "",
"vulnInfos": [
{
"severity": "", "filename": "",
"detail": [],
"cve": {}
}
]
}
],
"detectionRuleResult": [ //检测规则(等保2.0)的检测结果
{
"detectionUnitName": "", //控制点
"attackSurface": "", //控制面
"category": "", //分类
"categoryCode": "", //分类Code
"detectionRuleName": "", //合规分级名称,如等保2.0三级
"classification": "", //合规分级Code
"description": "", //描述
"severity": "", //风险等级
"detail": "", //风险详情
"solution": "", //改进建议
"status": "" //合规检测状态。0表示不通过,1表示通过。
}
]
}
固件基本信息
基本信息的key为fwBasicInfo,类型为JSONObject。格式为:
"fwBasicInfo": {
"fwFileSize": 0,
"arch": "",
"fwSha256": "",
"filesystem": "",
"scanStartTime": 0
}
字段定义参考:
字段名 | 类型 | 说明 |
fwFileSize | long | 固件文件大小。 |
arch | String | 固件的CPU体系。 |
fwSha256 | String | 固件文件的SHA256。 |
filesystem | String | 固件的文件系统。 |
scanStartTime | Date | 检测时间。 |
检测结果统计
检测结果统计的key为riskStatistics,类型为JSONObject。格式为:
"riskStatistics": {
"severityStatistics": [ //风险等级漏洞数统计
{ "name": "严重", "count": 0 },
{ "name": "高危", "count": 0 },
{ "name": "中危", "count": 0 },
{ "name": "低危", "count": 0 },
{ "name": "通告", "count": 0 }
],
"riskBrief": [ //按风险等级及分类统计
{
"risks": [{"riskType": "", "suggestion": "", "count": 0, "description": ""}],
"name": "严重", "count": 0
}
]
}
检测结果统计分为2部分:
风险等级漏洞数统计。
按风险等级统计的当前固件风险结果,风险等级分为严重、高危、中危、低危和通告。
key为severityStatistics,类型为JSONArray,每个item格式为:
字段名
类型
说明
name
String
风险等级名。
count
int
风险数量。
按风险等级及分类统计。
按风险等级及分类统计的当前固件风险结果,每个风险等级下检测到了哪些风险类型及风险数量等。
key为riskBrief,类型为JSONArray,每个item格式为:
字段名
类型
说明
name
String
风险等级名。
count
int
风险数量。
risks
JSONArray
风险列表。
其中risks格式为:
字段名
类型
说明
riskType
String
风险类型名。
count
int
风险数量。
description
String
风险描述。
suggestion
String
描述修复紧急程度。
基础检测风险列表
基础检测风险列表的key为risks,类型为JSONArray,格式如下:
"risks": [
{
"name": "",
"code": "",
"enCategory": "",
"category": "",
"description": "",
"suggestion": "",
"vulnInfos": [
{
"severity": "", "filename": "",
"detail": [],
"cve": {}
}
]
}
]
字段定义如下:
字段 | 类型 | 描述 |
nameS | String | 风险类型中文名称。 |
code | String | 风险类型英文名称或风险类型代码。 |
category | String | 风险类型分组中文名称。 |
enCategory | String | 风险类型分组英文名称。 |
description | String | 风险描述。 |
suggestion | String | 修复建议。 |
vulnInfos | JSONArray<VulnInfo> | 风险详细情况列表。 |
其中vulnInfos定义如下:
字段 | 类型 | 描述 |
filename | String | 受影响的文件名。 |
severity | String | 风险安全等级。 |
detail | JSONArray | 风险详细描述,详细结构件下文“1.detail字段”。 |
cve | JSONObject | CVE漏洞列表,详细结构见下文“2.cve字段”。 说明 只有当前分组为CVE漏洞(CveVuln),该字段才有效。 |
detail字段
保存检测到的非CVE漏洞的详细信息,定义如下:
字段
类型
描述
cnName
String
详细信息的中文描述名。
enName
String
详细信息的英文描述名。
value
JSONArray<String>
风险详细信息,以JSONArray<String>存储。
cve字段
字段
类型
描述
cveId
String
CVE漏洞标识。
cweId
String
CVE漏洞类型标识。
impact
JSONObject
orString为攻击向量、severity为风险等级。
cpe
JSONObject
为Common Platform Enumeration的缩写,描述软硬件产品的唯一标识符。参考下面的cpe结构说明。
description
String
漏洞描述信息。
references
JSONArray<JSONObject>
参考信息。其中referenceType为参考类型,referenceSource为参考源,referenceUrl为参考链接地址。
cpe结构示例如下:
"cpe": { "cpeName": "", "cpeType": "", "allFixedVersion": { "expression": "", "version": "" }, "highCriticalFixedVersion": { "expression": "", "version": "" } }
字段
描述
cpeName
cpe名称。
cpeType
cpe类型。
allFixedVersion
表示修复当前版本所有漏洞所需要升级到的版本。
expression表示version包含关系,如果为“>”表示需要升级到大于version的版本;如果为”≥“表示需要升级到大于或等于version的版本。如果version为"",表示目前还没有可用的修复版本号。
version表示版本号。
highCriticalFixedVersion
表示修复当前版本中严重、高危漏洞所需要升级到的版本。
expression表示version包含关系,如果为“>”表示需要升级到大于version的版本;如果为”≥“表示需要升级到大于或等于version的版本。如果version为"",表示目前还没有可用的修复版本号。
version表示版本号。
检测规则的检测结果
检测结果统计的key为detectionRuleResult,类型为JSONArray,格式如下:
"detectionRuleResult": [ //检测规则(等保2.0)的检测结果
{
"detectionUnitName": "", //控制点
"attackSurface": "", //控制面
"category": "", //分类
"categoryCode": "", //分类Code
"detectionRuleName": "", //合规分级名称,如等保2.0三级
"classification": "", //合规分级Code
"description": "", //描述
"severity": "", //风险等级
"detail": "", //风险详情
"solution": "", //改进建议
"status": "" //合规检测状态。0表示不通过,1表示通过。
}
]
字段定义如下:
字段 | 类型 | 描述 |
detectionUnitName | String | 控制点。 |
attackSurface | String | 控制面。 |
category | String | 分类。 |
categoryCode | String | 分类Code。 |
detectionRuleName | String | 合规分级名称,如等保2.0三级。 |
classification | String | 合规分级Code。 |
description | String | 描述。 |
severity | String | 风险等级。 |
detail | String | 风险详情,为JSON字符串。 |
solution | String | 改进建议。 |
status | String | 合规检测状态。0表示不通过,1表示通过。 |
其中detail字段为JSON字符串,可解析为JSON数组,数组每个成员结构为:
字段 | 类型 | 描述 |
riskName | String | 检测到的风险名称。 |
filename | String | 受影响文件。 |
riskDetail | String | 检测到的风险详细。 |