この資料は2016.11.22(火)OSSユーザーのための勉強会 < OSS X Users Meeting > #16 Vuls のLT資料です。
はじめに
脆弱性スキャナ「Vuls」と同様に、OSに含まれる脆弱性をチェックするツールとして「OpenVAS」がよく知られています。またAWS上では2016年4月より「Amazon Inspector」が正式にリリースされています。
これら3つのツールを機能及び検知結果で比較し、どれが最適なのか探りたいと思います。
概要・機能
ターゲット
- Vuls
- クラウド、オンプレミス、Docker
- OpenVAS
- クラウド、オンプレミス、ESXi、Cisco 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
- Amazon Linux(All)
- Ubuntu(12, 14, 16)
- Debian(7, 8)
- RHEL(6, 7)
- CentOS(5, 6, 7)
- FreeBSD(10)
-
OpenVAS
- Linux(Debian系、RedHat系)
- http://docs.greenbone.net/GSM-Manual/gos-3.1/en/scanning.html#requirements-on-target-systems-with-linux-unix
- 対応するディストリビューションの詳細の記載がないが、AmazonLinux、Ubuntu、RHEL6.X/7.X、CentOS6.X/7.Xで試して検知は出来た。
- Windows
- Linux(Debian系、RedHat系)
-
Amazon Inspector
- Amazon Linux (2015.03 以降)
- Ubuntu (14.04 LTS)
- Red Hat Enterprise Linux (7.2)
- CentOS (7.2)
- Windows Server 2008 R2 および Windows Server 2012【プレビュー】
- サポートされるディストリビューション及びバージョンの幅が狭い。CentOS6.8で試しに評価。エージェントのインストール・評価実行は正常にできるが、CVEを一つも検知出来なかった。
コスト
- Vuls
- OSS(GPLv3)
- OpenVAS
- OSS(GPLv2)
- Amazon Inspector
スキャン内容
-
Vuls
- OSパッケージ(.rpm、.deb)に含まれているCVE
- 下記OSパッケージ管理対象外の要素
- CPEが明示されているプログラミング言語のフレームワークやライブラリ、ソースからインストールしたミドルウェア、ネットワーク機器
- OWASP dependency checkと連携可能
-
OpenVAS
- 対象のマシンに導入されているソフトウェアのバージョンや設定、構成などを確認してそれらに脆弱性がないかどうかをチェック
- 「Network Vulnerability Tests (NVTs)」というシグネチャーに基づいた脆弱性チェック
-
Amazon Inspector
スキャン検証
- 検証日: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しか検知出来ていない
このパッケージに含まれるルールは、EC2 インスタンス が次のリストの CVE に曝露されているかどうかを評価するのに役立ちます。
https://s3-us-west-2.amazonaws.com/rules-engine/CVEList.txt. CVE ルールパッケージは定期的に更新されます。
このリストには、このリストが取得されるときに同時に発生する評価の実行に含まれる CVE があります。
- AWS Discussion Forumsにて確認中
レポーティング
-
Vuls
- CUI、WebUI、mail、slack、text、json、XML
- 日本語表示可能
-
OpenVAS
- WebUI、mail、HTML、CSV、XML、PDF
- 英語のみ
-
Amazon Inspector
- WebUI、CSV(CSVで結果出力するAPIは無い?)
- 英語のみ
レポーティング画面の比較
- Vuls
- OpenVAS
-
検知結果のレポートについて
- OpenVAS、Inspectorは結果をインタラクティブに集計する機能はない。CSVでダウンロードして他ツール(Excel等)で集計すべきか。
- 日本語の説明を表示できるのはVulsだけ。
まとめ
Amazon Linuxをスキャン対象に選んだのは、VulsやOpenVASが基本的に修正済みの脆弱性しか検知できないのに対し、Inspectorならば未修正パッケージの検知もできるのでは?という期待がありましたが、結果は振るいませんでした。
ただしOpenVAS、Inspectorは今回検証対象としなかったネットワーク脆弱性やプロセス アクティビティ、設定監査等の機能を持っており、Vulsとそれらを併用することで、より精度の高い脆弱性診断ができるようになると思います。