SCAP on Windows

某所でSCAPの話をしたので、概要を置いておきます。

- WidnowsでSCAPを使う場合、OpenSCAPをクロスコンパイルしよう
- OVALスキャンだけであれば、既存のツールも使えないことはない。

-----
# 概要

- SCAPとは
- WindowsでのSCAP適用
- 利用する
- 終わりに


Winodwsではどこまで(OSSで)SCAPは使えるのか、もっと流行ってよ！、という話です。

-----
# SCAPとは

-----
## SCAPとは

SCAP: Security Content Automation Protocol

- 2002年の連邦セキュリティマネジメント法(FISMA)で、「全情報システムにセキュリティ要求事項を反映する」ことが必須になる
    - これを自動化するために開発された仕組み
- NISTで開発された、情報セキュリティ対策の **`自動化と標準のための手順`**
    - ソフトウェアの欠陥、製品名、構成の欠陥の列挙
    - システムを検査し、脆弱性の有無を判別
    - 検査結果を評価する仕組み

-----
## SCAPとは：標準仕様
SCAPは **`6つの標準仕様`** から構成される。

- CVE: 共通脆弱性識別子
- CCE: 共通セキュリティ設定一覧
- CPE: 共通プラットフォーム一覧
- CVSS: 共通脆弱性評価システム
- XCCDF: 拡張可能な設定チェックリスト記述形式
- OVAL: 公開された脆弱性と評価のための言語

-----
## SCAPとは：例)CVE
CVE

- CVE-2017-0144
    - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-0144
        - Description
            - `攻撃者が特別に細工されたメッセージを Microsoft Server Message Block 1.0 (SMBv1) サーバーに送信すると、リモートでコードが実行される`
    - **Wannacry で使われた脆弱性**
- CVE-2014-0160
    - https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2014-0160
        - Descripton
            - `The (1) TLS and (2) DTLS implementations in OpenSSL 1.0.1 before 1.0.1g do not properly handle Heartbeat Extension packets, which allows remote attackers to obtain sensitive information from process memory via crafted packets that trigger a buffer over-read, as demonstrated by reading private keys, related to d1_both.c and t1_lib.c, aka the Heartbleed bug.`
    - **OpenSSLのHeartBreed**

-----
## SCAPとは：例)CVSS
CVSS

- CVE-2017-0144
    - https://nvd.nist.gov/vuln/detail/CVE-2017-0144
        - CVSS v3 Base Score: 8.1 HIGH
        - CVSS v3 Vector: AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
- CVE-2014-0160
    - https://nvd.nist.gov/vuln/detail/CVE-2014-0160
        - CVSS v2 Base Score: 5.0 MEDIUM
        - CVSS v2 Vector: AV:N/AC:L/Au:N/C:P/I:N/A:N

備考;Vector(CVSS v3)

- AV: Attack Vector
- AC: Attack Complexity
- PR: Privileges Required
- UI: User Interaction
- S: Scope
- C: Confidentiality
- I: Integrity
- A: Availability

-----
## SCAPとは：例)CPE
CPE

- Windows Server 2012 R2 Standard
    - `cpe:2.3:o:microsoft:windows_server_2012:r2:-:-:*:standard:*:*:*`
- Microsoft Excel 2016 for Mac
    - `cpe:2.3:a:microsoft:excel_for_mac:2016:*:*:*:*:*:*:*`
- Oracle Java Runtime Environment 8 update 74
    - `cpe:2.3:a:oracl++8.0:update_74:*:*:*:*:*:*`
- YAMAHA RTX1200 Firmware 10.01.29
    - `cpe:2.3:o:yamaha:rtx1200:10.01.29:*:*:*:*:*:*:*`

詳細: https://www.ipa.go.jp/security/vuln/CPE.html


-----
## SCAPとは：全体像
![SCAP-img.png](https://qiita-image-store.s3.amazonaws.com/0/124868/5612eb06-7aac-0ba0-a05c-a5eaeb4276dc.png)

; OVAL書き忘れた…。唐突に出てきたSSGは下記

- セキュリティポリシーを用意する
    - SSG(SCAP Security Guide)や、SSGを編集したXCCDFを用意する
        - パスワード文字数、パスワード有効期限、等の具体的なセキュリティ設定を記述
        - SSGには、PCIDSS向けなどの、各用途向けのものが用意されている
- OVAL情報を用意する
- 用意した情報でスキャンする
    - 用意したポリシーをSCAP Interpriterに渡し、スキャンする

-----
## SCAPとは：実装

SCAPを用いて、OSのシステム設定や脆弱性の状況を検査できるツールが必要

- オープンソースとしては、OpenSCAPがある
- OVALやCPEやCVE情報を利用するツールは多々ある
    - OpenVAS, Vulls, etc..

大半がLinux用で、`Windows用がない`！

- WSUSやグループポリシーがあるから不要？

-----
## WindowsでのSCAP適用
WindowsでもSCAPを使いたい！

- OpenSCAPは、Windows用にコンパイルできる
    - が、バイナリでは配布していない
- OVAL定義の評価をするものは、少しある
    - OVALdi
        - BSD License?、バイナリ提供あり
    - jOVLAL
        - LGPLv2.1、makeする必要あり
        - OpenJDK-11で動かず…

-----
## かんたんに使いたいから、とりあえず、ovaldi使います。

-----
## 利用してみる
-----
## 利用する
OVALdi

- https://www.decalage.info/en/ovaldi
    - OVALdi, also named the OVAL Interpreter, is an open-source tool developed by MITRE to demonstrate how the OVAL language may be used to scan a computer for vulnerabilities.

![ovaldi.png](https://qiita-image-store.s3.amazonaws.com/0/124868/c681b4d0-c93f-64b7-59bf-670c91cac380.png)

-----
## 利用する：注意点

- OVAL情報を元に、ローカルのWindowsサーバを検査する
    - `C:> ovaldi.exe -m -o OVAL_FILE.xml`
    - 5-10分でスキャン完了し、`results.html`が生成される
- 利用上の注意
    - 英語以外のWindowsは、英語版と同様にサポートされていないようだ。
    - 少し古いOVAL定義しか使えない(最新はv5.11.2だが、v5.10しか使えない)

-----
## 利用する：概要


- OVALdiを用意する
    - https://www.decalage.info/en/ovaldi
    - MSVCP100.dllが必要なので、別途入れておく
        - https://www.microsoft.com/ja-jp/download/details.aspx?id=14632
- 最新の `対象のWindows用の` OVAL情報を用意する
    - https://oval.cisecurity.org/repository/download
- OVALdiに、OVALを渡し、スキャンする
    - `C:> ovaldi.exe -m -o XMLFILE.xml`
- 結果が HTML/XML で出力される

-----
## 利用する：ダウンロード

- OVALdiをダウンロードし、インストールする
    - C:\Program Files\OVAL\ovaldi-5.10.1.7-x64 等に解凍される
- 対象のOSバージョンのXMLをダウンロードする
    - [By Platform][Microsoft]以下のプラットフォームを選択する
        - microsoft windows server2012 r2
        - → microsoft_windows_server_2012_r2.xml

※OVALdiは古いOVALスキーマしか対応していません。最新のv5.11.2ではなく、v5.10のOVALファイルをダウンロードすること

![oval-download.png](https://qiita-image-store.s3.amazonaws.com/0/124868/16ecb184-7384-6fee-b88a-05f903a747fd.png)


-----
## 利用する：検査結果
OVALでのスキャン結果が、HTMLとXMLで出力される

- 内容を見ると、Oracle JREやAdobe Acrobatも検査している
- Microsoft製品でよくあるKBベースの表示ではなく、CVEベースの表示

![result.png](https://qiita-image-store.s3.amazonaws.com/0/124868/a1906d75-979e-baaa-cd0b-4791b5862057.png)

-----
## 利用する：KBとCVE
セキュリティ更新プログラムは、KBと呼ばれる単位で配布されている

- KB番号が振られたセキュリティ更新プログラムは、複数のCVE修正を含むことが多い
- どのCVEがどのKBで修正されたのか、実際のところよくわからない
    - とりあえずセキュリティ更新プログラムを当てておけ、運用

-----
## 利用する：KBの例
2018 年 5 月 9 日 - KB4103725 (マンスリー ロールアップ)

- https://support.microsoft.com/help/4103725
    - どのCVEに該当する脆弱性が修正されたのか、ここではわからない
    - 「更新プログラム 4103725 のファイル情報」に更新されたファイルの詳細がある
        - ファイル名、バージョン、作成日、等
- 「セキュリティ更新プログラムガイド」のAPIをたたいて取得するのが、現状のスタイル
    - https://portal.msrc.microsoft.com/ja-jp/security-guidance

![security-guidance.PNG](https://qiita-image-store.s3.amazonaws.com/0/124868/eb4f1e49-7b2e-c07c-9270-84d966b2feaa.png)


-----
## 利用する
WSUS運用と比べて、何が変わるのか

- よさそうな点
    - Linux等の混在環境の場合、CVEベースで残存脆弱性を管理できる
    - Oracle JRE, Adobe Acrobat等も検知できる
    - WSUS/WindowsUpdate 以外の脆弱性管理(セカンドオピニオン的な)
- あまりよくなさそうな点
    - どのKBの更新プログラムが適用されていないのか、はわからない
        - 結局はWSUS/WindowsUpdateへ依存
    - OVALdi、メンテンされてなさそう
        - 2014年以降、更新されていない。OVAL v5.11系に対応していない。英語版Windows以外は動作が怪しい可能性がある(公式によると)。

-----
## 終わりに

- とはいえ更新プログラムはKB単位だから、更新適用管理という意味ではそれほど優位ではない。
- OVAL interpreter、OVALだけでなく XCCDFをきちんと解釈できるものがあれば、セキュリティポリシーの統合的確認がやりやすいはず。

-----
参考

- IPA: セキュリティ設定共通化手順SCAP概説
    - https://www.ipa.go.jp/security/vuln/SCAP.html
- IPA: 脆弱性対策に向けた機械処理基盤SCAPと標準化動向SCAPと標準化動(2010/01)
    - https://www.ipa.go.jp/files/000013454.pdf
- IBM: SCAP について学習する
    - https://www.ibm.com/support/knowledgecenter/ja/SSARLZ_9.0.0/com.ibm.tivoli.tem.doc_9.0/Security_and_Compliance/SCM_Users_Guide/c_learning_about_scap.html