Japan
サイト内の現在位置
簡単!Excelからはじめる脆弱性管理 ~トリアージ~
NECセキュリティブログ2024年11月8日
NEC サイバーセキュリティ戦略統括部 セキュリティ技術センターの山本和也です。今回のセキュリティブログでは、「脆弱性のトリアージ」を理解する上での第一歩として、Excelだけで出来る簡単な脆弱性トリアージ方法を紹介します。
- ※Excelは、米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
目次
1.はじめに
ソフトウェアを用いた製品・サービスにおける「脆弱性」とは、製品・サービスを構成するOSや各種ソフトウェアなどに含まれる欠陥・弱点のことを指します。一つの製品・サービスには多くのソフトウェアが含まれ、それぞれのソフトウェアに対する脆弱性は日々検出されることから、製品・サービスの開発・運用において、脆弱性を把握し対処を行う、つまり「管理」していくことが大切です。このことを「脆弱性管理」と呼んでいます。本ブログでは、運用中の脆弱性管理についてフォーカスします。運用における脆弱性管理では、日々の運用の中で重要度や影響を見極めて対処を打っていかなければなりません。
脆弱性管理においては、様々な有効なツールや、有効とされる指標があります。ただしそれを使いこなすには費用やスキル、時間がかかります。本ブログでは、Excelの平易な機能のみを用いた脆弱性管理の入門的な方法を紹介いたします。Excelの機能であるマクロなど、複雑な機能も使用しません。
また最後に、今後の発展としてどのような部分を強化していくことができるのかなどについても述べます。
今回の記事のスコープ外とするもの:
- 脆弱性を管理、対応するための組織・体制については述べません
- 脆弱性それぞれに対する具体的な技術情報については述べません
- 文中で扱う、トリアージに有効な指標についての具体的な優劣については述べません
2.脆弱性管理におけるトリアージ
ソフトウェアの脆弱性管理において重要とされる考え方の一つに「トリアージ」があります。トリアージという言葉は医療業界などで現在でも多く使用される言葉で、災害時や病院内での対応において、多数の傷病者の対応に当たる際に、その傷病のレベルに応じて優先度を決め、対応にあたることです[1]。
ソフトウェアにおいてこれを転用すると、製品・サービスの構成に含まれる多数のソフトウェアから多数の脆弱性が検出された場合に、どのような順番で対処に当たるかを考えるということを指します。
脆弱性のトリアージについても、複数のガイドラインが存在します。例えば筆者が所属するISOG-J[2]のWG1においても、組織内でトリアージのガイドラインを作成するための手引書として、「脆弱性トリアージガイドライン作成の手引き」[3]を2024年に公開しておりますので、是非ご参考下さい。
次章において、単純なシステムを例として、脆弱性管理におけるトリアージを適用する手順を記載します。システムの規模・複雑性が上がれば手作業での確認、Excelのみでの管理では対処できない部分も出てきますので、4章以降でその方向性について示します。
3.Excelからはじめる脆弱性管理
3章では、以下のようにごくごく単純な、一つの仮想マシンにすべての機能を搭載して提供しているWebシステムを想定します。
①構成要素を書きだす
トリアージ以前に、脆弱性管理を行うには対象とする製品・サービスに含まれているソフトウェアの構成要素について、まずは中身を理解することが必要です。ここでは実際に中身を調査・確認し、その内容をExcelに書き出すこととします。組み込みのハードウェアなどでは、使用されているファームウェアなどもわかれば書き出していきます。
使われているソフトウェアを書きだすことに成功しました。ここではまだトリアージは始まっていません。
実際の大変ポイント:
実際のケースでは、ここが数行ではないことがほとんどです。製品・サービスに含まれているソフトウェアが100種類、1000種類だとしたら、書き出すことすら大変に感じるのではないでしょうか
②情報を集め、記録する
3つのソフトウェアの列挙を行いましたが、実際には同時に対処を行うことはできません。ここで大切なのは、「何の対処を優先するか」という点です。まずは1つ特に重要と思われるソフトウェアを選びます。ここでは外部からのアクセス時に最初に動作する「Apache HTTP Server」とします。
脆弱性情報は、NVD[4]やJVN iPedia[5]などのサイトで公開されていたり、OSSであればコミュニティサイト、販売されている製品であればベンダーサイトなどに記載される場合もあります。
例えばJVN iPediaにて「Apache HTTP Server」と検索すると、2024/10/1時点で338件見つかりました。ここでは「CVSSv3」という項目を見てみましょう。CVSSというのは脆弱性の深刻度を判断するための一つの指標です[6]。CVSSにはCVSS基本値、CVSS現状値、CVSS環境値がありますが、ここで表示されているのはCVSS基本値です。値の範囲は0.0~10.0で、数が大きいものほど深刻度が高いとされます。「CVSSv3」でソートし、値の大きいもの、ここでは9.0以上の25件を記録していきましょう。
取得した情報を、①とは別シートに列挙していきます。
今回は以下のような情報を記録しました。
名称 | 内容 |
---|---|
CVE番号 | 脆弱性の一意の識別子 |
URL | 脆弱性情報を取得したサイトのURL |
CVSS | 脆弱性の深刻度を定める指標 |
こういったサイトは、定期的に巡回し、新たな脆弱性がないか確認してみてください。例えば1週間に1度、各Webサイトを確認してみることから始めるなどの方法が簡単です。
実際の大変ポイント:
ソフトウェアごとに、脆弱性を公開しているサイトのURLは異なっています。それらを一定の周期で確認し、中身を転記していくという作業には、コスト(労力や時間など)がかかります。
③影響の調査 / 優先度付け
記録した25件の脆弱性について、CVSSの値に沿って考えると、いずれも深刻度が高いということになりますが、この中でも特に優先して対処すべきものが無いか確認しましょう。
参考になる一つの情報として、米国の政府機関であるCISAが公開している「KEVカタログ」[7]があります。これは実際に悪用が確認された脆弱性などの情報も含めて掲載されているリストで、CSVなどの一覧ファイルも公開されています。
以下のURLから、「CSV」を取得してください
Known Exploited Vulnerabilities Catalog
https://www.cisa.gov/known-exploited-vulnerabilities-catalog
先ほど作成した表と比較のため、記載中のエクセルファイルとマージします。取得したファイルを開き、シートを右クリックして、「移動またはコピー」より、さきほどのエクセルファイルにシートを追加してください。
加えて、先ほどのエクセルに、「KEV」列を追加し、D列の各セルに以下の関数を入力してください。「known_exploited_vulnerabilities」シートのA列に、該当のCVE番号が存在する場合は0ではない正の数が返却されます。
D列に指定する数式例
=COUNTIF(known_exploited_vulnerabilities!A:A,A2)
- ※2行目の場合の例です。
試してみると、「CVE-2021-40438」が該当しました。この脆弱性については、CVSSが高いものの中で、KEVカタログに存在していたということで悪用されるリスクが非常に高いと考えられます。そのため、この脆弱性を優先的に対応すると判断するとします。
実際の大変ポイント:
優先度の判断が脆弱性のトリアージにおいて、一番難しい部分となります。ソフトウェア構成の取得や脆弱性情報の取得は、ツールを導入すればある程度の自動化は可能です。ただし、「どの脆弱性が自らのシステムにとって影響が大きく、優先的に対処すべきか」という情報は、「判断」が入るため、一意に定めることが困難です。CVSSの他にも有力な指標は複数提案されていますが、どれか一つをもって「優先的」と判断できるようなオールラウンドな指標は現時点では見つかっておりません。今回の例では、CVSSとKEVカタログから優先度を確認していますが、システムのリスク・費用対効果などを考慮し、適宜見直しを行うのが良いでしょう。
④対処の実行
優先的に対応すると判断した脆弱性の詳細情報を確認し、その脆弱性の「影響を受けるバージョン」を確認します。脆弱性が該当する対象については、「Apache HTTP Server 2.4.48 およびそれ以前」という記載があり、本システムでは、「2.4.26」を用いているため、対象となります。
次に、対策方法を調べます。JVN iPediaに掲載されている「対策」の欄を見ると、「ベンダより正式な対策が公開されています。ベンダ情報を参照して適切な対策を実施してください。」との記載があるので、それに従うと、バージョン2.4.49にて、本脆弱性が修正されていることがわかりました。
これらの情報を元に、自らのシステムにおいて、バージョンアップを行うための影響・工数などを調べます。
大体わかれば、「対処方法」と「対処予定日」など含めて、情報を更新しておきましょう。
ここまでくれば、パッチを適用するための準備や、要員の確保計画ができます。
あとはメンテナンスの時を待って、パッチを当てましょう。
それぞれの脆弱性に対するステータスを記録する欄が無かったので追加し、パッチの適用が完了した後は、「ステータス」欄を「完了」に変更しておきましょう。
これで、一つの脆弱性について対処を行うことが出来ました。
あとは次の優先的な脆弱性を探し、すべての脆弱性に対処していきましょう。
3章のまとめ
集めた情報を記録し、単純な判断基準を基にしてもっとも対策を優先すべき脆弱性を選び、それに対処を行いました。これらのプロセスが脆弱性管理におけるトリアージの第一歩となります。これを応用すれば、見つけた順の対処や、やみくもに対処を行うより適切な対処を行うことができます。
4.より良い脆弱性管理にするために
3章のそれぞれのパートで実際の大変ポイントとして述べた通り、実際にはここまで単純なシステムは少なく、ここまで単純な判断は難しいです。例えば以下の要素が関係してきます。
- サーバ/ソフトウェアが多すぎて、構成を把握できない
- ソフトウェアの種類が多すぎて、脆弱性情報を集められない
- CVSSの値と実際の環境への影響が異なる
など
ここから発展させていくにはいくつかの方向性がありますが、3つご紹介いたします。
1.自動化を行う
自動化の目的は、より多くのソフトウェア・脆弱性情報を、低コストで、網羅的に採取することです。
「①構成要素を書きだす」や「②情報を集め、記録する」などにおいては、ある程度の自動化が可能です。端末にエージェントソフトウェアを導入して情報を採取するようなエンドポイントセキュリティ製品を導入することや、端末上でコマンドを実行して情報を採取し、リストにするなどの方法が考えられます。脆弱性情報については、自動化以外にも、有償のサービスを用いて効率よく入手するなどの方法もあります。
注意点として、網羅性を大事にするあまり、管理する数が膨大になりすぎて、フォーカスすべき項目が見えづらくなってしまうことがあります。管理し切れない粒度であれば、管理のレベルを調整しましょう。
2.様々な指標を用いる
複数の指標を用いることの目的は、ソフトウェア・脆弱性・環境に応じた指標を使い分け、より妥当な影響の判断をすることです。
「③影響の調査 / 優先度付け」において、今回用いたCVSS値の他にも、複数の指標が存在します。SSVC[8]、EPSS[9]などが存在します。それぞれ特徴が異なっているため、併用や使い分けをすると良いでしょう。あるいは、各指標を算出するために用いられたパラメータのいずれかを注目して見るなどの方法もあるでしょう。
この方法は、指標の数を増やせば増やすほど確認するボリュームが増え、その妥当性がわかりにくくなるということもあり、いずれの指標においてもまだまだ多くの議論がなされております。
過去のNECセキュリティブログにおいても、「EPSSとCVSSを組み合わせた脆弱性ハンドリング」[10]として、複数の指標を組み合わせた分析を公開しております。参考にご確認ください。
3.トリアージのスコープを変える
今回は、ひとつのソフトウェアを選び、そのソフトウェアに対する脆弱性情報を並べ、その中で優先度をつけるというものでした。多数あるものを特定の値でソートし、その中から悪用実績のあるものを重視したという考え方です。
優先度を付ける軸は複数存在します。一例にはなりますが、あるサーバは外部からの到達が難しいため対処の優先度を下げる、あるサーバは重要な情報を保有しているため対処の優先度を上げる、OSの種類によって攻撃の傾向も異なるため優先度を変える、考えうる攻撃手段の種類を確認し、ある攻撃が成立する可能性があるのであれば対処を優先するなど、様々な軸で優先度を上下させることができます。
システムに応じて重視する部分とそうでない部分は異なってくると思いますので、脅威分析なども併用して柔軟に優先度の判定方法を決めていきましょう。
5.まとめ
ソフトウェアに関する脆弱性管理およびトリアージの第一歩としてExcelを用いて実践できる内容を紹介しました。また、実際での大変なポイントを踏まえ、トリアージの精度を向上させるような方法を紹介しました。理想的にはすべての脆弱性に対処したい、説明を尽くしたいという思いはありながらも、現実的には優先順位を付けてリスクを減らしていくということが実際の運用には必要となります。本ブログを参考に、日々の脆弱性管理にお役立ていただくことを願います。
参考:
- [1]
- [2]日本セキュリティオペレーション事業者協議会, ISOG-J
https://isog-j.org/about/index.html - [3]脆弱性トリアージガイドライン作成の手引き, ISOG-J
https://isog-j.org/output/2024/TriageGuidelines.html - [4]National Vulnerability Database(NVD), NIST
https://nvd.nist.gov/ - [5]JVN iPedia, JPCERT/CC/IPA
https://jvndb.jvn.jp/ - [6]共通脆弱性評価システムCVSS概説, 独立行政法人 情報書推進機構(IPA)
https://www.ipa.go.jp/security/vuln/scap/cvss.html - [7]Known Exploited Vulnerabilities Catalog, CISA
https://www.cisa.gov/known-exploited-vulnerabilities-catalog - [8]【入門】SSVCとは?基礎を学ぼう!, NEC
https://jpn.nec.com/cybersecurity/blog/240802/index.html - [9]Exploit Prediction Scoring System(EPSS), FIRST
https://www.first.org/epss/ - [10]EPSSとCVSSを組み合わせた脆弱性ハンドリング, NEC
https://jpn.nec.com/cybersecurity/blog/231110/index.html
執筆者プロフィール
山本 和也(やまもと かずや)
セキュリティ技術センター 脆弱性管理グループ
スクラムマスターとして、脆弱性管理サービスのアジャイル開発、NEC社内外にてアジャイル開発におけるセキュア開発の推進活動、セキュリティインシデント対応などの業務に従事。CISSP、CISA、A-CSM、RSM、RPO、個人情報保護士 等を保持。NEC将棋部に所属。
執筆者の他の記事を読む
アクセスランキング