CVE数の動向と考察(2021年版)Part1

こんにちは。SIOS OSSエバンジェリスト/セキュリティ担当の面 和毅です。

ここでは@ITでもやっていた、CVE/CWEの遷移の最新版(2021年版)をこちらで取り上げてみたいと思います。

「CVE(Common Vulnerabilities and Exposures)」「CWE(Common Weakness Enumeration)」など、SCAP(Security Content Automation Protocol:セキュリティ設定共通化手順)の要素となっている脆弱性情報の視点から見てみると、色々なことが見えてきますので最新版をアップデートしたくなり、こちらで公開させて頂きます。

尚、こちらで公開したデータは公になっているCVE情報から取得したものになります。二次転載を含めてデータの再利用は許容しますので、ご自由にお使いください(出典元としてリンクを張って頂けると嬉しいですが)。



前提

まずCVEに関してですが、@ITの記事と同じくNIST(アメリカ国立標準技術研究所)のNVD(National Vulnerability Database)から取得した情報を元にしています。MITREがCVEを発行してからNVDに登録されるまでの時間差を考慮して考察を加えています。

CVE発行された脆弱性数の傾向(CVE発行数の遷移)

図1は2013-2021年に公開されたCVEの総数(つまりCVE発行数)を年ごとにグロスで見てみたものになります。日次には「Published Date」を用いていますので、そのCVEが公開された日になります。これは未だに201x年の脆弱性で未公開だったものが公開され続けているからで、例えば、CVE-2013-XX(年数はその年のバグフィックスで直してあるという意味になりますので、2013年で修正対応済みになります)が2021年に公開された場合には、2021年の公開としてカウントしています。

CVE数
2013 5199
2014 7949
2015 6494
2016 6458
2017 14658
2018 16521
2019 17316
2020 18361
2021 17992

この図からわかるように、発行/公開されたCVEの数は2017年から急激に増えていき、2018〜2019年を境に伸びとしては鈍化しています。これは

  • 2014年のHeartBleed(OpenSSLの脆弱性)やShellShock(Bashの脆弱性)の公開により、特に脆弱性検査の必要性が広く知れ渡った。
  • 2016-2017年頃にGoogleのSyzkaller/Syzbot等の様に、ファジングテスト等の自動テストツールが普及していき、ソースコード中の脆弱性が次々と検出されていった為、公表される脆弱性のが急激に増加した。
  • 以降は自動テストツールによる検出の普及と、リリース前の検査も増えたことにより数の伸びは減った。

という背景から、伸びの鈍化とCVE発行数の現象が発生したと思われます。また一方で

  • 今迄脆弱性を独自で公表しており、CVEとして発行していなかったメーカーやベンダーも、CVEとして登録・発行するようになった。
  • また、GitHubとOSSの普及によりソフトウェアの絶対数が増えてきており、それらのOSSへのCVE割り当ても行われている。

という背景から、新たなCVE発行・登録数も増えて、結果として総数では横ばい状態が続いていると推察されます。

月ごとのCVE(発行数)の遷移

図2は2013-2021年に、それぞれ発行されたCVE数を月ごとに分けたものになります。

(※)こちらの表は長くなるので別ページに分けました。

月ごとに分けると更に顕著で、CVEとして登録された脆弱性は月ごとの大小がありながらも全体的には横ばいからやや右肩上がりの増加を示しています。

「脆弱性公開日」と「CVE登録日」の違いを考慮した解析

一方で、最初に説明した通り「CVEとして登録された日」と「脆弱性の公開日」はずれており、CVEの概念が存在しなかった200x年代などの脆弱性も(当時は公開されていましたが)、新たにCVEとして登録され直しています(このような場合には、例えばCVE-2007-XXXのような番号が2021年代に振られます)。今迄のグラフでは、「CVEとして登録された日」を基準としてみていましたので、これを「脆弱性の公開日」として見てみたのが次のグラフになります。

このグラフから見てみると、新たに公開された脆弱性の伸びとしてはやはり横ばいとなっており、2018年以降は(2020年に伸びていますが)あまり上下していません。このことから、2022年には同数程度の年間17000件程度が公開されるのではないかと予想されます(あまり当てにはなりませんが)。

種類ごとに見る脆弱性(CVE発行数)の推移

CVEにはそれぞれ、脆弱性の対象となるプラットフォームが記載されており、そのプラットフォームはCPEとして一意のIDが与えられています。このCPEは、大まかに

  • a: Application(FirefoxやMySQL、opensslなど)
  • o: OS(WindowsやMacOS、Linuxなど)
  • h: HW(CiscoやF5、EMCなど)

のような種別で分けられています。以下では、種別ごとのCVE発行数の推移を見てみます。

(※)こちらの表も長くなるので別ページに分けました。

このグラフから見てみると、HWに関してはCVEへの登録数にあまり変化が見られません。OSに関しては2017年から微増していますが大まかに横ばいが続いており、Applicationに関して一定に伸びていっている様に見えます。これは、やはりOSやHWに関しては絶対数がそれほど増えておらず、一方で近年はApplicationより上のレイヤの開発が多くなされており、それに併せてApplicationレイヤでの脆弱性の発見やCVE登録が増えているからだと思われます。

このグラフから見ると、OSでは(微増ではありますが)ほぼ脆弱性数が横ばいなことから、OSベンダーの出してくる脆弱性情報を見てパッチを当てていけば(つまりWindows Updateやapt update/dnf updateなどをしていけば)対処できる事は昔から変わらないと思われます。一方で、アプリケーションの絶対数と脆弱性が比例して増えており、配布/導入形態もディストリビューションから提供される以外のもの(githubでダウンロードしたり、Dockerでイメージを持ってくるやり方)が増えているため、これらの脆弱性対応をどうしていくかが今後のユーザ・SIer等の課題になってくると思われます。

次回予告

次回は、CWEの推移と考察、及び主要なOSSの脆弱性の動きを見ていきたいと思います。

前へ

Linux Kernelの脆弱性(Moderate: CVE-2021-43975, CVE-2021-43976 )

次へ

CVE数の動向と考察(2021年版)Part1-表1