最近、対応すべき脆弱性の洗い出しに、米国の国土安全保障省 (DHS) のサイバーセキュリティ インフラセキュリティ庁(Cybersecurity & Infrastructure Security Agency、通称 CISA)が公開している、悪用された脆弱性のリスト (Known Exploited Vulenraiblites catalog, 通称 KEV) を活用するのをよく目にするようになってきました。
今回は Microsoft セキュリティソリューションのアドベントカレンダーの記事という事で、KEV が話題になってる昨今、Microsoft のソリューションで、どうやって KEV対応を確認するんじゃ~ ということを書いてみます。
Known Exploited Vulenrabilites (KEV) catalog とは?
Known Exploited Vulenrabilites catalog とは、その名が示す通り、悪用を確認している脆弱性のリストです。
米国では、大統領令 それに基づき、CISA が 拘束力のある運用指令 Binding Operational Directive (BOD) 22-01 を発令し、各組織での脆弱性管理の見直しと、CISAが発行をはじめた KEV への対応が求められるようになりました。すべての組織が参照して、リストされている脆弱性の対応をすることが推奨されていますが、連邦政府では対応が義務化されています。
このような、悪用を評価軸としたリストが公開され、それを基に対応が指令されている背景として、CISAは、広く利用されている脆弱性評価 CVSS を利用した、脆弱性対応の優先付けに限界があることをあげています。例えば、特権昇格の脆弱性は、その性質上、CVSS スコアは低いのすが、初期侵入後特権を得るために利用されるケースなど、実際には悪用が活発に行われているものも多くあります。CVSSは脆弱性自体の性質を評価するものであるため、CVSSスコアで対応基準を決めると、どうしても、「組織が、悪用から保護されるために優先度の高いものはどれか」という観点では漏れがでてきてしまう、というわけです。
その点を改善するために、CISAは、組織における脆弱性対応で利用する脆弱性の評価を CVSS から SSVC(Stakeholder-Specific Vulnerability Categorization)を主軸とした、脆弱性管理を推奨しています。SSVC って何? というのは、shinobe179 さんの素晴らしい記事 SSVCを参考にした脆弱性管理について本気出して考えてみている(進行中) をぜひ読んでみてください。
KEV の目的は、悪用が確認されている脆弱性の重大なリスクを下げる ということにあります。このため、この世で悪用されている脆弱性すべてが掲載されているというよりも、「早急に必須で対応が必要なリスクの高いもの」が掲載されています。このため、KEV に掲載されている脆弱性は、脆弱性緩和のための明確なガイダンスがあり、特定の期限までに対応することが決められています。
KEV はどういった目的のもので、どのように活用してほしいかということについては、CISAの REDUCING THE SIGNIFICANT RISK OF KNOWN EXPLOITED VULNERABILITIES にまとめられています。
なお、KEVに新しい脆弱性が追記されたらメールとかで通知を受け取ることもできます
Subscribe to the Known Exploited Vulnerabilities Catalog Update Bulletin
今回使う Microsoft セキュリティソリューション
さて、そんなKEVに掲載されている脆弱性に未対応のデバイスが、組織内にどれだけあるのかを調べてみたいと思います。
デバイスの脆弱性の対応状態を知ると言えば、Microsoft Defender Vulernability Management とか、Defender for Endpoint がつかえます。
現時点では、「KEV未対応端末を表示する」みたいなオプションメニューのはないので、今回は、Microsoft Defender for Endpoint のAdvanced Hunting Query (日本語だと高度な追及とか高度なハンティング)で KEV に記載された脆弱性が未修正のデバイスを見つけてみたいとおもいます。
クエリ
Known Exploited Vulenrabilites catalog に実際のリストが公開されています。(現時点では、CSV, JSON )
一方のM365側ですが、Advanced Hunting で利用できるデータスキーマ DeviceTvmSoftwareVulnerabilities に、各デバイスにインストールされているソフトの脆弱性の一覧が入っています。(ちなみに、これはSentinelではまだサポートされてない模様)
ということで、KEV から情報をとってきて、KEV に入っている CVE を、DeviceTvmSoftwareVulnerabilities の CVE と比較して一致している奴を出力するみたいな簡単なクエリにしてみました。:
let CISA_KEV=
externaldata(cveID: string, vendorProject: string, product: string, vulnerabilityName: string, dateAdded: datetime, shortDescription: string, requiredAction: string, dueDate: datetime)
[
h@'https://www.cisa.gov/sites/default/files/csv/known_exploited_vulnerabilities.csv'
]
with(format='csv',ignorefirstrecord=true);
DeviceTvmSoftwareVulnerabilities
| project cveID=CveId, DeviceName
| join kind=inner CISA_KEV on cveID
| summarize count() by DeviceName,cveID,vendorProject,product,vulnerabilityName,dateAdded,shortDescription,requiredAction,dueDate
| order by dueDate asc
今回は、各デバイスのCVEごとに羅列し、KEV に含まれている情報(KEV追加日、概要、必要なアクション、対応期限)などを表示しています。
クエリをいろいろ変更すれば、好みの感じで表示されるようにすることもできるかと。
試せてないけど、各脆弱性のベンダーから、ベンダー側の情報をひっぱってきて、とかできればもっとよさそう。
Microsoft 製品だったら、Security Udpate Guide portal にデータは全部あり、API経由で取得も可能。
いろいろやることもできたらやってみたい、今度。
まとめ
理想としては脆弱性はすべて修正プログラムをすぐに適用することが望ましいわけですが、特に優先度を上げて対応が必要な脆弱性はどれか、ということを把握するのには、KEV は便利です。
気を付けておくこととしては、先にふれたように、KEVは CISA がベンダーからの情報提供を受けたり、一般に公開されている情報を確認した内容を基に、CISA の基準で、「重大なリスクをもたらす」として判断された脆弱性のリストあるということ。すべての悪用されている脆弱性が掲載されていない(特に、数年以上前に公開された脆弱性など)ですし、KEVに掲載されていないけれども現在アクティブな悪用がされているという脆弱性があります。
また、KEVは、あくまでも米国の省庁であるCISAが米国の対応指令で利用するリストであることにも注意が必要。網羅性という意味では、例えば、利用シェアが日本に多く米国にはすくないソフトウェアの脆弱性などは、カバーされていないことに注意しておかなくてはいけません。
ということで、KEV が話題になってる昨今、Microsoft のソリューションで、KEV 対応の確認したいなー! と思っていた方に目にとまって、役立ってたら🙌
そして、(もっとすごいことできる人いっぱいいると思うので)こうすればもっと良いよ~みたいな情報あったら、ぜひ教えてください👀
それでは、皆様良いホリデーを⛄