脆弱性診断とは

脆弱性診断(セキュリティ診断)とは、文字通りシステムの脆弱性を診断することです。システムの脆弱性とは、OSやミドルウェア、アプリケーションソフトといった、様々なソフトウェアに内在する設計上のミスや不具合などによってもたらされるセキュリティ上の欠陥を指します。要するにソフトウェアのバグの一種と考えてよいのですが、脆弱性の厄介なところは、この設計ミスや不具合を放置しておくと外部からそのシステムへの不正アクセスに利用されたり、その脆弱性に付けこむウィルスに感染したりする点です。

そこで脆弱性診断では、不正アクセスやウィルスなどの攻撃の対象になるような既知の脆弱性がシステムに内在しているか否かを検査し、脆弱性が発見された場合の対象の特定やランク付けなどを行って結果を報告するということが行われます。

参考:セキュリティリスク・アセスメントで必要な視点 | 漏洩チェッカー

脆弱性によるリスク

脆弱性の問題はソフトウェアを使用するすべての機器にとって、共通するリスクです。脆弱性の問題を放置していると、端末やサーバー、特にインターネットを経由して外部と接続しているサーバーにとっては、脆弱性を突いた不正アクセスやウィルスによって情報漏洩が生じたり、システムダウンを引き起こすサイバー攻撃を受けたりする可能性が高まります。

実際に、独立行政法人情報処理推進機構が「情報セキュリティ白書2022」では、インシデント対応サービスの「IBM Security X-Force Incident response」によって観測された2021年のウイルス感染手口の内訳の34%が「脆弱性の悪用」で、「フィッシング」に次ぐ感染手口であることが示されました。

したがって、脆弱性の問題は放置することなく、確実に対処しなければなりません。

参考:情報セキュリティ白書2022

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

脆弱性診断と混同される言葉として「ペネとレーションテスト」があります。ここでは、脆弱性診断とペネトレーションテストの違いについて解説します。

参考:ペネトレーションテストとは?脆弱性診断との違いをもとに解説 | ITコラム|アイティーエム株式会社

ペネトレーションテストとは

ペネトレーションテストとは、「侵入テスト」のことです。ホワイトハッカーと呼ばれる「善意のハッカー」や専門の技術者が、悪意のハッカーがハッキングを行う際に使用するような技術を活用してシステムに侵入し、システムのセキュリティ面の弱点を明らかにすることです。

ペネトレーションテストを実施することによって、そのシステムのどのような点にセキュリティ面の弱点があって、その弱点はどのような方法を採るとハッキングの被害にあうか、ということが明らかになります。

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

ペネトレーションテストと脆弱性診断の違いは、その「目的」にあります。ペネトレーションテストの目的は、システムのセキュリティ面の弱点とその弱点を突かれる具体的な方法を明らかにすることです。一方で脆弱性診断の目的は、システムに内在する既知の脆弱性を明らかにしてその重要性のランク付けを行い、結果を報告することです。

脆弱性診断の対象範囲はペネトレーションテストに対して広範ですが、対象の脆弱性が「そのシステムにおいてどのように利用されればシステムの侵入を受ける可能性があるか」といったところまでは診断されません。

脆弱性診断ツールの比較ポイント3選

それでは実際に脆弱性診断を行うにあたり、どのような基準でサービス(ツール)を選定したらよいのか、その内容について解説します。

1. 診断項目

脆弱性診断の診断項目はサービスやツールによって様々です。自社のニーズに合ったものを選択しましょう。例えば、はじめて脆弱性診断を受ける場合はプラットフォーム診断からスマートフォンアプリケーション診断まで幅広く診断を受け、そこで発見された脆弱性の内容に応じて次の機会には脆弱性の発見された部分について診断を受けるなどの考え方があります。

2. 診断方法

脆弱性診断の方法には大きく、「手動診断」と「ツール診断」があります。これも自社のその時その時のニーズに応じて選択すればよいと考えます。はじめて脆弱性診断を受ける場合にはきめ細かく診断を受けることのできる「手動診断」を利用し、脆弱性に関して安定した状況が見られたら、定期的に「ツール診断」で脆弱性対策が図られていることを確認する等の考え方もできます。

3. 価格

サービス価格としては「ツール診断」よりも「手動診断」が、「リモート診断」よりも「オンサイト診断」が高価となる傾向があります。自社のニーズと相談してどのサービスを選択するのがよいか検討するとよいでしょう。またシステムの重要性(機密性・完全性・可用性)の高いものについては多少高価なサービスであっても利用したほうが安全性が図られ、結果的に得策である場合もあります。

脆弱性診断の3つの種類

脆弱性診断は、その診断の対象によっていくつかの種類に分類されます。デジタル庁の公表した「政府情報システムにおける脆弱性診断導入ガイドライン」によると、脆弱性診断の種類を「プラットフォーム脆弱性診断」、「Webアプリケーション脆弱性診断」、「スマートフォンアプリケーション脆弱性診断」の3種類に分類しています。

▼参考
政府情報システムにおける脆弱性診断導入ガイドライン | デジタル庁
セキュリティ診断の実施基準|脆弱性へ効果的・効率的に対応するための考え方|ブログ|NRIセキュア

1. プラットフォーム脆弱性診断

プラットフォーム脆弱性診断では、サーバOS(仮想化基盤上のゲストOSを含む)やミドルウェアといったソフトウェアのほか、ファイアウォール、ロードバランサ、リバースプロキシ、VPN(Virtual Private Network、仮想プライベートネットワーク)などのネットワーク機器が診断の対象となります。特にVPNは昨今外部からの攻撃の対象になりやすい部位になりますので、重点的な診断の対象になります。

プラットフォーム脆弱性診断では、対象のサーバやネットワーク機器に対して疑似的な攻撃を行うことにより、ソフトウェア内部に潜在する脆弱性や、ソフトウェアやネットワーク機器の設定上の不備、外部との通信を想定していない通信ポートの有無や通信プロトコル固有の脆弱性の有無などが診断されます。

2. Webアプリケーション脆弱性診断

Webアプリケーション脆弱性診断では、WebアプリケーションやWebアプリケーションと共に使用するAPI(Applicatin Program Interface)に対して疑似的に攻撃的なリクエストを送信することによって、そのアプリケーション・プログラムの脆弱性の有無を診断するものです。

診断においては、ユーザーIDに関する処理の悪用によるなりすまし、他人のデータの読み書き、管理者権限の奪取といったことが可能になるような処理上の不備がないかなどといった、外部からの攻撃に利用可能な処理上の問題点がないかという観点からの診断が行われます。

3. スマートフォンアプリケーション脆弱性診断

スマートフォンアプリケーション脆弱性診断では、Andoroid、iosといったスマートフォン向けOS上で稼働するアプリに関する脆弱性を診断します。アプリの脆弱性診断の中では、アプリとサーバとの通信に関する脆弱性も対象に含まれます。

診断においては、アプリ本体への他アプリからの機密情報の参照、サーバ証明書の検証不備、認証情報を用いた不正アクセスなどの脆弱性を検知できます。またスマートフォンアプリに関しては、利用者の端末上で実行される・アプリの解析が比較的容易であることから、セキュリティの確保が難しく、診断の費用対効果のバランスが難しいとされています。

そのため、Webアプリケーションの課題解決に取り組むオンラインコミュニティOWASPがモバイルアプリケーションのセキュリティ要件の基準となる「OWASP MASVS」を定めており、情報システムにおいてはMASVS-L1相当の脆弱性診断を行うことが望ましいとされています。

・MASVS-L1:モバイルアプリケーションセキュリティのベストプラクティスであり、すべてのアプリケーションに適用。
・MASVS-L2:多層防御として標準要件を越えるセキュリティを実現する。個人情報やネットバンキングの資産移動などの機密情報を扱うアプリケーションに適用。
・MASVS-R:リバースエンジニアリングと改ざんに対する耐性を有し、情報資産を保護し、アプリケーション自体の改ざんを防止することに役立つ。

参考:モバイルアプリのセキュリティ検証標準であるOWASP MASVSの日本語訳を公開 | LAC WATCH

脆弱性診断が必要な3つの理由

次に脆弱性診断が必要な理由を3つに分けて説明します。

参考:なぜ脆弱性診断が必要なのか? その種類と関連おすすめ製品をご紹介 | オンライン展示会プラットフォームevort(エボルト)

1. 外部からの攻撃方法の多様化

最近では企業や公的機関等へのサイバー攻撃による被害も報道でよく目にするようになり、政府からの注意喚起も行われるようになったことから、企業のセキュリティ意識はかつてに比べて向上しています。しかし攻撃する側も年々その手法を向上させ、多様化させており、企業側が少しでも手を抜くとたちまち攻撃に晒されてしまうことになり、システムダウンや情報漏洩といった被害に直面することになります。

企業側としてはそのような外部からの攻撃によるリスク対策として、システムのOSやミドルウェアのセキュリティパッチを行う等の対策を確実に行う必要があります。脆弱性診断は、そのような対策が確実に行われていることを検査する目的があります。

参考:企業が取り組むべき情報セキュリティ対策とは。事例から対策までの流れを解説 | 漏洩チェッカー

2. 内部不正の情報漏洩対策

情報漏洩に関するリスクは外部からのサイバー攻撃に限ったものではありません。むしろ情報漏洩のリスクは、企業内部の事情を熟知している内部関係者によって行われる場合のほうが高くなります。

企業のセキュリティ対策は外部からの攻撃だけではなく、内部からの攻撃にも対処する必要があります。脆弱性診断ではそのような内部からの攻撃を想定した診断も行われます。

3. ヒューマンエラー対策

脆弱性診断はヒューマンエラー対策の点からも必要となります。アプリケーション・プログラムは基本的に人間が作成するものですので、システム開発にあたっていかにセキュアなコーディング・ルールを決めても、それを人間がきちんと遵守しなければ堅牢なプログラムを作成することはできません。

また、本人はしっかりとルールにしたがってプログラムを作成したつもりでも、うっかりミスでルールを逸脱してしまうことも考えられます。脆弱性診断ではそのような点も明らかにすることが可能です。

脆弱性診断のやり方

次に脆弱性診断のやり方について説明します。脆弱性診断の方法は、診断の手段や診断を行う場所によっていくつかの種類に分類されます。

手動診断とツール診断

手動診断とは、脆弱性診断の専門家が、自ら企業システムの脆弱性診断を行う方法です。そこでは専門家の知識や経験を駆使して診断を行いますので、ツールでは簡単に発見できないような設計上のミスに起因する脆弱性も発見できるなど、診断の精度は一般的にツール診断よりも高くなります。

一方ツール診断は、文字通り専用ツールを使用した自動診断を行う方法です。一般的に手動診断に比較して短時間で安価に脆弱性診断を行うことが可能です。

リモート診断とオンサイト診断

リモート診断とは、インターネット経由で企業システムの脆弱性診断を行う方法です。リモート診断では企業システムのWebアプリケーションの診断や、外部からの攻撃を想定したサーバ・ネットワーク機器の脆弱性を診断することが行われます。

一方オンサイト診断は、診断を行う者が企業内において現場から脆弱性診断を行う方法です。オンサイト診断ではインターネット経由では診断できない内部ネットワークに接続しているシステムの脆弱性を診断します。

まとめ

脆弱性診断について、その内容やペネトレーションテストとの違い、必要理由やサービスの選定ポイントについて解説してきました。最後に脆弱性診断の利用の仕方について説明します。

脆弱性診断に関するサービスはシステムの重要性を勘案した上で選ぶ

システムの安全性を確保していく上で、今の時代は脆弱性診断は必要不可欠なものと言えます。但し必要だからと言って、過剰に脆弱性診断にコストを掛けるのはシステムの維持にとって必ずしも得策ではありません。システムの重要性を勘案した上で、適切なコストとなるよう、脆弱性診断のサービスレベルを選択するのがよいと考えます。