这篇文档介绍了如何解析FSS的检测结果,检测结果以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": {}
                }
            ]
        }
    ]
}

固件基本信息

基本信息的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部分:

1)风险等级漏洞数统计:按风险等级统计的当前固件风险结果,风险等级分为严重、高危、中危、低危和通告。key为severityStatistics,类型为JSONArray,每个item格式为:

字段名 类型 说明
name String 风险等级名
count int 风险数量

2)按风险等级及分类统计:按风险等级及分类统计的当前固件风险结果,每个风险等级下检测到了哪些风险类型及风险数量等。 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": {}
                }
            ]
        }
    ]

字段定义如下:

字段 类型 描述
name String 风险类型中文名称
code String 风险类型英文名称或风险类型代码
category String 风险类型分组中文名称
enCategory String 风险类型分组英文名称
description String 风险描述
suggestion String 修复建议
vulnInfos JSONArray<VulnInfo> 风险详细情况列表

VulnInfo定义如下:

字段 类型 描述
filename String 受影响的文件名
severity String 风险安全等级
detail JSONArray 风险详细描述,不同风险描述也不相同
cve JSONObject CVE漏洞列表,只有当前分组为CVE漏洞(CveVuln),该字段才有效。

detail字段,保存检测到的非CVE漏洞的详细信息,定义如下:

字段 类型 描述
cnName String 详细信息的中文描述名
enName String 详细信息的英文描述名
value JSONArray<String> 风险详细信息,以JSONArray<String>存储。

cve字段,保存检测到的CVE漏洞的详细信息,定义如下:

字段 类型 描述
cveId String CVE漏洞标识
cweId String CVE漏洞类型标识
impact JSONObject 定义漏洞攻击向量、风险等级等。优先使用cvssV3,其中vectorString为攻击向量、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为修复当前版本所有漏洞,需要升级到的版本建议。其中version表示版本号,expression表示version包含关系,如果为“>”表示需要升级到在大于version的版本;如果为”>=“表示需要升级到在大于或等于version的版本。

如果version为空,表示目前还没有可用的修复版本号。highCriticalFixedVersion,为修复当前版本中严重、高危漏洞,需要升级到的版本建议。