ITの教科書検索
入門読了 約10分

脆弱性とは ― セキュリティホールと脆弱性管理

脆弱性とは攻撃に悪用されうる弱点で、OSの更新が直す「セキュリティ上の問題」がこれです。バグとの違いと、パッチの公開前と適用前という2つの危ない期間を図で示します。

目次
  1. 脆弱性とは、攻撃に悪用されうる弱点
  2. バグ・セキュリティホール・脆弱性の違い
  3. 脅威・脆弱性・リスクの関係
  4. 脆弱性の種類:ソフトの欠陥・人・組織・シャドーIT
  5. 脆弱性が塞がるまでの時間:ゼロデイ攻撃
  6. パッチと脆弱性管理の進め方
  7. パッチを当てられないとき
  8. 脆弱性情報の出どころ:JVNとCVE
  9. 練習問題
  10. 参考にした資料

脆弱性とは、攻撃に悪用されうる弱点

脆弱性とは、攻撃に悪用されうる弱点のことです。OSやアプリの更新に「セキュリティ上の問題を修正」とあれば、直したのはこの脆弱性です。ソフトウェアの欠陥のほか、組織の決まりの不備や、従業員への徹底不足も含みます。

ソフトウェアの脆弱性は、塞ぐまで残ります。塞ぐには、開発元が出す修正プログラムを、利用者が適用しなければなりません。更新を後回しにした機器が狙われるのは、このためです。

バグ・セキュリティホール・脆弱性の違い

バグは、プログラムの不具合です。バグがあると、ソフトウェアは作った人の意図と違う動きをします。

その不具合の中に、攻撃者に突かれて被害につながるものがあります。これが脆弱性です。ソフトウェアの脆弱性は、セキュリティホールとも呼ばれます。不具合が脆弱性になる例に、バッファオーバーフローがあります。

総務省の説明は、脆弱性の原因として、プログラムの不具合と設計上のミスの両方を挙げています。コードの誤りがなくても、設計に弱点があれば脆弱性になります。代表例はWebアプリの入力の扱いで、これを突くのがSQLインジェクションやXSSです。

脅威・脆弱性・リスクの関係

情報資産は、顧客情報や人事情報など、組織が守るべき情報です。この情報資産を守る話では、脅威・脆弱性・リスクという3つの言葉が使い分けられます。

用語意味例
脅威情報資産に害を与えうる出来事攻撃者の侵入、マルウェアの感染、災害
脆弱性脅威に突かれる弱点更新されていないOS、決まりを守らない運用
リスク被害の見込み。起きる可能性と、影響の大きさで表す顧客情報が漏れる可能性と、その影響

脅威が脆弱性を突くと、情報資産に被害が出ます。リスクは、その被害が起きる可能性と、起きたときの影響の大きさで表します。

脅威は、組織の側では止められないことが多いものです。脆弱性は自分たちの側にあるので、減らせます。脆弱性を減らすと、被害の起きる可能性が下がり、リスクも下がります。リスクへの対応の選び方は、リスクアセスメントの記事で説明しています。

脆弱性の種類:ソフトの欠陥・人・組織・シャドーIT

脆弱性があるのは、ソフトウェアだけではありません。アメリカの国立標準技術研究所(NIST)の定義では、弱点があるのは情報システムだけではありません。セキュリティの手順や内部統制、実装にも弱点がありえます。

脆弱性の種類弱点がある場所
ソフトウェアの欠陥プログラムの不具合や設計
人的脆弱性従業員への決まりの不徹底
内部統制の不備組織の決まりや職務分掌の未整備
シャドーITIT部門が把握していない利用

内部統制の不備は、行動規範や職務分掌が組織で整っていない状態です。職務分掌は、役割ごとに仕事と権限を分けることです。人的脆弱性は、決まりが従業員に徹底されていない状態です。人が意図的に不正をはたらく要因は、不正のトライアングルで説明できます。

シャドーITは、従業員がIT部門に知られないまま、仕事のためにIT機器やクラウドサービスを使うことです。NISTは、シャドーITが組織の管理や記録の要求を満たさないと述べています。次の事例が、どの種類にあたるかを見比べます。人的脆弱性と内部統制の不備の境目は、資料によって変わります。ここでは、決まりが無いか、決まりが守られていないかで分けます。

開発元のサポートが終わったOSを、そのまま業務のPCで使っている。

  • ソフトウェアの欠陥
  • 人的脆弱性
  • 内部統制の不備
  • シャドーIT

ソフトウェアの欠陥ですOSの欠陥が残っているのに、開発元が修正プログラムを出さなくなりました。弱点がソフトウェアの中にあります。新しい版のOSへ移します。移せないときは、ネットワークから切り離します。

ソフトウェアの欠陥は、パッチで塞ぎます。残りの3つは、パッチでは塞げません。決まりの整備、従業員への徹底、使われているものの把握といった組織側の対応が必要です。

脆弱性が塞がるまでの時間:ゼロデイ攻撃

脆弱性は、見つかった時点では塞がっていません。開発元がパッチを公開し、利用者が適用して、初めて塞がります。この間に、攻撃が成り立つ期間が2つあります。

時間パッチが無い期間発見の前後を含むゼロデイ攻撃が成り立つ公開後・適用前の期間未適用の機器が狙われる適用後その脆弱性は塞がる利用の開始脆弱性の発見パッチの公開適用の完了
脆弱性は、パッチを公開しても、利用者が適用するまで塞がりません。攻撃が成り立つ期間は2つあり、後ろの期間は利用者が適用を早めて短くできます。

1つ目は、パッチが無い期間です。パッチが出る前に突かれる攻撃を、ゼロデイ攻撃と呼びます。総務省は、脆弱性が発見されたとき、メーカーが修正プログラムを配布する前に行われる攻撃と説明しています。NISTは、それまで知られていなかった脆弱性を突く攻撃としています。

パッチが無いため、完全な対策は難しくなります。総務省は、修正プログラムを適用するまでの間は、危険となる行為を行わないなどの注意が必要だと述べています。定義ファイルにまだ無い新しいマルウェアは、ビヘイビア法やヒューリスティック法で見つけます。

2つ目は、パッチの公開後から適用までの期間です。NISTによると、脆弱性が公に知られると、攻撃者が攻撃コードを作りやすくなります。そのため、リスクは通常高まります。

例は、2017年のWannaCryです。IPAの資料によると、Windowsの修正プログラムMS17-010は、2017年3月に公表されていました。5月に、この修正プログラムを適用していないシステムで、ランサムウェアの感染が広がりました。WannaCryは、ワームのように自ら広がるランサムウェアでした。

パッチを作る時期は、利用者には決められません。組織が短くできるのは、公開から適用までの期間です。

パッチと脆弱性管理の進め方

脆弱性を塞ぐために開発元が出す更新プログラムを、パッチと呼びます。OSのアップデートも、脆弱性を塞ぐ手段の1つです。

脆弱性は日々見つかるため、1回当てて終わりにはなりません。見つけて直すまでを繰り返す活動を、脆弱性管理と呼びます。NISTも、パッチを当てることを、脆弱性への対応の手段の1つとしています。

1 把握する使っているソフトを一覧にする2 集める新しい脆弱性の情報を入手する3 判断する深刻度と自社への影響を見る4 適用するテストしてからパッチを当てる5 確認する効いているかを確かめる一覧ができたら一覧と照合対応を決める適用後繰り返し
脆弱性管理は、1回で終わりません。新しい脆弱性が公表されるたびに、最初の「把握する」に戻って一覧と照合します。
  1. 把握する:組織が使っているソフトウェアと版を、機器ごとに一覧にします。一覧が無いと、新しい脆弱性が自分に関係するか分かりません。NISTは、一覧を常に更新するため、自動化を勧めています。
  2. 集める:JVNなどの公的な情報や、開発元の情報を見ます。入手先は、後の節で説明します。
  3. 判断する:深刻度だけでは決めません。IPAは、攻撃の容易さと、攻撃を受けたときの影響も考えるとしています。個人情報を持たない告知サイトと、カード情報を持つ通販サイトでは、同じ脆弱性でも影響が違います。深刻度の指標には、CVSSがあります。脆弱性診断とペネトレーションテストの記事で説明しています。
  4. 適用する:いきなり全台に当てず、先に一部の機器で試します。問題が出なければ、全体へ広げます。NISTは、緊急のときも同じ流れを、日程を大きく縮めて使うよう勧めています。
  5. 確認する:パッチが入り、効いていることを確かめます。そのあとも、誰かが取り消していないかを見続けます。

一覧を補強する材料に、SBOMがあります。SBOM(Software Bill of Materials)は、ソフトウェアを構成する要素と、その供給の関係を記録した一覧です。NISTによると、開発元が提供する場合は、組織の一覧の補強に使えます。

パッチを当てられないとき

すぐには当てられないことがあります。NISTは、パッチがまだ無い場合や、開発元のサポートが終わっている場合を挙げています。テストや停止時間の調整が要る場合も同じです。

その間は、被害を減らす別の手を取ります。NISTは、脆弱性のある機能を無効にすることや、ファイアウォールやネットワークの分割で隔離することを例に挙げています。

状況取る手
パッチがまだ無い機能の無効化やネットワークの隔離で、一時的に被害を抑える
開発元のサポートが終わっているネットワークから隔離するか、脆弱性の無い新しい版へ移す
テストや停止時間の調整が要る先に回避策を取り、予定に沿ってパッチを当てる

JVNの対策情報には、開発元のパッチのほか、回避策が載ることもあります。

脆弱性情報の出どころ:JVNとCVE

日本の脆弱性情報の中心は、JVN(Japan Vulnerability Notes)です。JVNは、日本で使われているソフトウェアの脆弱性と対策の情報を載せるポータルサイトです。JPCERTコーディネーションセンター(JPCERT/CC)とIPAが、2004年7月から共同で運営しています。

JVNには、国内の届出制度で調整された情報のほか、海外の調整機関と連携した情報も載ります。国内の届出の枠組みを、情報セキュリティ早期警戒パートナーシップと呼びます。届出はIPAが受け付け、開発者との調整はJPCERT/CCが受け持ちます。

  1. 発見者が、IPAに脆弱性を届け出ます。
  2. JPCERT/CCが、製品の開発者に連絡し、対応を依頼します。
  3. 開発者が、パッチや回避策を用意します。
  4. JVNで、対策情報を公表します。

公表前の情報は、細心の注意で扱われます。JPCERT/CCは、海外の機関と連携して、公表日も調整します。JPCERT/CCがどんな組織かは、CSIRTの記事でも紹介しています。

もう1つの手がかりが、CVE(Common Vulnerabilities and Exposures)です。CVEは、個別の製品の脆弱性を1件ずつ見分ける識別番号で、「CVE-西暦-連番」の形をしています。WannaCryで悪用された脆弱性の1つは、CVE-2017-0145です。

番号があると、別々の組織が出した情報が同じ脆弱性を指すと分かります。番号を付けるのは、CVEの仕組みに参加を認められた組織です。JPCERT/CCもその1つで、JVNで公表する脆弱性に番号を付けます。AWSのAmazon Inspectorは、EC2やコンテナイメージの中のソフトウェアを調べます。照らし合わせるのは、公表されたCVEです。

練習問題(全7問)

Q1脆弱性の説明として最も適切なのはどれ?
Q2脅威・脆弱性・リスクの関係として正しいのはどれ?
Q3セキュリティホールについて、正しい説明はどれ?
Q4ゼロデイ攻撃の説明として正しいのはどれ?
Q5部署が独自に契約したクラウドのチャットを、IT部門に知らせずに仕事で使っている。この脆弱性の種類はどれ?
Q6パッチが公開されたあと、組織が脆弱性への対応を進めるときの流れとして、最も適切なのはどれ?
Q7JVNを運営している組織の組み合わせとして正しいのはどれ?

選んでから「採点する」を押すと、解説つきで答え合わせができます。

参考にした資料

関連記事

おすすめの本 PR

セキュリティとデータベースは、基本情報技術者試験の対策本でまとめて学べます。

目的別の本の選び方を見る

セキュリティの記事を続けて読む

セキュリティ 全37本中2本目