このところ、オープンソース・ソフトウェアで深刻な問題が発見されて話題になるなど、「脆弱性」というワードを耳にすることが多くなりました。一方で、実務の中で脆弱性に対してどう立ち向かえばよいのかは、まだ十分には知られていないところかと思います。
そこで、本連載では脆弱性に対峙するための一つのアプローチとして、資産管理の情報を脆弱性情報と紐付けて一元的に管理する方法について紹介していきます。
まず大前提として、「脆弱性」とはいったい何なのでしょうか。これをひと言で書いてしまえば"外部からの攻撃を許してしまうソフトウェアの欠陥"です。例えば、データを暗号化するロジックに欠陥があればデータを盗み出されてしまうでしょうし、データベースの保護に欠陥があれば情報を改ざんされてしまうでしょう。このような情報セキュリティの三要素(図1)に影響を与えてしまうようなバグのことを、総じて「脆弱性」と呼んでいます。もし、脆弱性があなたのシステムに含まれていれば、クラッカー(攻撃者)はそれを攻撃の糸口として利用し、システムに対してさまざまな攻撃を仕掛けることができてしまうでしょう。
項 目 | 概 要 | 脆弱性の例 |
---|---|---|
機密性 | 認められた人のみ情報にアクセスできること | 個人情報管理システムが攻撃され、情報がクラッカーの手にわたってしまった |
完全性 | 情報が破壊、改ざんされないこと | 本来は特権ユーザーでなければできない操作を、一般ユーザーが特殊な手順で実行できてしまった |
可用性 | 必要なときに情報にアクセスできること | システムが攻撃されたことによってダウンし、意図せず再起動させられてしまった |
では、システムを運用する立場からは、どのように対策をしていけばよいのでしょうか?
システムにインストールしたソフトウェアの中に、脆弱性が一つもない状態をつくり上げるというのは、もちろん理想的な解決策です。しかし、パッチを当てたりシステムの利用を停止するような直接的な対応を無差別に行うのは、実施コストの面から考えても現実的とはいえません。ソフトウェアにバグ(脆弱性)はつきものです。日々発生する新しい脆弱性にそのような対応をし続けることが難しいことは、容易に想像していただけると思います。そこでまず重視したいのは、コンピューター(資産)に対して脆弱性がどの程度リスクを与えているのかを正しく把握するということです。このリスク評価の結果から、対応要否や優先度などの判断をしていくことになります。
前章のようにリスクを正しく把握し、脆弱性に立ち向かうためのフローを「脆弱性ハンドリング」と呼んでいます。脆弱性ハンドリングでは脆弱性に関する情報収集から対応までを行いますが、特に次の3つのポイントを押さえることが肝要です。
それではまず、どのようにシステム中の脆弱性を把握すればよいのでしょうか。もっともシンプルな方法は「実際に攻撃を試してみる」ことです(このような手法を「ペネトレーションテスト」と呼びます)。しかし、日々発見される新しい脆弱性を調べるには攻撃を繰り返さなければなりませんし、そもそもシステムを落としてしまう恐れがあるなど、リスクを伴います。日常的な脆弱性ハンドリングには少しハード過ぎるといえるでしょう。
そこで、資産管理の情報を活用した、もっと低いリスクで脆弱性の有無を確認できる方法をおすすめしています。資産管理の情報は、どのコンピューターにどのソフトウェアがインストールされているかで管理されています。ですから、どのソフトウェアに脆弱性が見つかったのかという情報さえ入手できれば、資産リストを検索することで脆弱性を含んだコンピューターをリストアップすることができるのです。図2
しかし、脆弱性の情報はどうやって入手すればよいのでしょうか。ソフトウェアの弱点の情報なんて、高度なハッカーの間だけで共有されている……ようにも思えてしまいますが、実はそうではありません。私たちのように脆弱性から資産を守る立場の人でも簡単に活用できる脆弱性情報データベースが、独立行政法人 情報処理推進機構(IPA)などによって運営されています。このデータベースには脆弱性の性質に関するさまざまな情報がまとめられており、Webサイトなどから確認することが可能です。図3
概 要 | 脆弱性の例 |
---|---|
概要 | 脆弱性がどのようなもので、どういう影響を与えるのかの概要説明 |
CVSSによる深刻度 | CVSS基本値を用いた基本的なリスク評価 |
影響を受けるシステム | 影響を受けるソフトウェアの名前 |
対策 | 脆弱性に対する対策方法や、パッチへのリンクなど |
参考情報 | この脆弱性に関する解説などの外部リンク |
新しい脆弱性が発見されれば随時更新されるため、基本的にはこのWebサイトを見ていれば必要な脆弱性情報をすべて入手することができます。右記参照
脆弱性の情報を入手したら、脆弱性情報の「影響を受けるシステム」を参考に資産情報を検索し、対象のソフトウェアがインストールされているコンピューターをリストアップしましょう。前章でも説明したように、これがそのまま"脆弱性のあるコンピューター"の一覧ということになりますから、このリストを持ってリスク評価のステップに進みます。ここで注意したいのは、資産情報がきちんと管理されているか?ということです。もし資産情報が間違っていれば、正しいリストアップ結果を得ることができず、脆弱性のある資産を見逃してしまうことにつながりかねません。脆弱性ハンドリングを正確に実施するためにも、日ごろから資産情報をしっかりと管理することが重要です。
管理している資産の中に脆弱性のあるコンピューターが存在することが判明すれば、次はリスク評価をしなければなりません。脆弱性がどのような影響を与えるのか(例:「機密情報が流出する」「コンピューターがハングアップする」など)を正しく捉えて、どのレベルの脅威であるのかを把握します。また、発見された脆弱性の中からより重要な問題に素早く対応するためにも、対応の順位付け(トリアージ)をすることも重要です。
脆弱性のリスク評価では、脆弱性情報の「CVSSによる深刻度」の情報が役に立ちます。CVSSは脆弱性に関する基本的なリスク評価(図4)で、脆弱性情報データベースに掲載されているCVSSは専門家が検討の上で付加した値です。この指標を参考にすることで基本的なリスクをスコア化して比較することができますし、その脆弱性がどのような特徴を持った脅威であるのかも確認することができます。
このCVSS基本スコアだけで脆弱性の深刻度をシンプルに比較してしまうのも悪くありません。しかし、加えて自分のシステムの特徴を加味してやることで、よりシャープなリスク評価になります。例えば、「攻撃元区分」が「ネットワーク」の脆弱性の場合、ネットワークに接続されていないコンピューターではこの脆弱性による影響は小さいことがわかります。また、例えば重要な社内システムのような"落ちるととても困るシステム"であれば、「可用性への影響」がある脆弱性には急いで対応したほうがよいかもしれません。このようにシステムの特徴を加味した検討を行えば、より適切な判断を行える可能性を高めることができるでしょう。
最後に、リスク評価で対応が必要だと判断した脆弱性に対して、実際の対策を施していきます。具体的な方法はシステムによってさまざまですが、脆弱性情報の「対策」や「参考情報」などを参照すれば、対策パッチやアップデート、脅威の緩和策といった必要な情報を知ることができます。
今回は、「脆弱性」とは何かを説明するところから、脆弱性ハンドリングで行うべき対応までを、主に理論的な部分で説明してきました。資産管理情報を活用することで、システムに含まれている脆弱性を簡単に検出し、リスク評価して対応するという流れを簡単に実施できることがおわかりいただけたと思います。次回は、実際に資産管理システムを活用しながら脆弱性ハンドリングを行う運用例をご紹介します。