note見出し画像_1280_670___1_

GASではじめる脆弱性対応

先日、三菱電機への不正アクセスによる情報流出事件が大きな話題となりました。攻撃の起点は、「ウイルス対策製品の脆弱性を利用した攻撃」と発表されています。
※本件の詳細についてはpiyologさんがまとめてくださっているので、
 そちらをご覧ください。


脆弱性とは、「OSやソフトウェアの不具合や設計ミスによる、安全性上の欠陥」を意味します。
本件は脆弱性情報が公表・修正される前のゼロデイ攻撃だったとされているので、脆弱性対応を行っていたとしても防げないケースではありますが、「脆弱性は攻撃者にとって格好の踏み台になる」という恐ろしさがよく分かる事件でした。

あまりにもクリティカルな脆弱性はネットでも話題になり目に留まることもありますが、そうではない脆弱性も日々発見・公表されており、能動的に情報を収集する必要があります。
脆弱性を突かれた事故を未然に防ぐために、今回は「なるべくコストやリソースを割かずに、情シスが最小限の仕組みで実施できる脆弱性対応のツール」をGASで作成してみました。

■脆弱性対応の必要性

脆弱性が残り続けていると、内部からも外部からも攻撃の隙を与えることになります。
ルーターやWebサーバーなどのインターネットに接している機器の脆弱性だけ対応していればいいと思われがちですが、社内のPCやサーバーに脆弱性が残っていた場合、標的型攻撃などで社内のPCがマルウェア感染した際に、社内に残されている脆弱性を利用して二次被害が一気に広まる危険もあります。

WindowsUpdateのように、定期的に修正パッチが配布されるような仕組みであればまだしも、手動でアップデートを適用しなければいけない物も多く、能動的に脆弱性情報を取得して対応しなければ、何年も脆弱性が放置されていたといったケースも少なくはありません。

社内のIT資産に対して脆弱性対応を行うためには、以下の4つのステップが必要となります。

1.MDMや資産管理ツールを利用し、社内で利用している
 ソフトウェアインベントリを収集する
2.脆弱性情報を取得し、該当する製品がないかインベントリと照合する
3.対応が必要な製品について、アップデートを配布する or 促す
4.再度インベントリを収集し、正しくアップデートされた確認する

今回は脆弱性対応の起点となる、「脆弱性情報の収集」について焦点を当てて考えてみました。

■脆弱性情報の収集元

脆弱性情報を収集・管理・公表している団体がいくつかあります。
WikipediaIPAの解説がよくまとまっているのですが、かいつまんで説明します。

MITRE
米国政府の支援を受けた非営利団体であるMITRE社。
各脆弱性に採番される識別子である「CVE(Common Vulnerabilities and Exposures)」を管理しているのがこの団体。
CERT/CCやOSVDBなど主要な脆弱性情報サイトと連携して、脆弱性情報の収集と、重複のない採番に努めている。

National Vulnerability Database (NVD)
MITREのスポンサーでもあるNISTが管理している脆弱性情報データベース。
CVEで命名された脆弱性情報の詳細情報を、NVDで提供するという住み分けを行なっている。
「CVSS(Common Vulnerability Scoring System)」により、各CVEの危険度の採点を行っている。

JVN
JPCERT/CCとIPAが共同で管理している脆弱性情報データベース。
CVEの管理団体が米国であり日本での脆弱性情報が網羅されているわけではないため、日本の脆弱性情報に焦点を置いたものとなっている。
MITRE社と連携してCVE採番の枠組みに参加しており、MITRE社公認の「CVE情報源サイト」のひとつ。
USのCERT/CCが公開した情報は、翌日には翻訳されてJVNとして公表される。

JVN iPedia
JVNと同様に、JPCERT/CCとIPAによって管理されている脆弱性情報データベース。
JVNに掲載される脆弱性対策情報のほか、国内外問わず公開された脆弱性対策情報を広く公開対象としている
なお、JVN iPediaはNVDから情報を得ていることもあり、CVSSによる危険度の採点も合わせて公開している。
「MyJVN API」というAPIも用意されており、APIからも情報の取得が可能。


まとめると、「JVN iPedia」が国内外の脆弱性の情報を一番幅広く抑えているので、今回は「JVN iPedia」を脆弱性データベースとして活用します。
※海外で掲載された情報を更に翻訳してから公表しているため、ベンダが
 最初に情報を公開してから数日の遅れがある点については要注意

■JVN iPediaから脆弱性情報を収集するGAS

JVN iPediaは、RSSでも脆弱性情報が配信しているのでRSSリーダーでも収集は可能ですが、情報を整形したり、収集したインベントリ情報と当てたりとカスタマイズしたかったので、今回は「MyJVN APIから脆弱性情報を取得してスプレッドシートに追記するGAS」を作成してみました。

なお、Googleスプレッドシートには「IMPORTFEED」という関数が用意されているので、この関数を使ってRSSフィードを取得することも可能ですが、取得するフィードのフィルタや重複排除も実装したかったので、APIから情報を取得することにしました。

ちなみにIPA自身もMyJVNを使ったツールをいくつか出していますが、インストール型なので実行環境をどうするかという問題もあったり、結局スプレッドシートに出力した方が他の情報との連携が用意なので、それらの使用も見送りました。

作成したGASを実行すると、このように月別にシートを作成して「MyJVNで前日更新された脆弱性情報」を追記してくれます(「スコア」のセル色の濃淡はスプレッドシート上で設定しています)。

MyJVN脆弱性情報一覧

このGASを日次実行するようにトリガー設定しておけば、脆弱性情報が毎日追記されるので、それらの情報とソフトウェアインベントリ等と突合し、該当する製品が社内で使われているようであれば、アップデートの実施など必要な措置を検討しましょう。
特に「攻撃元区分」が「ローカル」より広く、CVSSスコアが高い脆弱性については早急に対応する必要があります

実際のGASのコードはこちら。


■補足

繰り返しになりますが、今回作成したGASはなるべくコストやリソースを割かずに、情シスが最小限の仕組みで実施できる脆弱性対応をテーマとしているので、以下のような課題もあることは認識しておいてください。

・ゼロデイ攻撃には対応できない
そもそも論ですが、脆弱性情報が公表される前のゼロデイ攻撃には対応できません。
これらの対策には、EDRやIDS/IPSなど、シグネチャ型ではなく振る舞い検知など動的に攻撃を検出する仕組みが別途必要となってきます。

・脆弱性情報取得までのタイムラグ
今回作成したGASは「JVNが前日に公表した脆弱性の一覧を取得する」という仕様なので、脆弱性情報を最初に各ベンダが公表してからJVNに掲載されて本ツールで収集するまで、数日の遅延があります。
脆弱性情報が公表され次第直ぐにチェックできるのが理想ですが、更新頻度も更新件数もそれなりにあるので、「リアルタイムのチェックは現実的ではなく、社内インフラを対象としているのでそこまでのリアルタイム性は必要ない」という前提で日次確認としています。
すべて自動化してリアルタイムに検知できる仕組みが作れれば理想ですが、そこまで実現するにはかなりの作り込みが必要になります。

・Webサービスにはより高度な脆弱性対応が必要
インターネットに接点があるWebサービスは常に攻撃者からのリスクに晒されているので、JVNに掲載される情報を参照してから対応したのでは遅すぎる場合があります。CVEを直接参照してリアルタイムで脆弱性対応を行うのが望ましく、「Vuls」など高度な脆弱性スキャンツールの導入を検討すべきでしょう。
また、定期的に外部のセキュリティ専門業者に依頼して脆弱性診断を受診し、「既知の脆弱性だけでなく、内製により自ら生み出した脆弱性」についても検知・対応する必要もあります。

逆にサーバーに特化したスキャン型の製品では、ネットワーク機器やデバイスドライバなどの非対応の製品には弱い側面もありますので、JVNなどから手広く情報を収集して確認する運用も別途必要です。
プロダクトサイドと社内インフラサイドで管轄を分けて、それぞれに最適な仕組みで脆弱性対応を共に進めて行けるのが理想でしょうか。

■おわりに

日々新たに発見される脆弱性について継続的な対応を続けて行くのは大変ですが、脆弱性を何もせずに放置するよりかは遥かにましです。
今回作成した脆弱性情報収集のGASはあくまで一例なので、他にもっと効率の良い方法やツールがあるかもしれません。
まずはできることから少しずつ、脆弱性対応を進めていきましょう!

この記事が気に入ったらサポートをしてみませんか?