1. HOME
  2. /

  3. ブログ
  4. /

  5. 脆弱性診断とは?その必要性と発見できるリスクをわかりやすく解説

セキュリティ

脆弱性診断とは?その必要性と発見できるリスクをわかりやすく解説

アイキャッチ画像

サイバー攻撃による情報漏えいやその他の被害は、依然としてなくなりません。攻撃の手口は年々巧妙になっており、それに対応するために企業に求められるセキュリティ対策もますます複雑化しています。

脆弱性診断は、企業が自社のセキュリティを強化するために非常に有効な手段の一つです。診断結果に基づいて適切な対策を講じることで、セキュリティのレベルを確実に向上させることができます。脆弱性診断は、どのような対策を取るべきかについて、具体的な指針を提供してくれます。

本記事では、脆弱性診断とは何か、その方法や種類、またよく比較されるペネトレーションテストとの違いについて解説します。この記事を読むことで、脆弱性診断の基本的な理解が深まり、効果的に活用するための知識を得ることができるでしょう。

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

脆弱性診断とは、ネットワーク、OS、ミドルウェア、ウェブアプリケーションなどに脆弱性がないかを調査し、そのリスクを評価するプロセスです。脆弱性診断は、セキュリティに関わるリスクを洗い出す作業であることから、「セキュリティ診断」とも呼ばれます。
情報漏えいやサービス停止などのセキュリティリスクを予防するために、どのような対策を講じるべきかを検討する際に脆弱性診断は非常に有効です。

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

脆弱性診断とよく比較されるものにペネトレーションテストがあります。脆弱性診断とペネトレーションテストは、いずれもセキュリティ対策の一環として行われるものです。また、どちらも診断対象へ実際にアクセスして調査をするなど一見似ていますが、両者には明確な違いがあります。

以下では、3つの視点から違いを解説します。

【目的】
脆弱性診断とペネトレーションテストの主な違いは、それぞれの目的にあります。脆弱性診断は、システムやネットワークに存在する脆弱性を網羅的に調査し、そのリスクを評価することを目的としています。これにより、潜在的なセキュリティリスクを特定し、適切な対策を講じることができます。

一方、ペネトレーションテストは、実際の攻撃者の視点から脆弱性を利用してシステムに侵入し、 シナリオ通りに目的を実現できるか、また、何がどこまでできるのかを確認することを目的としています。たとえば組織のネットワークの中に入り、そこから従業員や取引先に関するファイルを入手できるかどうかを調べるといったケースです。つまり、ペネトレーションテストの目的は、セキュリティ対策の有効性を検証し、システムが攻撃にどの程度耐えられるかを確認することです。この結果から、実際の攻撃を想定した防御対策の強化を図ることができます。

【脆弱性に対するアクション】
脆弱性診断では、脆弱性を発見すると、その詳細を調査し、どのようなリスクがあるか、またその改善策について報告します。脆弱性診断は、脆弱性の発見と診断までを行いますが、その脆弱性を利用してシステムへの侵入は行いません。

一方ペネトレーションテストでも、システムへ侵入し攻撃を試みるために脆弱性の有無を調べることはします。ただし、これは攻撃がどの程度成功するかを確認するためであり、 脆弱性診断のように網羅的に検知した脆弱性の詳細報告は行いませんが、発見された脆弱性がどのように攻撃に利用されるか、その過程や攻撃シナリオがどこまで成功したかなど、具体的な手順と結果を含む詳細な報告書が提出されます。

【網羅性】
脆弱性診断は対象を網羅的に調査し、脆弱性の有無を調べます。ペネトレーションテストも、どこに脆弱性があるか調べる点は同じです。ただし、それはあくまでも実際に侵入を試みるためであり、脆弱性診断のような網羅性は求められていません。

また、ペネトレーションテストにおいて作業者は、高度なサイバー攻撃を行う攻撃者と同等以上のスキルが必要です。高いスキルを持つ作業者が、手動でシナリオ通りの攻撃が実現するかを調べるため脆弱性診断に比べて費用は大幅に高くなります。

そのため、一般的に、脆弱性診断とペネトレーションテストが併用されるケースは少ないです。脆弱性診断によって脆弱性が発見された場合、その脆弱性を改修することで一旦目的は達成されるためです。

一方で、ペネトレーションテストの結果から脆弱性が多く見つかりそうだと判断された場合、さらに全般的に脆弱性の有無 を調べるために脆弱性診断の依頼に繋がるケースはあります。

脆弱性診断はなぜ必要か

脆弱性診断を実施することで、どのようなメリットが考えられるでしょうか。以下、脆弱性診断が必要な理由を見ていきましょう。

セキュリティリスクを軽減するため

脆弱性診断を実施することで、対応が必要となる脆弱性やセキュリティ上の問題点をあぶりだすことが可能です。発覚した問題点の解消に向けた対策を実施することによって、不正アクセス・情報漏えいなどのセキュリティリスクを軽減できます。

セキュリティ対策に必要となるコストを節約するため

脆弱性診断は、セキュリティ対策のコストを節約するのにも役立ちます。

たとえばシステム運用中に脆弱性が発見された場合、公開停止やバージョンのロールバックなどの対応をしなくてはなりません。あらかじめ脆弱性診断をして脆弱性を発見しておけば、こういったコストを削減できます。

また脆弱性が放置され、セキュリティ上の攻撃によってインシデントが発生した場合にかかるコストの大きさは計り知れません。脆弱性診断を行い脆弱性を発見し対策をしておけば、このようなコストが発生するのも防げる可能性があります。

法的要件などを遵守するため

国や業界によってはセキュリティに関する法的要件やガイドラインがありますが、脆弱性診断を行うことでこれらの要件の順守状況を確認することに繋がります。業界によっては、ガイドラインで脆弱性診断の実施が必須となっていたり、推奨されていたりするケースもあります。

顧客企業やユーザーからの信頼を担保するため

脆弱性診断をはじめとしたセキュリティ対策をきちんと実施しておくことで、顧客企業やユーザーから信頼されやすくなります。反対に十分な対策をせずセキュリティ的なインシデントが発生した場合、失われた信頼を取り戻すのは容易ではありません。

他社との差別化を図るため

セキュリティ対策をしっかり実施しているか否かで、顧客企業やユーザーからの信頼に差が生じるのは言うまでもありません。脆弱性診断に基づく対策をすることが、顧客企業やユーザーに対するアピールにもなります。それが競合他社との差別化をはかる大きなポイントにもなり得るのです。

実際、どのくらいのリスクが脆弱性診断で発見されているか

脆弱性診断が重要だと言われても、「実際はそれほど脆弱性が見つからないのでは?」と考えている担当者の方もいるかもしれません。脆弱性診断を受けたことがない場合、どの程度の脆弱性が見つかるか想像しづらいでしょう。

そこでここでは、SQAT® Security Report 2023-2024年秋冬号(以下URL)をもとに、脆弱性診断(セキュリティ診断)でどのくらいのリスクが発見されているかをご紹介します。https://www.sqat.jp/information/27429/

このレポートでは、脆弱性診断において以下5つのリスクレベルを設定しています。

レベル5
(緊急)
攻撃された場合の影響が甚大か、容易に攻撃が実行可能
レベル4
(重大)
攻撃された場合の影響が大きいか、ある程度の知識・技術があれば実行が可能
レベル3(高)攻撃された場合の影響が限定的か、攻撃を実行するにあたり特定の知識や技術が必要
レベル2(中)攻撃された場合の影響が限定的・間接的か、攻撃を実行するための難易度が比較的高い
レベル1
(低)
攻撃された場合の影響が軽微か、攻撃を実行するための条件が複数あるなど実現が困難

2023年上半期に、延べ663企業・団体における3,396システムに対し脆弱性診断を行ったところ、以下のような結果となったとのことです。(一部のみ抜粋して紹介します。)

<ウェブアプリケーション診断の結果>

  • 9割を超えるシステムにおいて、何らかの脆弱性が発見された。
  • そのうち6件に1件(脆弱性が発見されたシステムのうち17.5%)のシステムでは、レベル3(高)以上の危険な脆弱性が発見された。

<ネットワーク診断の結果>

  • 約半数のシステムにおいて、何らかの脆弱性が発見された。
  • そのうち5件に1件以上(脆弱性が発見されたシステムのうち23.8%)のシステムでは、レベル3(高)以上の危険な脆弱性が発見された。

脆弱性診断を受けようとする組織は、一般的にセキュリティに対する意識が一定以上高いと考えられます。それにも関わらず、これだけ多くの危険な脆弱性が見つかっているのです。
レベル3以上のリスクとは、対策をしなければ簡単にセキュリティ攻撃が成功したり、攻撃を受けた際の被害が大きくなったりする可能性が高いものを指します。このような結果を見れば、企業にとって脆弱性診断がいかに重要であるかが理解できるでしょう。

脆弱性診断の方法

脆弱性診断の方法は、診断を行う主体や対象によって分類されます。方法ごとに特徴が大きく異なるため、脆弱性診断を有効に活用するためには、この分類を理解しておくことが重要です。
以下では、それぞれの分類に基づいて脆弱性診断の方法を詳しく見ていきましょう。

診断主体による分類

診断主体(診断する側)による分類の方法です。大きく分けて自動(ツール)診断と手動診断に分かれます。

自動(ツール)診断

自動(ツール)診断は、自動化されたツールを使用して脆弱性を効率的に発見する方法です。この方法は、迅速に脆弱性を検出でき、既知の脆弱性を幅広く検出することができます。その反面、正常な機能を脆弱性として誤検知したり(ファルスポジティブ)、逆に脆弱性を見落としたりする(ファルスネガティブ )可能性もあります。
自動診断は手動診断に比べて短期間で導入でき、費用も手動診断よりもかなり安価です。

手動診断

手動診断は、エシカルハッキング のスキルに長けたエンジニアが、攻撃者の視点で実際に攻撃を行うように手作業で診断する方法です。手動診断は対象によっては 自動診断よりも精度が高く、ツールでは検出できない脆弱性を特定できる可能性もあります。
一方で、自動診断に比べると費用が高額である点には注意が必要です。また、診断結果が出るまでにある程度の日数がかかることが普通です。

診断対象による分類

診断対象による分類には、静的診断・動的診断があります。

静的診断

静的診断は、システムやアプリケーションを動作させずにソースコードの解析等を通じて 脆弱性を検出する手法です。システムやアプリケーションが動作する前から診断できるため、開発初期の段階から実施することが可能です。
しかし、動的診断に比べると調べることのできる事柄に限界 があります。また、静的診断で検出された脆弱性が実際に脅威となるかどうかを確認するためには、別途検証が必要です。

動的診断

システム・アプリケーションを動作させ、その挙動を見ながら攻撃者の視点で攻撃を実行し診断する手法です。実際に動作しているシステム・アプリケーションを診断することから、静的診断より高い精度が期待できます。

脆弱性診断の主な種類

脆弱性診断には、主に以下の種類があります。

対象名称概要
アプリケーションウェブアプリケーション診断ウェブアプリケーションの脆弱性を検出する
モバイルアプリケーション診断モバイルアプリケーションの脆弱性を検出する
ネットワーク・OSなどプラットフォーム診断アプリケーションを実行する基盤となるネットワーク機器・サーバー・OS・ミドルウェアなどの脆弱性を検出する
クラウドクラウド(設定)診断Amazon・Googleなどが提供するクラウドの設定内容について、セキュリティの観点から診断し脆弱性を検出する

脆弱性診断の項目例

脆弱性診断の診断項目は、多岐に渡ります。サービスによって診断項目の種類や名称も同じではありません。代表的な診断項目は次の通りです。

【各脆弱性診断の代表的な診断項目】

種類主な診断項目の例
ウェブアプリケーション診断各種パラメーターの改ざんクロスサイトスクリプティングOSコマンドインジェクション総当たり攻撃なりすましなど
モバイルアプリケーション診断重要情報の送信方法に問題はないか機密情報が平文で保存されていないか通信の暗号化は適切におこなわれているか、平文で重要な情報が送信されていないかアプリケーション連携により、外部からクラッシュさせられたり機密情報を読み取られたりしないかなど
プラットフォーム診断ファームウェアの脆弱性設定ミスによる脆弱性OSの脆弱性サーバーアプリケーションの脆弱性など
クラウド(設定)診断IDに関する設定(認証・アクセス権限など)は適切かデータ保護に関する設定に不備はないかイベント監視は適切に設定されているか監査やロギングの設定は適切かなど

上記表で挙げた診断項目は、ほんの一部です。実際には種類ごとにさらに多くの診断項目が存在します。ウェブアプリケーション診断を例にとり、診断項目をもう少し詳細に見てみましょう。

【ウェブアプリケーション診断の診断項目例】

分類診断項目
入出力処理クロスサイトスクリプティング SQLインジェクション SSIインジェクション XMLインジェクション ディレクトリトラバーサル ファイルアップロード HTTPヘッダインジェクション フィッシング詐欺サイトへの誘導 パラメーターの改ざん メールの第三者中継 バッファ・オーバフロー LDAPインジェクション
認証処理ログインフォーム ログインエラーメッセージ ログアウト機能 アカウントロック機能 認証の回避 ログイン・個人情報送受信
認可権限昇格、権限のない情報へのアクセス
セッション管理Cookieのsecure属性 Cookieの有効期限 セッション固定 セッションIDのランダム性確認 セッションの強制指定 クロスサイトリクエストフォージェリ
ウェブサーバ設定システム情報の開示 サーバーエラーメッセージ 許可されたHTTPメソッド
Web2.0Ajax コンテンツの脆弱性
その他ソフトウェアに関する既知の脆弱性 ディレクトリリスティング 強制ブラウジング

上記で全てではありませんが、様々な診断項目があるということはイメージできるのではないでしょうか。

脆弱性診断の一般的な流れ

脆弱性診断にはいくつかの種類がありますが、基本的な流れはどれも共通しています。脆弱性診断を利用する場合、その進め方を理解しておくことが重要です。以下では、脆弱性診断の一般的な流れについて解説します。

▽①診断の事前準備

まず、脆弱性診断の事前準備を行います。自動診断の場合は、ツールのインストールやネットワーク設定、診断対象および診断基準の設定を行います。手動診断の場合は、診断対象の調査や診断方法・診断範囲の検討といった準備が必要です。

▽②診断の実施

準備が終わったら診断を実施します。手動診断の場合、時間がかかる可能性があることから、業務に影響がないようスケジューリングしなくてはなりません。自動診断であれば、短い時間で完了できることから、手動診断のような不安はないでしょう。診断結果は随時記録されます。

▽➂レポートによる診断結果の確認

診断結果はレポートにまとめられるので、その内容を確認する段階です。このとき、誤検知がないかをチェックし、必要に応じて再診断を行います。

自動診断では診断が完了するとすぐにレポートを確認できます。一方、手動診断の場合は、実施者からの報告を受けて確認することになります。診断実施業者によっては、発見された脆弱性のリスクレベルや対策についても説明してくれるため、事前に確認しておくとよいでしょう。

▽④診断結果に基づく改善

依頼者はレポートを確認した後、発見された脆弱性に対する改修対応を行います。リスクレベルに基づき、優先度の高い脆弱性から順に対策を進めていきます。

脆弱性診断の費用

脆弱性診断の費用は、診断対象となるシステムやアプリケーションの規模、機能数などにより幅があります。そのため、脆弱性診断を行う際には、契約前に見積もりを取得することが必須です。
また、脆弱性診断の費用は、自動(ツール)診断を選ぶか手動診断を選ぶかによっても大きく異なります。自動診断の場合、無料で利用できるサービスもあり、高くても数十万円程度で済むのが一般的です。そのため、コストを節約する必要がある場合は、自動診断が選ばれることが多いです。
一方、手動診断では、高度な技術を持つエンジニアが手作業で詳細に診断を行うため、自動診断に比べて費用が高額になるのは避けられません。診断対象の規模や機能数によっては、費用が数十万円から数百万円に達することもあります。
ただし、手動診断は自動診断に比べて診断の精度や網羅性に大きな差があり、より詳細なレポートを提供する点で優れています。

脆弱性診断ツール・サービス(有料・無料)の例

市場には数多くの脆弱性診断サービスが出回っています。ここではいくつかピックアップしてご紹介いたします。

=有料サービスの例
【サイバーセキュリティクラウド社の脆弱性診断サービス】
ウェブアプリケーション・プラットフォーム・APIの脆弱性を網羅的に診断するサービスです。累計診断実績約2,000システムを誇る同社が、自動診断と専門家による手動診断をハイブリッドで提供します。IPAに準拠した診断基準に従い、ウェブアプリケーションの脆弱性診断項目を洩れなくカバーする点も、本サービスの特徴です。

・公式サイト
https://www.cscloud.co.jp/vulnerability-audit/

【vex】
株式会社ユービーセキュアによるvexは、2015~2021年にかけマーケットシェアNo.1を記録したウェブアプリケーション用脆弱性自動検査ツールです。vexはセキュリティ専門技術者が一目置く高い脆弱性検出率を誇り、経産省サイト「情報セキュリティサービスの例示」でも紹介されています。

自由度の高いシナリオ作成や検査シグネチャ提供など、機能が充実している点もvexが選ばれる理由です。自動診断のほか、手動診断や手動診断・自動診断のハイブリッドも選択できます。

・公式サイト
https://www.ubsecure.jp/vex

【AyeyScan】
AyeyScanはAI+RPAによる高精度な診断で、内製化を支援するクラウド型ウェブアプリケーション脆弱性診断ツールです。AyeyScanでは、AI+RPA技術により診断対象を自動クローリングするなどして、高精度なテストシナリオをAIが自動生成します。CI/CDツールとAPI連携することにより、セキュリティテストの自動化も可能です。

・公式サイト
https://www.aeyescan.jp/

=無料ツールの例
【Vuls】
Vulsはオープンソースのエージェントレス型脆弱性診断ツールです。Vulsは脆弱性データベースなどを参照し脆弱性に関する情報を取得した上で、診断対象に影響があるか診断します。これによって、システム管理者の手間を減らすことが可能です。スキャンした結果をSlackやメールで通知する機能もあります。

・公式サイト
https://vuls.io/

【OpenVAS】
OpenVASはオープンソースのシステム用脆弱性診断ツールです。OpenVASは診断対象の外部・内部から自動かつ定期的に診断を行い、既知の脆弱性がないかチェックします。スキャン結果に基づき、必要な脆弱性対策をレポートして出力する点も本ツールの特徴です。

・公式サイト
https://www.openvas.org/

AIQVE ONEのウェブ脆弱性診断サービス

当社AIQVE ONEのウェブ脆弱性診断サービスは、お客様のニーズに基づき診断方法や診断頻度を選べるサービスです。

ウェブアプリケーション診断を行った事実が欲しい場合は自動診断を、細部まで詳細にチェックする必要がある場合は手動診断を選ぶことができます。報告書の提出から3ヵ月の間は、検出された脆弱性の修正部分に対し、1回に限り追加費用なしで再診断を行います。

本サービスの詳細については、以下公式サイトをご覧ください。
https://www.aiqveone.co.jp/security/

まとめ

脆弱性診断は、システムなどの診断対象に脆弱性がないかを調べ、発見されたリスクを評価することです。企業は脆弱性診断を行うことで、自社の環境に適したセキュリティ対策を効率的に実施することができます。
脆弱性診断には、ツールによる自動診断やエンジニアが手作業で行う手動診断などの種類があり、自社に適したものを選ぶことが重要です。状況によっては、攻撃者視点でシナリオ通りのサイバー攻撃が成功するかを調べるペネトレーションテストが選ばれることもあります。
これらの脆弱性診断の特徴や種類を理解し、自社のセキュリティ対策に役立てていただければ幸いです。

セキュリティ

ブログTOPへ