漏洞管理基本概念
漏洞要素
- 漏洞编号 —— 漏洞的唯一编号,如 CVE-2014-0160
- 漏洞详情 —— 包含漏洞标题、漏洞详情、漏洞公开时间、安全建议等
- 等级/评分 —— 描述漏洞的重要程度和影响面,常见描述方式如高、中、低
- 漏洞类别 —— 漏洞的分类,如 SQL 注入、XSS 等
- 影响组件 —— 描述什么组件或者软件受到这个漏洞影响
- PoC/Exp —— 描述漏洞验证脚本和利用方式
e.g. 心脏出血漏洞(Heartbleed)要素整理

(上图可见,同一个漏洞出现了多个漏洞编号、漏洞标题、漏洞等级、等,这不便于漏洞管理!)
SCAP 概念和组件
由于不同人、不同团队,知识面和对漏洞的认知、标准不同,导致同一个漏洞存在不同的漏洞编号、不同的漏洞类别、等级、影响组件。
为了消除上述差异,NIST(美国国家标准与技术研究院)提出 SCAP 项目:
SCAP(Security Content Automation Protocol,安全内容自动化协议) 是 NIST 的一个项目,旨在统一漏洞描述的标准。该协议已被许多软件和硬件制造商广泛采用,作为漏洞管理和治理程序的规范框架,这些程序可以自动化漏洞管理流程,例如配置管理、漏洞管理、系统清单识别、审计等。
SCAP 组件:针对不同场景,行业上涌现不同的规范,这些规范遵循 SCAP 标准,称为 “SCAP 组件”。



SSG
SSG(SCAP Security Guide,SCAP 安全指导) 是一种遵循 SCAP 规范编写的安全策略文件,可将 STIG(Security Technical Implementation Guide,安全技术实施指南) 转换为机器可读格式 (XCCDF)。包含了安全内容的描述、证明过程、加固过程,可以理解为 SCAP 规范的落地文件,被各种主流系统使用。
介绍
- https://www.open-scap.org/security-policies/scap-security-guide/
CVE/CVSS
CVE(Common Vulnerabilities and Exposures,公共漏洞和暴露/公共漏洞和枚举) 是公开披露的网络安全漏洞列表。IT 人员、安全研究人员查阅 CVE 获取漏洞的详细信息,进而根据漏洞评分确定漏洞解决的优先级。
CVE-1999-0067
CVE-2014-10001
CVE-2014-100001
CVSS(Common Vulnerability Scoring System,通用漏洞评估系统) 是广泛应用的漏洞评分开放标准。CVSS 的分值代表漏洞的严重程度,分值范围为 0.0 到 10.0,数字越大漏洞的严重程度越高。CVSS 评分往往是漏洞工具、安全分析工具不可或缺的信息。
CVE 数据库/CVSS 分值查询
CVSS 计算器: https://www.first.org/cvss/calculator/
todo CVSS 计算方式
CPE/CCE
CPE(Common Platform Enumeration,通用平台枚举/通用组件数据集) 描述一个漏洞影响了什么组件的什么版本。(Vulnerable software and versions)
CPE:2.3:类型:厂商:产品:版本:更新版本:发行版本:界面语言:软件发行版本:目标软件:目标硬件:其他

CPE 可以直接用来匹配漏洞是否存在:针对某个环境进行探测组件版本,使用 CPE 进行描述,然后与漏洞影响的 CPE 版本进行匹配,就能直接描述该环境是否受这个漏洞影响。
相关的代码实现有:
- Python | CPE —— 包含有相关匹配、格式化的方法
CPE 数据库:
CPE 官方资料:
CCE(Common Configuration Enumeration,通用配置枚举) 为系统匹配问题提供唯一标识符,一边跨多个信息源和工具快速准确地关联配置数据。 CCE 标识符可以用于将配置评估工具中的检查与配置最佳实现中的语句相关联。
CCE 可以理解为针对基线配置的 CVE 编号:CVE 是针对通用组件漏洞的唯一标识,而 CCE 是针对基线配置的唯一标识。
e.g. CCE-27868-9 描述的是针对 Apache 服务的账号最大过期时间的要求,要求使用一个合适的值。
CCE-27868-9
Definition: The maximum password age setting for Apache’s service account should be configured appropriately.
Parameter: number of days.
Technical Mechanisms: defined by Local or Group Policy
CCE 数据库:
OVAL/XCCDF
OVAL(Open Vulnerability Assessment Language,开放漏洞评估语言) 是一种用来定义检查项、脆弱点(vulnerability)等技术机械的描述语言。通过 OVAL 可以用于分析 Windows、Linux 等各种操作系统的系统状态、漏洞、配置、补丁情况,而且还能用于描述测试报告。 (OVAL 使用标准的 XML 格式内容)
通俗的讲: OVAL 描述了检测系统情况的技术细节!
e.g. 下图描述了在 Ubuntu 12.04 的版本下,如果系统中存在 libssl 1.0.0
这样的 dpkg
包,版本小于 0:1.0.1-4ubuntu5.12
那么就意味着存在心脏出血漏洞。

XCCDF(Extensible Configuration Checklist Description Format,可扩展配置检查清单描述格式) 是一种用来定义安全检查清单、安全配置基线、以及其他类似文档的描述语言。 (XCCDF 使用标准的 XML 格式内容)
通俗的讲: XCCDF 描述了要检查哪些配置项(检查清单,checklist)、如何生成报告
XCCDF 数据库:
- https://ncp.nist.gov/repository
- https://csrc.nist.gov/projects/security-content-automation-protocol/specifications/xccdf
相关信息
简而言之:
- XCCDF 定义检查项清单和如何生成报告
- OVAL 定义每个检查项的实际实施细节
所以在实际的 SCAP 应用中,XCCDF 和 OVAL 往往是成对出现的: 会在 XCCDF 文件中存放 OVAL 内容。另外,在 XCCDF 文件中还会有如 CPE 的描述。
常见名词间关系
上面一系列体系最初都是由 DoD 基于信息安全考虑而建立的。
简单梳理之间关系:
DoD(U.S. Department of Defense,美国国防部) —— 理解为有安全需求的部门
STIG(Security Technical Implementation Guide,安全技术实施指南) —— 理解为安全实施标准
DISA(Defense Information Systems Agency,国防信息系统局) —— 理解为安全实施标准的制作部门
DISA-STIG —— 同上
NIST(National Institute of Standards and Technology,美国国家标准与技术研究院) —— 理解为安全实施标准的研究部门
RMF(Risk Management Framework,风险管理框架) —— NIST 的出版物,为如何有效管理信息安全和隐私风险提供了指导,为组织提供了一种系统的方法来识别、评估、响应和监控与其信息系统和资产相关的风险。
SCAP(Security Content Automation Protocol,安全内容自动化协议) —— 安全实施标准遵从度自动扫描工具的统一协议。遵循统一的协议,便于配置在工具间共享和配置标准合规化。
SSG(SCAP Security Guide,SCAP 安全指导) —— 一种安全策略,可将 STIG(和其他安全准则)转换为机器可读格式 (XCCDF)
DS(Data Stream,数据流) —— 一种 XML 传输格式,常用于包裹 XCCDF 文件。像 ComplianceAsCode 项目用的就是这种格式。(可通过
oscap info ssg-ubuntu2004-ds-1.2.xml
命令查看文件内容)
附件:
- secpod | SCAP repo - https://scaprepo.com/control.jsp?command=home
- nist | Checklist Repository - https://ncp.nist.gov/repository
- github | ComplianceAsCode (基线库:包含 SCAP、Bash、Ansible 和其他格式的安全自动化内容) - https://github.com/ComplianceAsCode/content
参考:
- 通用漏洞管理与 SCAP - https://www.fooying.com/common_vulnerability_management_and_scap/ (⭐⭐⭐)
- atsec | SCAP 标准简介 - https://www.atsec.cn/downloads/documents/SCAP_Standard_introduction_Li.Zhang.pdf (⭐⭐⭐)