RSAC 2019:完璧なパッチ適用戦略を求めて

2019年4月4日

「すみません、セキュリティ更新について少しお話できませんか?」

「けっこうです、パッチのインストールであまりにも忙しくて」

冗談はさておき、自分がどれほど効果的に(または効果の低いやり方で)パッチを管理しているか、少しの間考えてみる価値はあります。

理想の世界では、セキュリティパッチがリリースされたら会社で使用している全ソフトウェアにすぐインストールしていることでしょう。しかし現実はそれほど単純ではなく、すべてのパッチをインストールするだけの時間の余裕がありません。そこで、優先順位を付けなければなりません。でも、どうやるのが一番良いのでしょうか。

RSA Conference 2019で、Cyenta Instituteのジェイ・ジェイコブズ(Jay Jacobs)氏とKenna Securityのマイケル・ロイトマン(Michael Roytman)氏(英語記事)が、『The Etiology of Vulnerability Exploitation(脆弱性悪用の病因学)』と題した研究を発表しました。このレポートでは、優先して対応すべき脆弱性の種類、またパッチのインストールとセキュリティ更新の戦略を劇的に改善する方法についてよく検討されています。

ここでは、すべての脆弱性が実際に悪用されるわけではない、ということが大前提となっています。これが真実だと仮定すると、本当に攻撃に使われる(またはその可能性が高い)脆弱性について優先的に対応し、そうではない多数の脆弱性に対してはパッチの適用を先送りしても問題ないということになります。とはいえ、「危険な」脆弱性と「ほぼ無害」な脆弱性とをどう区別すればいいのでしょうか。

ジェイコブズ氏とロイトマン氏は、その作業をうまく処理するモデルを構築しました。モデル構築に使用されたのは、CVE(Common Vulnerabilities and Exposures、共通脆弱性識別子)データベースと公開されているエクスプロイトデータベースから入手できる概要情報、そして脆弱性スキャナーとIPS/IDSシステム(不正侵入検知・防御システム)のデータ(1,300万システムでの合計73億件の攻撃レコードおよび28億件の脆弱性)です。このモデルの話に踏み込む前に、まずは脆弱性の状況を少々分析するところから始めましょう。
※文中のグラフは、両氏のプレゼンテーション資料から引用したものです。

世の中にはどれほどのCVEがあるのか

情報セキュリティのエキスパートは、既知の脆弱性の数は膨大であると口を揃えて言うでしょう。しかし、正確な数を把握している人は多くありません。現時点では、約10万8,000個のCVEが公開されています。

また、毎月の公開数は、過去数年間で増加しています。2005~2017年には1か月に公開されるCVEは300~500個でしたが、2017年末には月の平均が1,000個を超え、その後も高いレベルを保っています。毎日何十個もの新しいバグが発見されている計算です。

CVEの公開数(月単位)

エクスプロイトの存在が明らかになるのは通常、関連するCVEが公開される直前、または公開された直後のことです。例外もありますが、CVEの公開日の前後2週間程度のことが多いようです。そのため、CVEの公開に対しては素早い対応が求められます。

公開されたエクスプロイトの数(CVEの公開直前、直後に集中)

言うまでもなく、ソフトウェア更新のインストールは遅れがちです。平均では、検知1か月後のパッチ適用状況は脆弱性の4分の1にとどまっています。それが半分にまで到達するには100日かかっており、4分の1は1年たってもパッチが適用されていません。

パッチの適用率(月単位の経過)

パッチが適用されないままになっている脆弱性の3分の2は、ベンダー3社の製品に存在する脆弱性です。

パッチが適用されていない脆弱性の割合(ベンダー別)

パッチが適用されていない製品

一方、CVEの77%に関してはエクスプロイトが公開されていません。また、公開されているすべての脆弱性に実環境で遭遇するわけではないことも、興味深い点です。実環境に見られる脆弱性は、10万8,000個のうち3万7,000個に過ぎません。公開された時点で実際に存在し、悪用可能な状態になっているCVEは5,000個だけでした。この脆弱性こそ高い優先度で対応されるべきもので、まさに正しく判別される必要があります。

上から、公開されたCVE、実環境で観測されたCVE、エクスプロイトが存在するCVE

これまでのパッチ適用戦略

このリサーチャーらは、2つの指標を用いてパッチ適用戦略の妥当性を検証しました。1つはパッチが適用されている脆弱性のうち「危険な」ものの割合(効率性)、もう1つはこの逆、「危険な」脆弱性のうちパッチが適用されているものの割合(カバー率)です。

効率性(Efficiency)とカバー率(Coverage)の算出

一般に認められているパッチ適用戦略の1つは、共通脆弱性評価システム(Common Vulnerability Scoring System:CVSS)に基づくもので、特定の値を上回るCVSSスコアに優先度が割り当てられます。CVSS スコアが10の場合で計算すると、効率性は23%、カバー率は7%になります。興味深いことに、ランダムにパッチをインストールした場合でも、まったく同じ結果になります(少なくともこの指標を使った場合は)。

CVSSスコアが10の場合の計算

最も一般的なのはCVSSが「高スコア」(7以上)である脆弱性のすべてにパッチを適用する方法で、際だって良好な結果が得られます。この方法は全体としては悪くありませんが、優先してインストールしなければならないパッチが多くなるため、時間がかかります。 

CVSS基本値を基準にした優先度戦略の結果

もう1つの戦略は、ベンダー別にパッチ適用の優先度を決めることです。結局のところ、CVEの合計数に対する実際のエクスプロイト数の割合は、開発者によって変わってくるので、現実に悪用される可能性が高い脆弱性を含む製品のベンダーについて、優先度を高くするというのは理にかなっています。

全CVE数と、存在するエクスプロイト(ベンダー別)

しかし、効率性とカバー率については、ランダムにパッチを適用した場合よりも芳しくない結果となり、効果はおよそ半分です。

CVE数の多いベンダーに基づいた優先度戦略の結果

したがって、長期的には、この対策はCVSSを基準にした対策よりも妥当性が低いことになります。

脆弱性悪用の可能性算出モデル

リサーチャーたちが構築したモデルの話に戻りましょう。彼らはCVEの概要、公開されているエクスプロイトのデータベース、そしてIPS/IDSシステムからのデータを比較して、脆弱性が実際に悪用される見込みに影響を与える一連の要素を特定しました。

たとえば、MicrosoftによるCVEの言及がある、Metasploitにエクスプロイトが存在するなどの要素があると、当該脆弱性の悪用される可能性が大幅に上がります。

実環境での悪用可能性に寄与する要素

一方で、悪用の可能性を下げる要素もあります。Safariブラウザーの脆弱性である、ExploitDBデータベース(実用にはあまり適さない)に公開されたエクスプロイトである、CVEの概要に「authenticated」(認証済み)や「double free memory」(二重解放メモリ)の文言がある、などです。こうした要素を組み合わせて、リサーチャーたちは特定の脆弱性が悪用される可能性を算出することに成功しました。

実環境での悪用可能性に寄与する要素

 このモデルの精度を検証するため、リサーチャーらは自分たちの予測を実際の攻撃と比較しました。以下はその結果です。

  • 悪用の可能性が最低レベルの脆弱性の場合、このモデルは有効である。
  • 悪用の可能性が平均的な脆弱性の場合、このモデルは値を高めに見積もる傾向にある。
  • 悪用の可能性が高い脆弱性の場合、このモデルはリスクを過小評価しがちである。

観測した現象vs.予測

以上のように、このモデルは完全に正確とはいかないまでも、全体的には有効です。これを基に、効率重視、バランス重視、カバー率重視という3つのパッチ適用戦略が作成されました。たとえば「バランス重視」戦略では、CVSSスコア7以上で効率性が2倍になり、カバー率も向上し(52%→63%)、労力は半分になりました(インストールされたパッチ数が半減)。検討する価値があると言えるのではないでしょうか。

CVSSスコア7以上の場合

 最後に、取るべき対策についてリサーチャーからのアドバイスを紹介しましょう。

  • 自社のパッチ適用戦略として、CVSS以外のものを使用しているかどうかを確認する。
  • 未解決の脆弱性と解決済みの脆弱性を、自社でどのようにトラッキングしているかを調査する。
  • 自社のリソースに対する攻撃で使用されている脆弱性について、自社のセンサーでデータを収集する。
  • 一定量のデータが集まったら、それを使って自社インフラでの効率性、カバー率、労力のスコアを算出する。
  • その値を、他の優先度付け戦略と比べてみる。

明確な戦略なしにすべてのパッチを手動で適用するのは時間の無駄である、というリサーチャーらの考えには私たちも同意します。しかし、Kaspersky Labのアプローチは少し異なります。Kaspersky Vulnerability & Patch Management(Kaspersky Security for Businessにも含まれる)には、脆弱性の監視とパッチのインストールを担うサブシステムが採用されています。

そのため、脆弱性の迅速な特定、優先度の決定、脆弱性の解消が可能となっています。当社の優先度設定では、CVSSスコアに加えて、Kaspersky Security Networkからの情報が勘案されます。たとえば、ある脆弱性が現在悪用されていることを当社のシステムが検知した場合、その脆弱性の優先度は上がります。このテクノロジーに関する詳しい情報は、こちらでご確認ください。