昨今、ITシステムにおけるソフトウェアの脆弱性が世間を騒がせています。ソフトウェアの脆弱性とは何か、どういう脅威があるのか、不具合情報(バグ)との違いの説明を交えて脆弱性管理の必要性を説明します。
脆弱性とは
脆弱(ぜいじゃく)とは「もろくて弱い様子」を意味し、ソフトウェアを含めたITシステムにおいて脆弱性とは「仕様上の欠陥やバグに起因する保安上の弱点」を意味します。最近ではTVや新聞などの一般メディアでも目にすることがあるため、「脆弱性」と言えば後者のソフトウェアなどの弱点(セキュリティホール)を指すということが広く認識されつつあります。
不具合情報との違い
前述の脆弱性に関する情報をまとめて、「脆弱性情報」と呼びます。これは問題の概要・対処方法・関連情報などを含むもので、ソフトウェアなどの製品ベンダーからユーザなどに向けて提供されます。
同じ様に製品ベンダーから提供される情報には「不具合情報」があります。これはソフトウェアの不具合(いわゆるバグ)を改修するためにもたらされるものです。脆弱性も広義の上では不具合に含まれるため提供側(ベンダー)の論理では「脆弱性」と「不具合」を同様に扱うことがありますが、これは受取側(ユーザ)にとっては本質的には異なるものです。
「脆弱性」が保安上の問題であるのに対し「不具合」は必ずしも保安上の問題ではありません。製品のユーザにとって機能改善のためにもたらされる不具合情報とそのパッチ(アップデートプログラム)は、対象となっている機能の不具合を許容して使う分には問題が生じません。しかし「脆弱性情報」は、保安上の問題を許容して使うことは常に脅威がつきまといます。
ソフトウェア本来のコントロールを越えることが脅威となる
一般にソフトウェアには、それが正常動作を確保するために必要な保安上の制限(アクセスコントロール)が設けられています。インターネット黎明期では、そもそもそれらのソフトウェアに触れる人間が少なかったこともあり、こういったアクセスコントロールは厳格には考慮されてきませんでした。しかし今や地球規模のユーザをかかえるインターネットでは同じ論理は通りません。近年提供されるソフトウェアは、どういった形式のものであれ、ほぼ必ずアクセスコントロールができる仕様になっています。このソフトウェアが規定しているアクセスコントロールを越えることが、脅威そのものになり得ます。
どういう脅威があるか
では、ソフトウェアの脆弱性による脅威とはどういうものがあるのでしょうか。以下に代表的なものをまとめます。
不正侵入
組織外部の第三者が、何らかの目的をもって組織内に侵入することです。
脆弱性を利用された場合に、一般に最もよくイメージされうる脅威です。サーバの脆弱性が比較的利用されます。
マルウェア感染
ウィルスなど、不正な操作を目的としたソフトウェアをマルウェアと呼びます。
近年は不正侵入のための最初の手段として用いられる傾向にあります。クライアントの脆弱性が比較的利用されます。
なりすまし
特定のシステムに対して不正なユーザが正規ユーザとしてシステムを利用することです。
脆弱性により、認証のメカニズムを悪用した場合に起こりえます。アプリケーションの脆弱性が比較的利用されます。
情報漏洩・改竄
組織にとっての重要な情報・データを外部へ送ったり、勝手に書き換えたりすることです。
脆弱性により、アクセス制御が無効化されたり迂回されたりした場合に起こりえます。データベース(とその関連)の脆弱性が比較的利用されます。
盗聴
システムのネットワークを通じて、情報を盗み見することです。
脆弱性により、暗号を弱くしたり無効化されたりした場合に起こりえます。使用されている暗号ライブラリや暗号そのものの脆弱性が利用されます。
サービス不能
ユーザが意図していない時点でサービスを止めてしまうことです。
脆弱性により、リソースを無駄に使用させたり、サービスプログラムを強制終了させたりした場合に発生します。サーバの脆弱性が比較的利用されます。
今どう対処するべきなのか
上記に挙げた脅威を見ると、利用される脆弱性とその対象は、サーバはもちろん、クライアント、アプリケーション、データベース、ライブラリと広範囲であることがわかるはずです。それぞれの脅威と対象を鑑みて、効率的かつ適切なソリューションを選択して適用していくことは必要です。しかし、これらの広範囲を一つのソリューションでカバーすることはあまり現実的ではありません。したがって、まず脅威となる根本原因の脆弱性を地道に潰して行くことが重要となります。
今後はどうなっていくのか
過去からの不正アクセスの変遷を考えると標的型攻撃などに目的や意図は変わりましたが、攻撃対象や手法は変わっていません。脆弱性を原因とした不正アクセスを未然に防ぐには、脆弱性そのものの情報をいち早く入手し、対象にいち早く適用していく脆弱性管理が、さらに重要となっていくことでしょう。