OVAL定义文件以为根元素,包含definitions、tests、objects、states四类核心模块,通过ID引用形成“定义→测试→对象/状态”的依赖链,强调可重用性与平台无关性。

1. 根元素与命名空间声明
所有OVAL定义文件以
xsi:schemaLocation="http://oval.mitre.org/XMLSchema/oval-definitions-5
https://oval.mitre.org/language/version5.11/oval-definitions-schema.xsd">
2. 四类核心定义块(按功能分组)
OVAL定义文件主体包含四个平行的顶级子元素,各自容纳一类实体:
-
:存放漏洞、合规、入侵等高层逻辑判断单元(即“OVAL Definition”),每个含一个 表达式树 -
:定义具体检测行为(如“检查注册表值是否等于X”),每项引用一个 和零或多个 -
:声明待检查的目标资源(如文件路径、Windows服务名、RPM包名),含平台相关字段(如 或) -
:定义期望的资源状态(如文件版本应 ≥ 1.2.3,或服务状态应为 “running”)
注:OVAL 5.x 还支持 块(用于参数化值)和 (供外部注入),但非必需。
3. 典型定义依赖关系(自上而下引用)
一个完整的漏洞检测逻辑遵循严格引用链,不可循环:
- 一个
(id="oval:org.example:def:1") → 引用一个ID - 该
(id="oval:org.example:tst:1") → 引用一个ID 和零至多个ID - 该
(id="oval:org.example:obj:1") → 描述目标(如)C:\windows\system32\calc.exe - 该
(id="oval:org.example:ste:1") → 描述期望值(如)10.0.19041.1
4. 简化示例片段(Windows漏洞检测节选)
check_existence="at_least_one_exists"
comment="Check calc.exe version">
id 和 version 属性(用于变更追踪)。实际使用中,多数OVAL内容由工具(如SCAP Content Repository、OpenSCAP)生成或验证,手写需严格校验schema。










