LoginSignup
4
2

More than 5 years have passed since last update.

WidnowsでOVAL情報を使おう

Last updated at Posted at 2018-09-10

某所のブログ用に記事を書きましたが、無言でrejectされていたので、一部改変版をこちらで公開します。
; 採用しないならその旨を言って欲しい。

そもそもOVALとは

OVALとは「セキュリティ検査言語」と呼ばれる、コンピュータのセキュリティ設定状況を検査するための言語です。ベンダごとに異なりますが、自動で脆弱性を検査するための情報が記載されています。

  • Open Vulnerability Assessment Language
  • セキュリティ設定共通化手順(SCAP: Security Content Automation Protocol)で定義された、XMLベースで機械的に処理が可能な、脆弱性検査用の言語
  • OVALを用いてコンピュータをスキャンすることで、脆弱性の 対応済み/未対応 を検査することが可能
  • 以前はMITRE社が管理していたが、今はCenter for Internet Security(CIS)社に移管されている

OVALのデータは、CIS社で公開されています。

  • OVALのダウンロード
  • OVALのスキーマは、3種類
    • v5.11.2, v5.11.1 の v5.11系
    • v5.10 系
    • すべて 条件付きながら、商用でも利用可能
  • Platformごとに、OVALデータが存在します
    • Linuxのディストリビューション、Windows OSのバージョン、Cisco asa/ios/ios-xe/pix, Vmware esx各バージョン、など
    • 自分が必要なPlatformのOVALのみをダウンロードして利用可能

OVALは、SCAPと呼ばれる「セキュリティ設定共通化手順(Security Content Automation Protocol)」の中の標準仕様の一つです。SCAPは、情報セキュリティ対策の自動化/標準化を目指したもので、機械的に処理ができることを目指したものです。同様に定義されている仕様で有名なものは、以下のものがあります。

  • CVE:共通脆弱性識別子
  • CPE:共通プラットフォーム一覧
  • CVSS:共通脆弱性評価システム
    • OVALついては、今後のテックブログで情報を共有できたらと思います。

このOVAL情報、Windowsも(一応)検査することができるので、そちらをご紹介したいと思います。

Windowsで使えるOVALインタープリタ

OVALで脆弱性を検査するためには、インタープリタと呼ばれる、OVALを解釈して検査するプログラムが必要になります。
現状で利用できるものは以下の3種類のようです。

  • OVALdi
    • オープンな、OVALインタプリターのリファレンス実装です。
    • zipを回答するだけで実行ファイルが出てくるため、一番簡単に利用できます。
    • 最終更新が2014年と古く、少し問題がある
      • 英語版以外のWindowsだと、スキャン結果に問題がある可能性があるようだ。
      • 古めのOVALスキーマしか使えない(後述)
  • jOVAL
    • GPL v2.1で配布されています
    • javaが必要になるようです。スキャンのためにjavaを入れるのは、ちょっとハードルが高いかもしれません。
  • OpenSCAP
    • SCAPのオープンな実装です
    • Linux関連では、パッケージとして配布されているので、簡単に利用可能です
      • yum install openscap-scannerapt-get install libopenscap8などで導入可能
    • mingw32を使ったクロスコンパイルをすることでOVALスキャンができる、らしいです。
      • 私は1週間ほど試していますが…クロスコンパイルができません。
    • Windowsで使うには、難易度が高いようです。

今回は OVALdi を使ってみます。

試してみる

OVALでスキャンするまでの流れは、以下のとおりです。

  • OVALdiをインストールする
    • (OVALdiに必要な)Microsoft Visulal C++ 2010 再配布版をインストールする
  • Windows用OVALをダウンロードする
  • OVALdiでスキャンする
  • OVALでのスキャン結果を確認する

OVALdiをインストールする

OVALdiのサイトから、一番新しそうなインストーラをダウンロードしインストールします。

  • ovaldi-5.10.1.7-x64-setup.exe か ovaldi-5.10.1.7-setup.exe
  • このファイルを実行するとWiZipの解凍画面となるので、デフォルトのまま Unzip をする
    • C:/Program Files/OVAL/ovaldi-5.10.1.7-x64に解凍される
    • このまま実行すると、MSVCR100.dllがない、としてエラーになる

ovaldi-unzip.png

OVALdiが必要とする「Microsoft C++ 2010 再配布版」をインストールします。

  • Microsoftのサイト(x86x64がある)でダウンロードする
  • ダウンロードしたファイルを実行し、インストールする

これで実行環境の準備は完了しました。

Windows用OVALをダウンロードする

CISのサイトから、利用するWindows OSに対応したOVALファイルをダウンロードします。

  • ダウンロードサイトを開く
  • "Click an OVAL version and class.."部分のVersions下で、 v5.10 を選択する
    • OVALdiはv5.10までしか解釈できません。デフォルトではv5.11.2のOVALが選択されているので、注意が必要です。
      • WindowsServer2012R2の場合、"microsoft_windows_server_2012_r2.xml"というファイル名になります。
  • ダウンロードしたファイルを、OVALdiと同じディレクトリに配置する
    • C:/Program Files/OVAL/ovaldi-5.10.1.7-x64等に移動させます。

oval-download.png

OVALdiでスキャンする

コマンドプロンプトを起動し、スキャンを行います。

  • コマンドプロンプトを開く
    • 管理者権限は不要です
  • OVALdiのディレクトリに移動する
  • OVALdiでスキャンを行う
    • ovaldi -m -o <OVALのXMLフィアル名>を実行します
    • MSVCR100.dllがない旨のエラーが出ている場合、MS VC++ 再配布版のインストールが行われてないので、インストールをしてください
    • スキャンは5-10分ほどかかります

ovaldi-scan.png

無事にスキャンが終わると、カレントディレクトリに以下のファイルが生成されます。

  • results.html
  • results.xml

自動処理するなら、xmlを使ってください。

OVALでのスキャン結果を確認する

今回は、結果のHTMLファイルを見てみましょう。
WindwosServer2012R2で、全くアップデートをしていないものをスキャンしました。

result-html-berfore.png

おおよそ以下のような内容になっています。

  • ID
    • OVALで定義している、脆弱性エントリ(見る必要はない)
  • Result
    • 脆弱性があったかのフラグ
    • trueは脆弱性が 残っている 状態
  • Class
    • 対象の分類、のようだ
    • 脆弱性検査はvulnerability、アプリケーションやOSの同定はinventory、となっている
  • Reference ID
    • 該当するIDを表示
    • vulnerabilityの場合は CVE、inventoryの場合は CPEの表示、となっている
  • Title
    • 概要の表示
    • WindowsのOVALの場合は、脆弱性の内容が記載されている
      • Internet Explorer Memory Corruption Vulnerability - CVE-2014-1765 (MS14-037)など

OVAL内容にはOracle JavaやMicrosoft Officeも含まれているため、対象のアプリケーションがインストールされていると、それを検知することができます。

この記事書いている時点でのOVAL情報だと、OVAL上には6615件のテストが書いてあるようです。

色々使ってみましたが、HTML表示を見る限り、サマリは正しいが 詳細行が正しくない、という状況が発生するようです。

  • OVAL Results Generator Information の総数は正しい
  • OVAL Sytem Characteristics Generator Information のテーブルが、数が足りない/Result:trueが消える?事があるようだ

結論

OVAL情報でのスキャンは、WSUSやWindowsUpdateと異なり、CVEベースでの残存脆弱性を確認することができます。
しかしながらOVALインタープリタの選択肢が少なく、少なくともOVALdiは日本語環境のWindowsでは正常でない「場合」もあるようです。

OVALを使うことで、既存のWSUSでの「適用管理」以外のセカンドオピニオンとして、Windowsでの「残存脆弱性管理」ができそうです。但し、OVALインタープリタを選ぶ必要がありそうなのすが、一応は OVALdiも利用できそうかと思います。

また、WindwosもCVEベースの脆弱性管理ができると、他のLinux等の脆弱性管理ツールとまとめて管理ができるようになる可能性があるので、今後もう少し調べていこうかと思います。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2