檢測結果以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 | 檢測到的風險詳細。 |