こんにちは。Vuls Slackチームに参加している井上です。
IDCFクラウド アンバサダー プログラムでMORIO Dojo (
https://www.idcf.jp/cloud/dojo/
) にも参加しています(まだ白帯ですね)。
今回、GitHub trending総合で一時的に1位になったこともある、話題の脆弱性スキャナ「Vuls」について、ご紹介の機会をいただきました。
Vulsのテスト環境を、MORIO Dojoの縁もあり、IDCFに提供いただきました。ありがとうございます!
そのご縁もあり、こちらに寄稿させていただくことになりました。
実機での操作やコードは今回はありませんが、しばらくお付き合いいただければ幸いです。
そもそもVulsって何?
脆弱性スキャナに分類されるプログラムです。表記上は、”Vuls”(大文字始まり)が本プロジェクトの名前で、”vuls”(すべて小文字)はプログラムを示しています。細かいことなので、あまり気にしなくても良いと思います。
同様なものとして、OpenVASがあげられます。
https://github.com/future-architect/vuls/
VulsでスキャンしたデータをWEBで見ることが出来る、VulsRepoというものもあります。
https://github.com/usiusi360/vulsrepo/
Vulsの優れた点は以下の通りです。
- エージェントレス
SSH(鍵認証)を利用して通信します。 - アップデートの必要性だけではなく、影響度が分かる
アプリケーションなどの兼ね合いでアップデートが難しいサーバーの場合、現在のバージョンではどのような脆弱性が残っているのか、影響度はどのくらいであるのかなどの情報をもとに、アップデートを検討します。この判断の補助が出来ます。
概要
Vulsは、サーバーに導入されているパッケージやプログラムをチェックし、NVD/JVNの脆弱性情報と突き合せることで脅威度を「目に見える形」で示すことが出来る、OSSのソフトウェアです。
導入済みのパッケージに対し、aptitude chagelogやyum update --changelog、yum plugin security、pkg auditなどを用いて、現状残存する脆弱性のCVE IDを取得します
また、CPE(Common Platform Enumeration)を利用することで、パッケージ以外のソフトウェアの脆弱性も確認可能です CPE:https://www.ipa.go.jp/security/vuln/CPE.html
取得したCVE IDをもとに、NVD/JVNの情報と突き合せ、各CVE IDの概要や影響度情報を得ます。その結果を JSONファイルとして保存します。 JVNについては、JPCERT/CC 戸田様の資料が詳しいです: http://www.slideshare.net/jpcert_securecoding/ss-66412794
保存されたJSONファイルを、WEBブラウザで見ることが出来ます。 スキャンタイミング毎の結果の比較や、ピボットテーブルのように表示しての分析などが可能です。VulsRepoを利用します
図:Vulsの動作概要 (https://github.com/future-architect/vuls/blob/master/README.ja.md https://github.com/future-architect/vuls/blob/master/README.ja.md )
図: VulsRepo: WEBアクセスで、現在の脆弱性残存状況が分かる(画面はヒートマップ表示)
インストール
詳細はGitHubサイトのREADME.ja.mdをご覧ください。
①Vulsを導入します
・Go言語で書かれているため、Goを入れます
・Vulsを使うユーザを作り、sshなどの設定を行います
・VulsをGitHubから落として、インストールします
②Vulsのスキャン結果を見る
・VulsRepoを入れます
・httpdなどのwebサービスを用意します
・VulsRepoをダウンロードし、DocumentRoot配下など、コンテンツディレクトリに配置します
③おわり
Vulsはスキャン用ユーザ配下に配置できるため、もしも不要になった場合やお試しで使った後は、ユーザのhomeディレクトリを削除することで、きれいさっぱり消去することが出来ます。
導入や削除は難しく無いため、気軽に試すことが出来ると思います。
初めてのmeetup、Vuls祭り Vol.1
9/26に、Vulsjpとしては初めてのミートアップ「Vuls祭り Vol.1」が開催されました。
当初は50名規模想定でしたが早々に参加枠が埋まったため、最終的には100名まで規模を拡大して実施しました。想定よりも多くの方に興味を持っていただいていたようでした。
今回は、Vuls祭り Vol.1 のダイジェストをお伝えさせていただきます。 (各発表で利用されたスライドは、Vuls祭りのページから閲覧可能です。)
どのような雰囲気だったか
個人的には「Vulsを使っている方が来る」と思っていたのですが、大半の方が「まだVulsは利用していないが、興味がある」という感じでした。
各セッションを見ると、他のサービスと連携させるとどうなるのか、どうやったら使いやすくできるのか、そもそもセキュリティ面でどうなのか、という内容でした。これから使い始める人にとって、Vuls単体ではなく、周辺の既存サービスと連携をさせる点で、有用な内容だったように思えます。
セッションサマリ
各セッションについて、すごく簡単にまとめました。興味のある方は、Vuls祭りのサイトから資料をご確認ください。
基調講演:Vuls概要、これまでとこれからの話
- 2016/04/01にVulsを公開したところ、ドイツやスロバキアなどでも話題になった。
- 今後は以下をサポートしていきたい
・他のツールとも統合したい
OWASP dependency-check(https://www.owasp.org/)
WordPress (https://wpscan.org/)
Lynis (https://cisofy.com/lynis/)
・JPCERT/CCのAlert
・ローカルスキャン モード
・バイナリパッケージ化
・IDCFクラウドでの、テスト環境活用
脆弱性情報はこうしてやってくる
- Vulsが参照しているJVN(Japan Vulnerability Notes)について、情報が登録されるまでの過程のお話し
・正確には、JVN iPedia(http://jvndb.jvn.jp)を参照している - JVN iPediaは…
・JVNに掲載される情報のほか、米国NISTが運営するNVD及び国内ベンダーからの情報を収集している
・データの蓄積と検索機能を重視。(JVNは迅速に公開することを重視)
・脆弱性が公表されてから一週間程度を目安に公開している - JPCERT/CCでは、脆弱性の届け出を受けた後、ベンダーと調整の後に情報を公開している
・脆弱性発見、届け出、調整、公開=Vulsで活用 - これらの情報をVulsでは活用している
Vulsで危険な脆弱性を最速検知!
- VulsのレポートをWEBブラウザで確認するための VulsRepo の作者
- Vulsで検査すると、パッケージのchengelogで検知できるため、NVDやCVEで情報が公開される前に検知することが可能
- Vulsで素早く系値・対応するための運用方法
・毎日スキャンし、新しく検知した内容だけをウォッチする
・VulsRepoで、検知結果をピボットテーブルのように集計して分析PCI/DSS and Vuls -VulsとPCI/DSS-
- PCI/DSSとは
・クレジットカード情報をインターネット経由で取り扱う人がしたがう必要のある、クレジット業界におけるグローバルセキュリティ基準
・守らないと、クレジットカード情報の取り扱いが出来なくなるかも - Vulsは、PCI/DSSに準拠「し続ける」ために利用可能であり、有用
・ただし、Vulsを動かすためには注意すべきセキュリティ的な点があるPCI/DSS対応を考慮したVuls設定方法
- PCI/DSS環境でVulsを使う際に、セキュリティ上で「しなければいけないこと」「してはいけないこと」がある
・vulsスキャンユーザの秘密鍵は、対象サーバから削除する
・vulsスキャンユーザに与える特権は、制限する
・vulsでスキャンしたデータは、権限のある人にしか見えてはいけない
→need to know basisの原則 - IDCFが、Vulsの開発環境のスポンサーになっていただいたことの報告
EC2のVulsスキャンをほんの少し便利にするツールを作った
- ec2-vuls-confgというツールを作った
・Amazon EC2インスタンスタグを見て、設定ファイルを自動で書き換える - なぜ作ったのか
・オートスケールなどで、インスタンスが常に変わり続けている環境でもスキャンしたい
・常にスキャン対象を設定ファイルに書いていく運用は、大変
・Amazon Inspectorのように、タグだけを見て自動的にスキャン対象を見つける仕組みが欲しかった本番サーバでの実運用 on GCP
- パッケージ化されていないもの(RPMではないもの)をスキャンする
・Vulsのconfig.tomlに cpeNames を記載することで対応が可能 - phpやnginxやredisなどを、自動的に脆弱性検知することが出来る
- initScriptによる運用の簡易化が便利
Vuls x Microsoft Azure
- Azureで簡単にVulsを試せるように、一発構築コピペを作った
・Vuls本体と、VulsRepoがインストールできる
・スキャンしやすいような単位で構築されるVulsとAzureでやってみた
- Azure Functionsでやってみた
- Log Analyticsでやってみた
MackerelとVuls
- mackerel-agentが定期的にVuls scanをして、結果をMackerelに送るようにした
ZabbixアプライアンスをVulsしてみた話
- 資料ありませんでした
Vuls x DeepSecurity
- DeepSecurity保護下でも残存する、緊急度の高い脆弱性が発見できないかを試した
・VulsとDeepSecurityを組み合わせることで、対象の環境における緊急度の高い脆弱性がわかる
・Vulsと他のセキュリティ製品の組み合わせも、同じように連携できると考えられる
・DeepSecurity APIは、すごく便利How to contribute Vuls
- Vulsは、Pull Request大歓迎!
- 一緒にコーディングして、OSS contributorになろう!
- Vulsのドキュメント作成プロジェクトがそろそろはじまります!
まとめ
今後、IDCFクラウド用のコミュニティテンプレートをリリース予定です。
Vulsでスキャンすることで、実環境上の脆弱性状況の把握が簡単になるはずです。楽が出来るところは楽をして、休みを取ったり、他に注力しなければいけないところに力を割けるようになればいいな、と思っています。
株式会社アールワークス ネットワークインテグレーション部 井上圭