トリコロールな猫/セキュリティ

思いついたことをぼちぼち書いてます。

著名なOSやソフトウェアなどの脆弱性情報を網羅的に収集するために私がやっていること

ここでいう脆弱性情報とは、

  • 脆弱な製品とバージョン
  • 脅威(= 攻撃者ができること(任意のコード実行、DoS攻撃など)
  • 対策の有無

のことです。

情報収集の基本的な流れ:

  1. US-CERT・CERT/CC・JVNをチェック(RSS購読。この3つにあがってこないものはベンダ情報)
  2. ベンダ情報を確認
  3. 2.が曖昧な場合はNVD、SecurityFocusを確認
  4. 3.でもダメならググる

US-CERT・CERT/CC・JVN

ベンダ情報のほうが早いですが追いきれないのでこの3つが基本。それぞれ特徴があります。

US-CERT

  • 著名なベンダのアップデートが出ると公開される感じ
  • 脅威を記載
  • 脆弱なバージョンについての言及はあまりない

www.us-cert.gov

CERT/CC

  • ここに出ると、それが翻訳されたJVNが出る
  • 脆弱なバージョンの記載はまちまち
  • CWEベースで脅威を記載
  • JVNでの公開が待てるならあんまり見なくていいかも

www.kb.cert.org

JVN

  • CERT/CC公開の翌日には翻訳が出てる
  • 日本のアプリなど独自のものも公開
  • 脆弱なバージョンが統一されたフォーマットで書かれている(〜より前のバージョン/〜およびそれ以前)
  • 脅威はCERT/CCよりシンプルに記載

JVNさんいつもありがとう。とっても見やすくて助かってます。

Japan Vulnerability Notes

上記3つにあがってこないもの

Python、Ruby、PHP等言語の脆弱性はまず出てこないですね。よっぽど深刻だと出るのかな?

PythonはWindows版Pythonの脆弱性があったかな。

JVN#49503705: Windows 版 Python における任意のDLL読み込みに関する脆弱性

RubyもRailsのはあった。ここ数年では多分これだけ。

JVN#83881261: Ruby on Rails 用ライブラリ Paperclip におけるクロスサイトスクリプティングの脆弱性

PHPは全くないっぽい。

なのでそれぞれの公式サイトのRSSから情報を得ます。

ベンダ情報

これもベンダごとに書かれ方がかなり違います。いくつかピックアップしてご紹介。後半はただの愚痴です。

Microsoft

月例になって楽になりましたね。脆弱な製品や脅威もシンプルでわかりやすい。

vuln-info-ms
*1


と、脆弱性情報はかなり整理されていますが情報の"場所"が煩雑なのは相変わらず。MS**-***なのかKB******なのか。ブログにも他と違う形式で載ってるし。月例のものは「MS16-AUG」みたいにMS[西暦下2桁]-[月の英略語]で、基本的にはこれを追ってれば大丈夫。下記からいけます。

セキュリティ情報の概要

昔ほど脆弱性で騒がれなくなったのは月例になったからなのか、OSやフレームワークで攻撃条件が複雑になってるのか、他に理由があるのか、なんなんだろう。

Apple

最近はMicrosoftよりAppleの方が騒がれてますね。まあMacやiPhoneのユーザが増えて注目度が上がってるだけかもしれませんが。

製品とバージョンは明確だし、脅威も分かりやすい。

Available for: OS X El Capitan v10.11 and later
Impact: An application may be able to execute arbitrary code with kernel privileges
Description: A memory corruption issue was addressed through improved memory handling.
CVE-ID
CVE-2016-1792 : beist and ABH of BoB

*2

Adobe

2016年7月くらいまでは頻繁に出てましたが最近めっきり減りましたね。製品とバージョンについては他のベンダもこの書き方で統一していただきたいくらいスッキリと分かりやすい。

vuln-info-adobe

脅威についても「Vulnerability Details」に欲しい情報全部書いてある。

These updates resolve type confusion vulnerabilities that could lead to code execution (CVE-2016-4144, CVE-2016-4149).
These updates resolve use-after-free vulnerabilities that could lead to code execution (CVE-2016-4142, CVE-2016-4143, CVE-2016-4145, CVE-2016-4146, CVE-2016-4147, CVE-2016-4148).

*3

さすが致命的な脆弱性を数多く出してるだけあって情報のまとめ方を心得てらっしゃる。

VMware

ここも表でまとまってて見やすい。

vuln-info-vmware
*4

複数の脆弱性があると表も複数個になるのでそこまとめてもらえるともっと楽なんだけどー。

Mozilla

月例・・というわけでもないみたいで、ある程度まとまったら出すことになってるんですかね。個々のアドバイザリは見やすいんだけどすべてのリンクが1つのページに載ってるのはいただけない。月ごとに個別のURLつけてほしい。

vuln-info-mozilla
*5

Wordpress

インパクトが大きい割に脅威があまり明確でないですね。「パストラバーサル」といわれても任意のファイルがアップロードできるのか情報を取得できるのかで違うと思うんですが。CVE-IDが付与されているはずなのに載ってないのも痛い。

アップグレードパッケージのアップローダーにあるパストラバーサルの脆弱性です。

*6

Cisco

最近出しすぎ。製品名長すぎ、複雑すぎ。

vuln-info-cisco
*7
最近出ると一番ウゲーとなるベンダです。タイトルに「Arbitrary Code Execution」「Information Disclosure Vulnerability」など脅威が含まれているのはいいのですが。

PHP

ほんとわかりづらいんですよ。Changelogで1個1個バグを見てかないと脅威がわからないし、見てっても結局分からないことがある。

vuln-info-php
*8

CVE-IDが明記されてるものはまだいいんですけどね。それなりの頻度で出てくるのでもう少し何とかして欲しいところ。

CVE

CVEとは、ざっくりいうと世界中の脆弱性につける識別子のことで、「CVE-[西暦4桁]-[連番]」というCVE-IDが、脆弱性にはほぼ確実に付与されています。このIDがつくと、

https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-[西暦4桁]-[連番]

というページにその脆弱性の情報が集約されます。例えばこんなん。

cve.mitre.org

で、CVE-IDが割り当てられると、NISTのNVD(National Vulnerability Database)にも以下のようなページが作られます。

https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-[西暦4桁]-[連番]

こんな感じです。

Vulnerability Summary for CVE-2007-5000

Mitreのサイトは脆弱性の端的な説明と参照サイトが中心なのに対し、NVDはCVSS(脆弱性の影響度をスコア化したもの)やパッチの情報なども載ります。ただ、番号の割り当ては早いんですがNVDは情報が出るのが遅いんすよ。該当CVE-IDのNVDにアクセスしても中身はたいてい

CVE ID Not Found
A vulnerability has been identified, and possibly a CVE has been assigned, why is it not in your database?

Although a CVE ID may have been assigned by either CVE or a CAN, it will not be available in the NVD if it has a status of RESERVED by CVE.

です。なのでリアルタイムに追いたい場合はあんまり役に立ちません。が、出ると欲しい情報全部載っててちょー便利。ぐぬぬ

Security Focus

2000年ごろからお世話になってます。ここは網羅性が高く、バージョンや脅威だけでなくPoCも載せるので世話になってる人が多いのでは。昔は各タブの情報が豊富でしたが、さすがに最近は量も多いしそうでもないみたいですね。

vuln-info-securityfocus
*9

最初からここを見ればいい気もしますが、バージョン情報の書き方がベンダのアドバイザリと違ったりする(ベンダだと「**より前のバージョン」なのにこっちだと具体的なバージョンが羅列されてるとか)ので、最近はあくまで補助的な情報源として使ってます。

その他所感

最近は各ベンダがちゃんとアドバイザリを出すのでかなり情報を集めやすくなりました。識別子CVEと影響度のCVSSのおかげで脅威の把握も容易です。贅沢をいえば各ベンダのアドバイザリのフォーマットは統一して欲しいなー。

最終手段はググるわけですが、JVNやベンダのアドバイザリにない情報をググって得られるということはほとんどないです。UbuntuとかLinuxディストリビューションのパッチ情報があれば引っかかるかなーくらい。

とはいえほんとにヤバいのはここにある方法で確実にキャッチできるはずです。

結局一次情報しか参照にしてなくて、今どきならTwitterとかFacebookのようなSNSを使った情報収集もしたいなあと思ってるんですがなかなか難しいですね。確度低いし。ただウイルスが添付されたばらまき型メールなんかは、タイトルや添付ファイル名をTwitterで検索するとヒットしたりするので、広範囲なインシデントを知るにはいいかもしれません。ただそれも自分のところに来て初めて検索するわけで、予防としてはあんまり効果ないかなあ。一時期はTwitter APIを使ってセキュリティ関連情報のトレンドを追うような仕組みを作ろうと頑張ってましたが結局うまくいかなくて。その辺は今後の課題です。