脆弱性診断(セキュリティ診断)とは?必要性とやり方や検査項目、診断の手順、診断例を解説

公開日:

更新日:

執筆者:佐々木 謙一|

目次

脆弱性診断(セキュリティ診断)とは?

脆弱性とは?

脆弱性とは、IT資産(OS、アプリケーション、ミドルウェア、ネットワーク機器、Webアプリケーションなど)に潜在的に存在するバグや設定ミスが原因となって発生したセキュリティ上の欠陥を指します。

攻撃者はIT資産上の脆弱性を突いて攻撃を仕掛け、不正アクセスやマルウェア感染、情報搾取などを実行します。

脆弱性情報については、主要なベンダーなどからCVE*1(既知の脆弱性)として公開されます。ただベンダー側でも気がついていない潜在的な脆弱性も存在し、修正パッチのリリース日(1日目)よりも前に行われるゼロデイ(0日目)攻撃の対象とされることもあります。

IT資産(端末やサーバーなどのOS等)に脆弱性(バグや設定ミス)が存在すると、攻撃者に悪用される可能性が高まります。

なおWebアプリケーション特有の脆弱性診断*2についてですが、一般的にWebアプリケーションはWebサイトごとに個別に作成される場合が多く、Webアプリケーションに潜む脆弱性は各サイト固有のものとなります。攻撃者はこの固有の脆弱性を突いてくるため、OSやミドルウェアなどのプラットフォームとは分けて個別に検討する必要があります。

SQLインジェクションによる攻撃例

*1CVE (Common Vulnerabilities and Exposures):米国政府の支援を受けた非営利団体Mitre Corporation (マイターコーポレーション) の情報セキュリティにおける脆弱性やインシデントについて、それぞれ固有の名前や番号を付与し、脆弱性を一意に特定できるようリスト化した事典を提案と実装したもの。

CVEサンプル

*2Webアプリケーション特有の脆弱性診断とは、疑似攻撃を行い、データの改竄や情報漏洩といったリスクにつながるWebアプリケーションに潜む脆弱性を、攻撃者の観点から洗い出す手法のこと。

脆弱性を検査・診断する「脆弱性診断」とは?何をするのか?

脆弱性診断とは?

組織が管理するIT資産に対して、どのような脆弱性が存在するかを調査する作業を脆弱性診断と呼びます。

脆弱性について解説した画像、そもそも事前に穴を塞いでおけば、侵入されることがありません

何をするのか?

OS、アプリケーション、ミドルウェア、ネットワーク機器などに対して、CVE情報を元に既知の脆弱性が存在するか確認します。

具体的には、OS、アプリケーション(Adobe Acrobat ReaderFirefoxChromeMySQLなど)、ミドルウェア(Apacheなど)のバージョン情報を確認したり、ネットワーク機器(CiscoCheckPointなど)の設定ファイルを読み込んで、設定が正しいか確認したりする、などが挙げられます。場合によってはコマンドを実行し、その反応から脆弱性の有無があるかを確認する方法もあります。

脆弱性診断のわかりやすい例

脆弱性診断は、よく人の健康診断に例えられることがあります。

健康診断を行うことで、病のリスクを可視化し、発病しないよう未然に対策(頓服、運動不足解消など)していくことは、健康を維持する面において重要です。

同じように企業のIT資産の脆弱性診断を行い、リスク(脆弱性)を見える化し、リスクが顕在化しないよう対策(セキュリティパッチの適用、設定ファイルの修正)していくことが求められています。

 脆弱性診断の目的

脆弱性診断は組織のIT資産にどのような脆弱性が存在するか、またそれらのリスク度合いを確認し、とるべき対策方法や方針を決定することが目的です。

OSやソフトウェアでは、最新バージョンがリリースされるごとに脆弱性などの問題点が発見されることがあります。そして、その脆弱性を突いて悪意のあるハッカーが不正アクセスなどの攻撃を仕掛けてきます。

セキュリティパッチは、このような最新バージョン公開後から発見された脆弱性などの問題点を改善するために公開される、修正プログラムのことです。代表的な例として、マイクロソフト社から配布される「Windowsのセキュリティ更新プログラム」などがあります。

ベンダーによるシステム公開後の問題点が残っていないか、社内のIT資産が常に最新のセキュリティパッチが適用されているかを調べることが脆弱性診断の主な目的です。

また、単に脆弱性を見つけ出すことだけではなく、検出した脆弱性のリスク度合いを確認し優先順位を決めていくことも重要な観点です。

なぜ必要か?脆弱性診断の必要性

脆弱性を放置していると、不正アクセスを受けてしまったり、パソコンがマルウェアに感染したりするなど、さまざまなセキュリティ事故が発生する可能性があります。

また攻撃者の手口もかなり巧妙化しており、旧来型のアンチウィルスソフトでは検知できないランサムウェアが登場し、攻撃者は未知、既知を問わず脆弱性を突いた攻撃を仕掛けてきます。それらを検知するために、次世代型アンチウィルスソフトなどを導入する企業が増えています。

ただし次世代型アンチウィルスソフトでも完全に攻撃を検知および防御できるとは言い切れないため、脆弱性自体を無くしていくことが重要です。

よってこれらの脆弱性(少なくとも公開されている脆弱性)がどこにあるか、攻撃されないように未然に穴(セキュリティホール)をふさいでおくことは、次世代型アンチウィルスソフトなどを導入するよりも先に検討すべき、セキュリティ対策の基本となります。

脆弱性診断で期待できる効果

Windowsのセキュリティ更新プログラム」は、自動で配信されるため、ユーザー自らパッチを適用することが可能です。

セキュリティパッチとはソフトウェアの脆弱性を修正するための更新プログラムのことです。

ただLinux系のOSやネットワークデバイスなどはパッチが実際に公表されていてもユーザーが気付かない場合が多く、修正プログラムが公開されているにもかかわらず、業務の都合で放置されたり、ソフトウェアが自動でアップデートされると使い勝手が変わるため、あえてアップデートしないといったケースも存在します。

脆弱性診断を行いリスク(脆弱性)を可視化することで、ユーザーおよび企業全体にセキュリティに対する気づきを与え、常にシステム全体のセキュリティレベルを高く一定に保つことができれば、高価な次世代型アンチウィルス製品やEDRSOCサービス導入などにかかるコストを減らすことが期待できます。

ペネトレーションテストと脆弱性診断の違い

ペネトレーションテストと脆弱性診断は混同されがちなキーワードですが、両者の主な違いは以下の通りです。

  • ペネトレーションテスト:実際の攻撃者が使用しているコマンド、ハッキングツール、攻撃用のプログラムコードを用いて、システムに侵入したり、システムが誤動作・機能停止するかなどを、実際のシステム上で試すこと。
  • 脆弱性診断:システムが使用しているOS、ミドルウェア、アプリケーションなどのパッチ・バージョン状況を調べて、脆弱性のあるバージョンが使用されているか洗い出す作業。まれにコマンドを実行して、脆弱性が存在するか調べることあり。

※なおこれらいずれの手法でも、発見された脆弱性については、当然ながら対策を講じる必要があります。

セキュリティホールと脆弱性(社内体制含む)の違い

セキュリティホールとは攻撃の標的にされる場所のことで、狭義の意味ではシステムのバグや設定ミスのことを指します。

 一方、脆弱性という言葉は、「もろくて弱い」という意味があり、仕組みや概念なども含まれます。 例えば、社内の仕組みが問題となり、関係者を装ったメールに添付されたファイルを開いたことで、PCがウイルスに感染した場合などは、セキュリティホールを放置したことと合わせて、社内の管理・運用体制にも脆弱性(問題)があるということになります。

セキュリティホール診断と脆弱性診断の違い

この意味からすると、セキュリティホール診断とは、IT資産(OS、アプリケーション、ミドルウェア、ネットワーク機器、Webアプリケーションなど)に潜在的に存在するバグや設定ミスを診断することを指し、脆弱性診断とは、社内の管理・運用体制も含めた幅広い問題点を洗い出すことも含まれます。

脆弱性診断が不要な場合

すべてのシステムにおいて、脆弱性が全く存在しないということはあり得ません。

仮に現時点で脆弱性の全く存在しないシステムを構築できたととしても、時間の経過とともに予期せぬ盲点となって脆弱性になることがあります。

よってインターネット接続可能なシステムでは、外部から攻撃される可能性がある脆弱性の有無を早期に発見する必要があります。

唯一、外部インターネット接続が不要な場合には、外部から攻撃される可能性が低いという理由で、脆弱性診断が実施されていないケースが存在しますが、近年そのような環境でも、予期せぬタイミングでシステムが外部接続したり、USBメモリなどで外部から持ち込まれたデータからの被害が報告されているため、外部接続不要な環境でも脆弱性診断の需要が高まっています。

脆弱性診断とは、システム上、弱点となり得るところがないかチェックし、セキュリティ状態を確認することです。

本来はIDやパスワードで管理されている箇所も、バグなどによって脆弱性が発生している可能性があります。

また、システム構築時に、古いバージョンのミドルウェアが使用されたり、開発者のコードの書き方に問題があり、予期せぬ脆弱性が埋め込まれることもあるため、脆弱性診断を常時実施することは、セキュリティを高めるために非常に重要です。

脆弱性診断の種類

プラットフォーム診断には、外部診断(リモート診断)と内部診断(オンサイト診断)が存在します。

外部診断、内部診断の違い

外部診断(プラットフォーム診断)

外部診断とは、グローバル IP アドレスを通じてインターネットからアクセス可能な装置を対象とし、セキュリティ境界の外側から攻撃者が悪用可能な脆弱性を可視化することを目的としています。

外部診断について解説した画像

内部診断(オンサイト診断)

内部診断とは、システム内のネットワークや拠点の LAN 内等における主にプライベート IP アドレスを有する装置を対象とし、セキュリティ境界の内側で、社内の人間による犯行や、境界防御を超えて侵入した外部の攻撃(マルウェア感染など)により悪用される可能性(脆弱性)を可視化することを目的としています。

内部診断の場合、より詳細な脆弱性情報を収集するための方法として、エージェントモジュールを診断対象に常駐させ、診断対象の内部から脆弱性が存在しないか診断することも可能です。

内部診断について解説した画像

診断の優先順位

優先して実施すべきは外部診断です。外部診断の診断対象はグローバル IP アドレス単位となり、内部診断の場合は診断対象の内部のIP アドレス数に応じて費用が変動します。

また、セキュリティ専門のコンサルティング会社が現地に出向いて診断を行うこともあり、この場合には追加費用が生じることがあります。

新しい脆弱性や攻撃手法は日々公表されるため、診断サービスの選定においては、最新の脆弱性情報を収集し、診断項目に反映させていることが必要です。

また、ツールの検出結果には誤検出や、実際には攻撃が困難な内容の指摘事項が含まれる可能性があります。そのため、診断対象のシステムに対する現実的な攻撃の発生可能性に基づいて対応要否を判断することが必要な場合があります。

診断手法「自動診断と手動診断」

脆弱性診断には主に以下の3 つの手法が存在します。診断時には固有のIPアドレスが割り当てられている機器に対して実行されます。

  • ツールによる自動診断

脆弱性診断ツールを自社で購入し、定期的(週次や月次など)に診断する方法です。自社で診断が実施できるので、いつでも必要に応じて診断できるというメリットがあります。

  • 専門家による手動診断

セキュリティ専門のコンサルティング会社に依頼して、定期的(半年ごと、四半期ごとなど)に診断を実施する方法です。専門家による診断と報告書の作成が行われます。

  • 上記2つの方法を併用する

上記①と②を併用する方法です。自社またはセキュリティコンサルティング会社が脆弱性診断ツールにより事前診断を実施し、その結果に基づいて、手作業での診断(ペネトレーション等)を実施するハイブリッドな方法です。

脆弱性診断の対象

Webサイトの脆弱性診断

Web アプリケーション診断では、対象の Web アプリケーション(Web API を含む)に対して疑似的な攻撃のリクエストを投げて、SQLインジェクションなどの情報漏えいや、クロスサイトスクリプティングなどサイト改ざん等につながる脆弱性の有無を確認します。

Webアプリケーションの内部で使用する画面数(画面遷移数)やボタン数に応じて費用が変動します。

Webアプリケーションの脆弱性

診断手法

  1. ツールによる自動診断
  2. 専門家による手動診断
  3. 上記2つの方法を併用する

3 種類が存在します。

詳しくは、上記「脆弱性診断の種類-診断手法」をご参照ください。

サーバーの脆弱性診断

サーバーの脆弱性診断については、対象のサーバー上で動作するWeb アプリケーションの脆弱性診断を指す場合と、ネットワーク上の機器の一つとして、対象のサーバー上で動作するミドルウェア(Apacheなど)等の脆弱性診断を実施する2通りの方法があります。サーバーの脆弱性診断では、この2つの観点から診断することが重要になります。

開発したシステムやアプリケーションの脆弱性診断

自社開発したシステムには各種ミドルウェアを組み込む場合もあり、開発中あるいは開発が終了した後、脆弱性診断を行なわない場合、リリースした後で、ミドルウェアに脆弱性が見つかることがあります。

安全なシステムを開発するためには、脆弱性診断を実施し、システムのリリース前に脆弱性を洗い出し、脆弱性が極力存在しない状態でリリースすることが必要です。

内部ネットワークの脆弱性診断

「脆弱性診断の種類-内部診断」でも記載のとおり、セキュリティ境界の内側で、社内の人間による犯行や境界防御を超えて侵入した外部の攻撃(マルウェア感染など)により悪用される可能性(脆弱性)を可視化し、常に最新パッチを適用することで、マルウェア感染による横展開を防ぐことが可能になります。

この結果、次世代型マルウェア製品よる対策やSOCにかかる費用等を抑えることができます。

前述の外部診断の実施のみでは、すでに内部に侵入してしまった標的型メールに添付されたマルウェアからの攻撃(ランサムウェアなどはシステムに潜む脆弱性を悪用することで感染するため)を防ぐことができないため、欧米を中心にすべての内部ネットワークの脆弱性診断の重要性および需要が高まっています。

OSSの脆弱性診断について

OSSとは、 Open Source Softwareの略称です。オープンソース(Open Source)とは、ソースコードを無償で公開、再使用、改変、再配布することが可能なソフトウェアを示しています。

代表的なOSSとしては、GNU/Linuxや、FirefoxGIMPjQueryJavaPythonGitPyTorchWordPressなどが挙げられ、OSやプログラミング言語、アプリケーションなど、様々な種類のOSSが存在します。

また多くの企業で採用されているミドルウェアにもOSSは使われており、主に「Webサーバー(Apacheなど)」「アプリケーションサーバー(WebSphereなど)」「データベース管理サーバー(MySQLPostgreSQLなど)」の3種類があります。

これらはWeb3層構造と呼ばれ、セキュリティレベルの高さや管理のしやすさ、故障の際の復旧が早いことから、大規模システムで広く使用されています。

OSSの脆弱性

OSSは、上記のように様々なシステムやアプリケーションで利用されているので、どこでどのOSSが利用されているのかユーザ自身が把握しきれていないことが多いです。

そのため利用中のアプリケーションのOSSに脆弱性が発覚しても影響範囲が特定できず、対応できないことが問題視されています。例えば、202112月にOSSの一つであるApache Log4jに脆弱性(CVE-2021-45046)が発見されました。

Apache Log4j2の悪用方法を解説した画像

このApache Log4jは、Javaアプリケーションの標準的なロギングライブラリ(API)で、処理スピードの速さやその多機能性から、世界中のJavaアプリケーションで広く利用されていたため、「どのシステム(製品)で使用されているか?」を把握することが困難でした。

また悪用が容易で、その悪用方法も多様であり、米マイクロソフト社が提供する大人気ゲーム「Minecraft」やApple社の「iCloud」など、身近なサービスへの影響も確認されたため、世界中のセキュリティ界隈に激震が走りました。

OSSの脆弱性への解決策

脆弱性診断ツールを用いて定期的にスキャンをかけることで、自社システムで使用しているOSSの脆弱性を検出し、即座に影響範囲を特定、対処することができます。

Apache Log4jの任意のコード実行の脆弱性(CVE-2021-44228)」を例にとると、最も有効かつ標準的な対策は、Log4jの脆弱性を修正した最新のバージョンを適用することです。

脆弱性診断ツールで利用しているLog4jのバージョンを特定し、脆弱性のあるバージョンであればパッチを適用する等の対処を行うことができます。

またこのようなApacheなどのミドルウェアはWindowsOSと違い、修正パッチが自動通知される仕組みがなく、多くの企業で何年間も放置される傾向があるので、脆弱性診断ツールにより、定期的に自社システムの脆弱性を把握することがセキュリティ対策として重要になります。

脆弱性診断のテスト・試験内容

脆弱性診断の主な検査項目や診断の観点

OS/アプリケーション、ミドルウェア、ネットワーク機器などに対して、CVE情報を元に既知の脆弱性として公開された脆弱性が存在しないかを確認します。

具体的には、OS/アプリケーション(Adobe Acrobat ReaderFirefoxChromeMySQLなど)、ミドルウェア(ApachePHPなど)のバージョン情報を閲覧したり、ネットワーク機器(CiscoCheckPointなど)の設定ファイルを読み込んで、設定が正しいか確認したり、場合によってはコマンドを実行し、その反応から脆弱性の有無があるか確認します。

第三者(外部)の脆弱性診断サービスに依頼する

セキュリティ専門のコンサルティング会社に脆弱性診断を委託し、診断を実行する方法です。クレジットカード業界におけるセキュリティ基準であるPCI DSSなどに準拠するために、広く採用されています。

  • メリット:専門家による診断のため、診断結果の高い信頼性に加え、診断にかかる社内の人的労力を減らすことができる
  • デメリット:(四半期ごとなど)外部委託コストが増大する

手動で診断する

通常セキュリティ専門のコンサルティング会社の担当者によるペネトレーションテストが行われます。

上記第三者の脆弱性診断サービスに委託した際に同時に実施されることが一般的です。メリットおよびデメリットに関しては上記と同じです。

※第三者による手作業での診断時には、第三者側でも脆弱性診断ツールにより事前診断を実施し、その結果に基づいて、手作業での診断(ペネトレーション)を実施することがあります。

脆弱性診断システムによる診断の主な手順・診断フロー

通常の脆弱性定期診断と緊急時の対応について

脆弱性診断システム(ツール)を使用した診断では通常時と緊急時の対応より対処方法が異なります。

診断の主な手順や診断フローの詳細については次の図をご参照ください。

通常スキャンと緊急対応時のフローの違いについて

自社で脆弱性診断を内製化する場合、一般的には週次でスキャンを行い、月次で再度スキャンして報告書を作成する手法が取られることが多いです。

ただ前述のApache Log4j2の脆弱性のような緊急度が高い脆弱性が報告されることもあるので、その場合は通常のスケジュールとは別に、該当する脆弱性の存在を確認するためのスキャンを実行する必要があります。

検出された場合は診断結果に従って、パッチの適用や設定変更などを進めることになります。

PCIDSS監査にクリアするための脆弱性診断の対応と診断結果対策

PCI DSS基準にクリアするための脆弱性診断の対応実務に関して

クレジットカード会社では、IT資産に対する脆弱性診断を四半期ごと、ペネトレーションテストを年に一回実施することが規定として盛り込まれています。

基準をクリアするためには、認定セキュリティ評価機関(QSAQualified Security Assessor)による合否判定を得る必要がありますが、この作業を代行実施するのが第三者(外部)の脆弱性診断のコンサルティング会社になります。

クレジットカード会社から委託されたコンサルティング会社(PCI DSS認定ベンダー)は、四半期ごとの脆弱性診断およびASVApproved Scanning Vendorの略)スキャンと、年一回のペネトレーションテストを実施し、カード会社のシステムに不備がないかを確認します。

四半期ごとに実施される脆弱性診断に大きく費用が掛かるので、脆弱性診断システムやツールを使い、診断作業は自社で内製化することで、大幅にコスト削減することが可能です。

診断結果に対する対策「対策検討のポイント」

PCI DSS ASV認定製品である(insightVM/Metasploit)を使うことで、網羅的に検出された検査結果を元に、対応スケジュール表を作成し、いつまでに検出結果に対応するかを記載し、認定セキュリティ評価機関(QSAQualified Security Assessor)に提出することができます。

また、QSAによるオンサイト監査時に指摘事項があった場合でも、すでに作成済みのスケジュール表に基づいて対応することが可能となり、すべて外部委託していた費用(特に比重の大きい脆弱性診断業務)を1/2以下に圧縮することが可能です。

脆弱性診断システムの選び方とおすすめ製品

どのような観点でシステムを選ぶべきか?

外部委託では、ある程度決まった頻度でしか診断ができないことや、場合によっては診断1回の費用でツールの年間サブスクリプション(診断かけ放題)と同額以上になることがあります。

コストパフォーマンスを考えて、自社で内製化できることを主眼に製品を選択することをお勧めします。

<費用の観点>

  • コンサルティング費用と比較

<レポートの観点>

  • 脆弱性診断結果レポートの見易さ(パッチの入手方法、脆弱性の内容)

<運用の観点>

  • 脆弱性診断の頻度(月に1度など定期的に診断すること)
  • 自動化できるか?
  • 担当者ごと、社内の役割ごとに脆弱性対応ができるか?

<対応している脆弱性の観点>

  • 最新の脆弱性に対応しているか?
  • 優先順位付けができること
  • 抜け漏れがなく診断できること

おすすめ製品(insightVMのご紹介)

insightVMを導入することで、本コラムでご紹介した内容に沿った以下項目を実現することができます。

①組織ネットワーク内の機器の脆弱性を包括的に検出(プラットフォーム診断)

②改善の優先順位付け(Rapid7独自のリスクスコア:RealRiskTM スコア)により、

  - セキュリティリスクを可視化
  - 対策の指標が明確となり、運用負荷を軽減

③脆弱性管理の自動化を実現する各種機能を装備

定期的&オンデマンドのスキャン、リスク管理を内製化

⑤全世界20万人のコミュニティメンバを擁しており、迅速に脆弱性コンテンツを更新

まとめ - 情報システムの定期的な脆弱性対策の必要性

現在発生しているセキュリティインシデントの多くが、既知の脆弱性を悪用したものが起因となっています。脆弱性を突いた攻撃を未然に防ぐためには、定期的に自社情報システムの脆弱性診断とセキュリティ評価を行うことが、重要な第一歩となります。

また脆弱性診断ツール「insightVM」を用いて脆弱性診断を内製化することで、Log4jのように世間を騒然とさせる緊急度の高い脆弱性にも素早く対応することができるため、高額なセキュリティ製品やSOCサービスの導入よりも優先度を上げて、定期的な脆弱性診断を実施することをお勧めします。