Vuls・OpenVAS・Amazon Inspectorを徹底比較

  • 39
    いいね
  • 0
    コメント

この資料は2016.11.22(火)OSSユーザーのための勉強会 < OSS X Users Meeting > #16 Vuls のLT資料です。

はじめに

脆弱性スキャナ「Vuls」と同様に、OSに含まれる脆弱性をチェックするツールとして「OpenVAS」がよく知られています。またAWS上では2016年4月より「Amazon Inspector」が正式にリリースされています。

これら3つのツールを機能及び検知結果で比較し、どれが最適なのか探りたいと思います。


概要・機能


ターゲット

  • Vuls
    • クラウド、オンプレミス、Docker
  • OpenVAS
    • クラウド、オンプレミス、ESXiCisco OS
  • Amazon Inspector
    • AWSでホストされた EC2インスタンスのみ
    • InspectorはDirect Connectで繋がったオンプレ環境をスキャン対象に出来ない。

収集アーキテクチャー

  • Vuls

    • エージェントレス
      • 一般権限ユーザでSSH + sudo(sudoerでyum or aptコマンドのみに制限可能)
    • dockerコンテナに対しては「docker exec」。SSH不要。
    • スキャン対象サーバにSSH接続可能なマシン1台にセットアップするだけで動作
  • OpenVAS

    • エージェントレス
      • root権限を持ったユーザでSSH(Linux、Cisco OS)
      • Windows(SMB)
      • スキャン対象サーバにSSH接続可能なマシン1台にセットアップするだけで動作
      • マニュアルでは下記のように書いてあるが、OSパッケージ(.rpm、.deb)に含まれているCVEの検知には一般ユーザで実施しても結果は変わらなかった。

http://docs.greenbone.net/GSM-Manual/gos-3.1/en/scanning.html#requirements-on-target-systems-with-linux-unix
■ 7.4.2. Requirements on Target Systems with Linux/UNIX
For scans that include policy testing root permission or the membership in specific groups (often wheel) might be necessary. For security reasons many configuration files are only readable by super user or members of specific groups.

  • Amazon Inspector
    • マニュアルより抜粋
      • Amazon Inspector の評価ターゲットを構成する EC2 インスタンス のセキュリティを評価するには、各インスタンスにAWS エージェントをインストールする必要があります。エージェントは、ネットワーク、ファイル システム、プロセス アクティビティなど、インストールされる EC2 インスタンス の動作をモニタリングして一連の動作や設定のデータ (テレメトリー) を収集し、このデータを Amazon Inspector サービスにパスします。
    • InspectorはEC2インスタンスにタグを設定し、該当タグを持つインスタンスを検査対象とする。仮にdockerコンテナ内にAWSエージェントをインストール出来たとしても、タグを振れないdockerコンテナに対して検査することは出来ない

対応OS


コスト

  • Vuls
    • OSS(GPLv3)
  • OpenVAS
    • OSS(GPLv2)
  • Amazon Inspector
    • 従量課金
      • (2016/11/12現在)
      • 10エージェントx30日x0.25USD=75USD(約8千円/月)
      • 100エージェントx30日x0.15USD=450USD(約4万8千円/月)

スキャン内容


スキャン検証


  • 検証日:2016/11/9
  • スキャンターゲット

    • AWS EC2インスタンス

      • AMI:amzn-ami-hvm-2015.09.1.x86_64-gp2 (ami-383c1956)
      • インスタンス作成時に以下のオプションを付けて自動アップデートを無効化

        #cloud-config
        repo_upgrade: none

    • Vuls・OpenVASは上記スキャンターゲットホストとは別に用意したインスタンスにインストール

    • Amazon Inspectorのagentはスキャンターゲットホストに事前にインストールしておく。

    • インンストール済みrpm数:386個


スキャン設定

OS内部スキャンの診断機能のみで比較する

  • Vuls

    • v0.1.7(コミットハッシュ:e40ef656d6285148d5ac55a02516312e265bac90)
    • NVDのデータ全部をスキャン直前にfetch。
  • OpenVAS

    • docker image「mikesplain/openvas:latest」を使用
    • Scanner: OpenVAS Default (Type: OpenVAS Scanner)
    • Scan Config: Full and very deep ultimate
  • Amazon Inspector

    • ルールパッケージ:Common Vulnerabilities and Exposures-1.1
    • 所要時間:15分

スキャン結果


スキャン時間

時間
Vuls 約5秒
OpenVAS 約8分
Amazon Inspector 15分
  • Inspectorは指定した時間で終わるよう自動でスケールする模様。大規模環境だと逆転する可能性はある。

  • Inspectorの実行の時間について

    • マニュアルには以下のように記載されている。
    • 「ルールパッケージ:Common Vulnerabilities and Exposures-1.1」を使い、「15 分・1 時間・8 時間」でそれぞれチェックしてみたが、検知されたCVEの数は変わらなかった。
時間は次のいずれかの値に設定できます。
15 分
1 時間 (推奨)
8 時間
12 時間
24 時間
評価テンプレートの時間が長いほど、Amazon Inspector は、より詳細かつ包括的なテレメトリーのセットを収集して分析します。
つまり、分析時間が長くなることで、Amazon Inspector は評価ターゲットの動作を細部にわたって確認し、より詳細な結果を提示
できるようになります。同様に、ターゲットに含まれる AWS リソースが評価の実行中により広く使用されているほど、
Amazon Inspector はより詳細かつ包括的なテレメトリーのセットを収集して分析します。

検知数比較方法

  • VulsとAmazon InspectorはCVEベースで通知されるので、それを集計
  • OpenVASはローカルスキャンに関してはALASベースのため、「References」の「CVE」を抜き出して重複を除いて集計
    • ファイル名

検知数

Vuls OpenVAS Amazon
Inspector
検知数 180 165 169
誤検知の疑い 0 12 3
正常検知数
(=検知数-誤検知の疑い)
180 153 166
未検知の疑い 0 27 14

検知結果詳細リスト(PDF)

  • コメント抜粋
    • 項番2、35はALASの説明文に誤りがあると思われるが、OpenVASはそれを参照してしまっているように思われる。
    • Inspectorは項番44 CVE-2016-5195(Dirty COW)を検知できていない
      • 2016/11/12追試:Inspectorで検知できず。
      • 2016/11/21追試:Inspectorで検知。
      • ALAS-2016-757に本脆弱性が掲載され修正版が提供されたのは2016/10/20であり11/12の時点では検知しなかったことから、最低でも22日程度は検知できていない。このことからALASとInspectorは同期していないことがわかる。
    • 項番53 CVE-2016-1000110(httpoxy)を検知出来たのは、Vulsだけ
      • 2016/11/21追試:変わらずVulsしか検知出来ていない
Inspectorが検知できるCVEのリストは以下に記載されている。どのぐらいの間隔で更新されているかは不明。
このパッケージに含まれるルールは、EC2 インスタンス が次のリストの CVE に曝露されているかどうかを評価するのに役立ちます。
https://s3-us-west-2.amazonaws.com/rules-engine/CVEList.txt. CVE ルールパッケージは定期的に更新されます。
このリストには、このリストが取得されるときに同時に発生する評価の実行に含まれる CVE があります。

レポーティング

  • Vuls

    • CUI、WebUI、mail、slack、text、json、XML
    • 日本語表示可能
  • OpenVAS

    • WebUI、mail、HTML、CSV、XML、PDF
    • 英語のみ
  • Amazon Inspector

    • WebUI、CSV(CSVで結果出力するAPIは無い?)
    • 英語のみ

レポーティング画面の比較

  • Vuls



  • OpenVAS


  • Amazon Inspector

    • 2016/11/13追記 結果リンクの下に、Severity別にフィルタできるようにインターフェースが追加された。
  • 検知結果のレポートについて

    • OpenVAS、Inspectorは結果をインタラクティブに集計する機能はない。CSVでダウンロードして他ツール(Excel等)で集計すべきか。
    • 日本語の説明を表示できるのはVulsだけ。

まとめ

Amazon Linuxをスキャン対象に選んだのは、VulsやOpenVASが基本的に修正済みの脆弱性しか検知できないのに対し、Inspectorならば未修正パッケージの検知もできるのでは?という期待がありましたが、結果は振るいませんでした。

ただしOpenVAS、Inspectorは今回検証対象としなかったネットワーク脆弱性やプロセス アクティビティ、設定監査等の機能を持っており、Vulsとそれらを併用することで、より精度の高い脆弱性診断ができるようになると思います。