8.2.2. OVAL ファイル形式
セキュリティー検査言語 OVAL (Open Vulnerability Assessment Language) は、SCAP に不可欠で最も古いコンポーネントです。OVAL 規格の主な目的は、セキュリティー製品間の相互運用性を有効にすることです。これは、以下の 3 つのドメインを標準化することで実現されます。
- ターゲットシステム設定の表現。
- ターゲットシステムの分析で特定のマシン状態が存在する。
- 指定されたマシンの状態と観察されたマシン状態の比較の結果を報告します。
その他のツールやカスタムスクリプトとは異なり、OVAL 言語は、宣言型でリソースの望ましい状態を記述します。OVAL 言語コードは直接実行されることはありませんが、スキャナー と呼ばれる OVAL インタープリターツールを用いて実行します。OVAL が宣言型であるため、評価されるシステムの状態が誤って変更されません。これは、セキュリティースキャナーが最も高い権限で実行される場合があるためです。
OVAL 仕様は、公開コメントとマーケティングのために開かれており、IT 業界が MITRE に提供され、プロモーションの非プロモーション組織が多数公開されています。OVAL 仕様は継続的に進化し、さまざまな資料はバージョン番号によって区別されます。現在のバージョン 5.10.1 は 2012 年 1 月にリリースされました。
他のすべての SCAP コンポーネントと同様に、OVAL は XML に基づいています。OVAL 標準は、いくつかのドキュメント形式を定義します。これらはそれぞれ異なる種類の情報が含まれ、異なる目的を提供します。
OVAL ドキュメント形式
- OVAL Definitions 形式は、システムスキャンに直接使用される OVAL ファイル形式です。OVAL Definitions ドキュメントでは、ターゲットシステムの望ましい状態を説明します。
- OVAL 変数の形式は、OVAL Definitions ドキュメントの修正に使用される変数を定義します。OVAL 変数のドキュメントは通常、実行時にターゲットシステムのセキュリティーコンテンツを調整するために、OVAL Definitions ドキュメントとともに使用されます。
- OVAL System Characteristics 形式は、評価されるシステムに関する情報を保持します。OVAL System Characteristics ドキュメントは、通常、OVAL Definitions ドキュメントで定義されている期待される状態と比較するために、システムの実際の状態を比較するために使用されます。
- OVAL Results は、システム評価の結果を報告するのに使用される最も包括的な OVAL 形式です。OVAL Results ドキュメントには、一般的に評価される OVAL 定義のコピー、バインドされた OVAL 変数、OVAL システム特性、およびシステムの特性と定義の比較に基づいて計算されるテストの結果が含まれます。
- OVAL Directives 形式は、特定の詳細を含めるまたは除外することで、OVAL Result ドキュメントの冗長性を調整するために使用されます。
- OVAL Common Model 形式には、その他の複数の OVAL スキームで使用されるコンストラクトおよびエミュレーションの定義が含まれています。これは、複数のドキュメントでの重複を避けるために、OVAL 定義を再利用するために使用されます。
OVAL Definitions ドキュメントは、定義、テスト、オブジェクト、状態、変数 の 5 つの基本的なセクションで各要件が定義 されている設定要件のセットで構成されています。define セクション内の要素は、指定の定義を満たすためにテストを実行するかどうかを記述します。test 要素のリンクオブジェクトと状態をまとめます。システム評価中に、指定のオブジェクト要素によって示される評価されたシステムのリソースが指定の state 要素と一致する場合に、テストが渡されるとみなされます。variables セクションは、State セクションから要素を調整するのに使用できる外部変数を定義します。これらのセクション以外には、OVAL Definitions ドキュメントには、通常 ジェネレーター と 署名 セクションが含まれています。generator セクションは、ドキュメントの作成元と、そのコンテンツに関するさまざまな追加情報を保持します。
OVAL ドキュメントの基本セクションの各要素は、以下の形式の識別子によって明確に識別されます。
oval:namespace:type:ID
namespace は識別子を定義する名前空間で、type は定義要素の場合は def、tests 要素の場合は tst、オブジェクト要素の場合は obj、および変数 要素 の場合は var、ID は識別子の整数値になります。
例8.2 OVAL Definitions ドキュメントの例
<?xml version="1.0" encoding="utf-8"?> <oval_definitions xmlns:lin-def="http://oval.mitre.org/XMLSchema/oval-definitions-5#linux" xmlns:oval="http://oval.mitre.org/XMLSchema/oval-common-5" xmlns="http://oval.mitre.org/XMLSchema/oval-definitions-5" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <generator> <oval:product_name>vim</oval:product_name> <oval:schema_version>5.10.1</oval:schema_version> <oval:timestamp>2012-11-22T15:00:00+01:00</oval:timestamp> </generator> <definitions> <definition class="inventory" id="oval:org.open-scap.cpe.rhel:def:6" version="1"> <metadata> <title>Red Hat Enterprise Linux 6</title> <affected family="unix"> <platform>Red Hat Enterprise Linux 6</platform> </affected> <reference ref_id="cpe:/o:redhat:enterprise_linux:6" source="CPE"/> <description> The operating system installed on the system is Red Hat Enterprise Linux 6 </description> </metadata> <criteria> <criterion comment="Red Hat Enterprise Linux 6 is installed" test_ref="oval:org.open-scap.cpe.rhel:tst:6"/> </criteria> </definition> </definitions> <tests> <lin-def:rpminfo_test check_existence="at_least_one_exists" id="oval:org.open-scap.cpe.rhel:tst:6" version="1" check="at least one" comment="redhat-release is version 6"> <lin-def:object object_ref="oval:org.open-scap.cpe.redhat-release:obj:1"/> <lin-def:state state_ref="oval:org.open-scap.cpe.rhel:ste:6"/> </lin-def:rpminfo_test> </tests> <objects> <lin-def:rpmverifyfile_object id="oval:org.open-scap.cpe.redhat-release:obj:1" version="1"> <!-- This object represents rpm package which owns /etc/redhat-release file --> <lin-def:behaviors nolinkto='true' nomd5='true' nosize='true' nouser='true' nogroup='true' nomtime='true' nomode='true' nordev='true' noconfigfiles='true' noghostfiles='true' /> <lin-def:name operation="pattern match"/> <lin-def:epoch operation="pattern match"/> <lin-def:version operation="pattern match"/> <lin-def:release operation="pattern match"/> <lin-def:arch operation="pattern match"/> <lin-def:filepath>/etc/redhat-release</lin-def:filepath> </lin-def:rpmverifyfile_object> </objects> <states> <lin-def:rpminfo_state id="oval:org.open-scap.cpe.rhel:ste:6" version="1"> <lin-def:name operation="pattern match">^redhat-release</lin-def:name> <lin-def:version operation="pattern match">^6[^\d]</lin-def:version> </lin-def:rpminfo_state> </states> </oval_definitions>