エクスプロイトの開発状況: 80%のエクスプロイトはCVEより先に公開されている

By

Category: Unit 42

Tags: ,

This conceptual image illustrates trends in cybersecurity

This post is also available in: English (英語)

概要

新たな脆弱性が増え続けるなか、脆弱性管理はビジネスの継続的運用を保証する上で最も重要なプロセスの1つになっています。もちろんタイムリーなパッチ適用は不可欠ですが、適用の遅れがどのようにリスクを増加させるかを定量的に把握することも重要でしょう。開示されたばかりのCVEや未知の(ゼロデイの)脆弱性を利用し、攻撃者が自組織を侵害する可能性はいったいどのぐらいなのでしょうか。脆弱性開示とエクスプロイト開発の状況を理解するため、Unit 42は本稿執筆時点でエクスプロイト データベースに公開済みの4万5,450件のエクスプロイトを分析しました。本調査ではエクスプロイト データ、脆弱性、パッチ情報を相関させ、さまざまな側面からエクスプロイトの開発状況を調査しました。

本調査では明らかになったのは次の通りです。

  • エクスプロイト データベース内の4万5,450件のエクスプロイトのうち、対応CVE番号のあるエクスプロイトは1万1,079(〜26%)件
  • それら1万1,079件のエクスプロイト中について以下が判明:
    • 14%はゼロデイ(ベンダによるパッチ提供前の公開)、23%はパッチ提供後1週間以内に公開、50%はパッチ提供後1か月以内に公開された。平均ではパッチ提供から37日後にエクスプロイトが公開された。このためパッチはできるかぎり早く適用する必要がある。ベンダによるパッチ提供直後から脆弱性が悪用されるリスクは急激に高まる。
    • 公知のエクスプロイトの80%がCVEの公開より先に公開されている。平均ではCVE公開の23日前にエクスプロイトが公開されている。ソフトウェア、ハードウェアには対応CVEのない公知のエクスプロイトを含む脆弱性が存在する場合がある。ベンダのセキュリティ更新を頻繁に確認してできるだけ早く更新を適用すべきである。

このほか、1999年以降の全CVEリストをレビューした結果、CVE-IDの割り当てから平均で40日後にCVEが公開されていることもわかりました。本稿執筆時点で分析済みの17万7,043件のうち、1万件を超えるCVEが2年以上「RESERVED(予約済み)」のステータスになっています。これは脆弱性発見とCVE公開の間には長いタイムラグがあることを示しています。

最後に私たちは、米国CISA(Cybersecurity Infrastructure and Security Agency)が発表した2016年から2019年に日常的に悪用されていた脆弱性トップ10を確認し、脆弱性、エクスプロイト、パッチ公開の時間差がどのようなものであるかを明らかにしました。この調査では主要ソフトウェアベンダの脆弱性修正対応は迅速で、公知のゼロデイがエクスプロイトされる割合が低くなっている点が注目に値します。

パロアルトネットワークスのお客様は、次のような製品を通じて脆弱性管理の支援を受けることができます。

  • 次世代ファイアウォールの驚異防御サブスクリプション
  • Prisma Cloudは振る舞いベースの分析とPrisma Cloud Intelligence Streamとを組み合わせ、脆弱性の管理を行うことでユーザーへの攻撃シナリオを警告、保護を提供
  • Cortex XSOARは脆弱性管理を最適化

多数のパロアルトネットワークス製品は、AutoFocusWildFireが提供する精度の高い脅威インテリジェンス情報により、実際の利用が広がっている脅威に関する最新情報を取得することができます。

エクスプロイト データベースの概要

エクスプロイト データベースは公知となっているエクスプロイト最大のリポジトリです。本稿執筆時点でエクスプロイト データベースには4万5,450件のエクスプロイトが存在します。下の図1の左の棒グラフは、公開年ごとのエクスプロイト数をエクスプロイト種別ごとに示したものです。同じく図1の右の円グラフはプラットフォームごとのエクスプロイトの分布を示しています。統計によると2003年以来もっとも頻繁にエクスプロイト対象となっていたのはWebアプリケーションでした。

左の棒グラフは2000年以降に公開されたエクスプロイト数を示しており、Webアプリケーション(Webapp)、論文や白書(Paper)、シェルコード、リモート、ローカル、DOSに分類されています。右の円グラフは対象となっているプラットフォームごとのエクスプロイト開発状況を分類しています。プラットフォームの種類には、UNIX、Linux x86、CGI、ASP、ハードウェア、Linux、Windows、複数(複数のプラットフォームにまたがる)、が含まれます。
図 1 左: 2000年以降に公開されたエクスプロイト数をエクスプロイト種別ごとに分類。右: エクスプロイト対象となったプラットフォーム。

図2は、Common Vulnerability Scoring System 2.0(CVSS)スコアとエクスプロイトの深刻度を示しています。エクスプロイトの49%は深刻度が高い「レベルIII(危険)」(CVSS> = 7)で、45%は深刻度が中程度の「レベルII(警告)」(CVSS <7およびCVSS> = 4)でした。言い換えると、公知となったエクスプロイトの94%が中〜高の深刻度の脆弱性に向けて開発されていることになります。

左の棒グラフは、エクスプロイト数(y軸)とCVSSスコア(x軸)を示したものです。右の円グラフは、「レベルI(注意)」(CVSS <4)、「レベルII(警告)」(CVSS <7および> = 4)、「レベルIII(危険)」(CVSS> = 7)に分類された、エクスプロイトの開発状況を深刻度の観点から示したものです。
図 2 2000年以降に公開されたエクスプロイトを脆弱性の深刻度によって分類

脆弱性、パッチ、エクスプロイト間のタイミング

今回は、公知のエクスプロイトの影響がよくわかるよう、エクスプロイトと対応CVEとをまとめて分析しました。なお、すべてのエクスプロイトに対応CVEがあるわけではない点には留意してください。単純に対応するCVEが存在しないエクスプロイトもありますし、対応するCVEが未公開のエクスプロイトもあります。本稿執筆時点では対応するCVE番号を持つエクスプロイトはエクスプロイト データベース内に1万1,079件(〜26%)存在しています。ここでは、対応するCVEをもつエクスプロイトを中心に、脆弱性、エクスプロイト、パッチ提供のぞれぞれのタイミングを分析しました。

図3は、脆弱性発見からCVE公開までのタイムラインを示しています。ふつう、脆弱性発見の正確な日付はわかりませんが、CVE-IDが割り当てられた時間とCVEが公開された時間についてはCVEデータベースから確認できます。典型的なパターンでは、CVEはベンダによるパッチ提供直後が公開日です。パッチが公開されると、攻撃者は更新されたソフトウェアにアクセスしてリバースエンジニアリングし、脆弱性を見つけることができます。おいおい見ていきますが、ほとんどのエクスプロイトは、パッチが公開された最初の週のうちに開発・公開されています。ベンダによってはCVEの公開を遅らせて顧客に更新の時間を与えることもあります。

さて、CVEが正式に公開されると、全世界で脆弱性関連情報がただちに利用できるようになります。ほとんどのセキュリティベンダはこの時点からその脆弱性用シグネチャや保護戦略の開発を始め、大多数の攻撃者もこのタイミングで脆弱性の悪用を開始します。攻守が一刻を争うこの戦いでは、先に行動した者に勝利のチャンスがめぐってきます。つまり、CVE、パッチ、エクスプロイトのそれぞれが公開されるタイミングからは、こうして繰り広げられるセキュリティ闘争について興味深いコンテキストが得られるということです。

このチャートは、エクスプロイト開発としてありうるタイムラインのサンプルを示しており、脆弱性の発見時点、CVEの割り当て時点、パッチの公開時点、CVE公開時点の観点から「ゼロデイ脆弱性と見なすべき脆弱性」と「Nデイ脆弱性と見なすべき脆弱性」を示しています。
図 3 脆弱性の発見/公開/パッチ提供/エクスプロイト公開のタイムライン

エクスプロイト数(Y軸)に対するエクスプロイト公開・パッチ提供開始からの経過週数(X軸) 図 4 パッチ提供開始の週を0週目として、週次で見たエクスプロイト公開数。ゼロデイエクスプロイト(パッチ提供開始前に公開されたエクスプロイト)については、週のインデックスをマイナスで表示

図4は、パッチ提供開始の週を0週目として、週次で見たエクスプロイト公開数を示しています。1週目の棒グラフはパッチ提供開始週に公開されたエクスプロイト数を示しています。ゼロデイエクスプロイト(パッチ提供開始前に公開されたエクスプロイト)については、週のインデックスをマイナスで表示しています。なお、脆弱性のパッチ提供開始日はエクスプロイト データベースやCVEデータベースからはわからないので、2015年以降のもので深刻度が高いエクスプロイト500件分をサンプリングしてベンダサイトからパッチ公開日を手動で特定しました。調査したエクスプロイトの14%はパッチ提供開始以前に公開され、23%はパッチ提供開始週に公開され、50%はパッチ提供開始から一ヶ月以内に公開されていました。平均すると、パッチ提供開始からエクスプロイトの公開までの経過日数は37日でした。このように、エクスプロイトは非常に短期間で開発されることが多く、定期かつ適時のパッチ適用実施がいかに組織にとって重要であるかがあらためて浮き彫りになったかたちです。しかしながら、何年も前の脆弱性のパッチが未適用のまま稼働しつづけるシステムはさほど珍しくありません。

図5は、CVE公開後に各週ごとに公開されたエクスプロイト数を示しています。図4同様、CVEの公開前にエクスプロイトが公開された場合、そのインデックスはマイナスになっています。今回調査したエクスプロイトは、その80%がCVEの公開以前に公開されていたというのが衝撃的でした。平均では、CVE公開の23日前にエクスプロイトが公開されています。これに加え、データベースにあるエクスプロイトの75%は、対応するCVEがいっさい存在していませんでした。このためパッチ提供日とCVE公開日の間に一貫して差異が生じる理由は何であるかが気になりました。CVEデータベース(図6)を調べてみると、一部のCVEはパッチ提供開始直後には公開されていないことがわかりました。これによりCVEの正式公開を待たずにエクスプロイトが利用可能になる例が多いのだと思われます。こうした状況も、攻撃側がセキュリティ専門家を出し抜くケースが多い理由のひとつといえるでしょう。

エクスプロイト数(Y軸)に対するCVE公開からエクスプロイト公開までの経過週数(X軸)
図 5 CVE公開後に公開された週次ごとのエクスプロイト数。CVE開示前に公開されたエクスプロイトについては、週のインデックスをマイナスで表示

脆弱性にCVE-IDが割り当てられると、そのCVEは「RESERVED(予約済み)」というステータスになります。予約済みCVEの詳細情報は、CVEが正式に公開されるまでは機密情報として保持されます。本稿執筆時点で、CVEリストにある17万7,043件を分析して予約済みになっているCVE数を数えてみました。図6は1999年以降に公開されたCVEと予約済みCVE数を示したもので、平均すると、CVE-IDの割り当てから40日後にCVEが公開されています。ただし1万件以上のCVEが2年以上「予約済み」ステータスのままになっています。これは、脆弱性の発見からCVE公開までの間に長いタイムラグがあるケースが多いことを示しています。概して主要ベンダはパッチ提供開始直後にCVEを公開していますが、一部のベンダはCVEステータスをタイムリーに更新できていません。これらの数値は、CVEの正式な公開を待たずにエクスプロイトが多数公開されてしまう理由を説明する結果となっています(図5)。

年ごと(X軸)のCVE数(Y軸)の推移。青いバーはその年に公開されたCVEの数を、赤の実線はその年の予約済みCVE数で、公開CVEを持たないものを示しています。
図 6 年次でみた公開済みCVE数(青の棒グラフ)と予約済みCVE数(赤の線グラフ、まだ公開されていないCVE数)の推移

ケーススタディ:2016年から2019年にかけて最も悪用された脆弱性とは

私たちは、2020年5月12日に米国CISA(Cybersecurity Infrastructure and Security Agency)が公開した2016年から2019年にかけて日常的に悪用されていた脆弱性トップ10のエクスプロイトとパッチについての情報を確認しました。表1にその詳細を示します。なお、CVEのエクスプロイト データベースに複数のエクスプロイトがある場合は、そのなかで最初に公開されたものをエクスプロイト公開日としています。パッチに関する情報はベンダのアドバイザリページから取得しています。この小さなサンプルセットでは、エクスプロイトの10%がゼロデイで、40%はパッチ提供開始週に利用可能になっていました。この数値は上記図4・図5で得た統計とも一致しています。ゼロデイ エクスプロイトとCVE開示前に公開されたエクスプロイトの占める割合が、より大きなサンプルで観察された割合より小さいのは、最も悪用される脆弱性はえてしてMicrosoftやAdobeなど主要ベンダの製品に影響を与えるものであることが多く、こうしたベンダはその他のベンダと比べ、すばやく脆弱性を修正し、パッチ提供を行うためです。多くのサードパーティベンダ、オープンソースプロジェクトには、新たに報告された脆弱性を処理する十分なリソースがなく、最終的にパッチやCVEの公開前にエクスプロイトが公開されてしまっています。

CVE Exploit-ID CVE公開日 エクスプロイト公開日 パッチ公開日 CVSS v2スコア 説明
CVE-2017-11882 43163 11/14/2017 11/20/2017 11/14/2017 9.3 Microsoft Office 数式エディタにメモリ破損の脆弱性
CVE-2017-0199 41894,41934,

42995

4/12/2017 4/18/2017 4/11/2017 9.3 Windows API に Microsoft Office/WordPad でリモートでコードが実行される脆弱性
CVE-2017-5638 41570,41614 3/10/2017 3/7/2017 3/6/2017 10 Apache Struts にはリモートでコードが実行される(RCE)脆弱性
CVE-2012-0158 18780 4/10/2012 4/25/2012 4/10/2012 9.3 MSCOMCTL.OCXにリモートでコードが実行される(RCE)脆弱性
CVE-2017-0143 41891,41891,

41891

3/16/2017 4/17/2017 3/14/2017 9.3 Windows SMBにリモートでコードが実行される脆弱性
CVE-2018-4878 44412 2/6/2018 4/6/2018 2/6/2018 7.5 Adobe Flash Playerに Use-after-free (メモリ解放後使用)の脆弱性
CVE-2017-8759 42711 9/12/2017 9/13/2017 9/12/2017 9.3 .NET Frameworkにリモートでコードが実行される脆弱性
CVE-2018-7600 44448,44448,

44482

3/29/2018 4/13/2018 3/28/2018 7.5 Drupalにリモートでコードが実行される脆弱性
CVE-2019-11510 47297 5/8/2019 8/21/2019 4/24/2019 7.5 Pulse Secureに任意のファイル読み取りの脆弱性
CVE-2019-19781 47901 12/27/2019 1/11/2020 1/19/2020 7.5 Citrix Application Delivery Controller(ADC)にディレクトリトラバーサルの脆弱性

表1 2016-2019年にかけて悪用された脆弱性トップ10

結論

かつてないスピードと数で新しい脆弱性が次々発見されています。もちろん、公知のエクスプロイトのない脆弱性も存在はしますが、既知の脆弱性の大半になんらかのエクスプロイトが存在することは間違いないでしょう。有能なリバースエンジニアなら対象パッチを分析してエクスプロイトを開発可能です。なお、今回調査した4万5,450件の公開済みエクスプロイト セットは現実に存在するエクスプロイトのごく一部にすぎず、今回は個人が所有し、闇市場でのみ取引されている多くのエクスプロイトに関する情報は調査対象に含めていないことから、観察されたエクスプロイト数やエクスプロイトの開発スピードが、その分過小評価されているものと考えられます。

本調査では、タイムリーなパッチ適用と更新の重要性が改めて確認されました。脆弱性パッチの提供開始直後から侵害の可能性が急速に高まります。無料で使える脆弱性スキャンツールも多く、ほとんどのベンダがCVE公開に先立ってパッチを提供する用意をしていることを考えれば、パッチ適用を遅らせる理由はないでしょう。

パロアルトネットワークスのお客様は、次のような製品を通じて脆弱性管理の支援を受けることができます。

  • 次世代ファイアウォールの驚異防御サブスクリプション
  • Prisma Cloudは振る舞いベースの分析とPrisma Cloud Intelligence Streamとを組み合わせ、脆弱性の管理を行うことでユーザーへの攻撃シナリオを警告、保護を提供
  • Cortex XSOARは脆弱性管理を最適化

多数のパロアルトネットワークス製品は、AutoFocusWildFireが提供する精度の高い脅威インテリジェンス情報により、実際の利用が広がっている脅威に関する最新情報を取得することができます。