コラム

  • 2021.07.13
  • セキュリティ
  • #オンプレミス
  • #クラウド
  • #基礎知識
  • #脆弱性診断

脆弱性診断とは 必要な理由や診断の種類、やり方やツールについても解説

インターネットの発展に伴い、多くの企業がWebやアプリを介してサービスを展開しています。インターネットの恩恵を享受する一方、近年ではサイバー攻撃による個人情報流出や、ランサムウェア攻撃の被害などのインシデントが増加傾向にあります。サイバー攻撃は、高度化・巧妙化が著しく、対策が非常に難しくなっているのが現実で、そのため、企業には情報資産を守るためのセキュリティ対策が必須となっています。
今回のコラムでは、インターネット社会における「脆弱性」とは何か、脆弱性診断とは何を基準に診断するのか、脆弱性があることでどのようなインシデントにつながるのかなどについて解説いたします。

脆弱性診断とは?

脆弱性診断とは、情報システムや業務プロセス、あるいは物理的な環境などを対象として「脆弱性」がないかを診断することです。
脆弱性診断はセキュリティ上の問題を検査することから「セキュリティ診断」のようによばれる場合もあります。

脆弱性診断は、診断対象ごとに「Webアプリケーション脆弱性診断」や「スマートフォンアプリケーション脆弱性診断」のように細分化されています。この詳細は後述の「脆弱性診断の種類」でふれることにして、まずは脆弱性とはそもそも何なのかについて解説します。

脆弱性とは?

脆弱性のイメージ

脆弱性はISMSなどの規格では以下のように定義されています。

3.77 ぜい弱性(vulnerability)
一つ以上の脅威(3.74)によって付け込まれる可能性のある,資産又は管理策(3.14)の弱点。
出展:JISC(日本産業標準調査会)JISリスト 規格番号JISQ27000
https://www.jisc.go.jp/app/jis/general/GnrJISNumberNameSearchList?show&jisStdNo=Q

上記の定義において「脅威」とは、情報漏洩や資産の喪失、業務の停止などのインシデントの原因になりうる人物やイベントを意味します。 具体的にはインターネット上の攻撃者や停電、地震などがあげられます。

また、「資産又は管理策」は具体的にはWebアプリケーションのような情報システムやそれが保持する情報資産、それに関わる業務プロセスなどがあげられます。

要約すれば、脆弱性とは「インターネット上の攻撃者や地震などに対して、情報漏洩や資産の喪失につながる可能性のある情報システムや業務プロセスにおける弱点である」といえます。

よく知られる脆弱性としては、Webアプリケーションにおける「SQLインジェクション脆弱性」や「クロスサイトスクリプティング脆弱性」などがあります。 また、容易にオフィスに侵入され、情報資産をもち出されるような場合も「入退室管理の脆弱性」や「オフィスでの情報保管の脆弱性」があるといえます。

脆弱性診断が必要な理由

「なぜ脆弱性診断が必要なのか」を一言であらわせば「リスクを管理するため」であるといえます。リスクとは「脅威」が「脆弱性」を利用して「重要情報の漏洩」や「システムの停止」のようなビジネスに対する影響を与える可能性を意味します。

脆弱性診断は、脅威が利用しうる脆弱性と、それにより生じる可能性のあるリスクを明確化することでリスク管理を可能にします。 例えば、重要情報を保持するWebシステムでは、その重要情報が漏洩しないよう対策する必要があります。このため、そのWebシステムに情報漏洩につながる可能性のある脆弱性が存在しないかを、脆弱性診断により検査する必要があるのです。

近年、インターネットの発展と攻撃の多様化に伴い、脆弱性診断の必要性はますます高まる傾向にあります。 インターネットは距離や時間の問題を超えてさまざまな情報へアクセスを可能にする素晴らしい道具ですが、 一方でインターネット上のシステムが地理や時間に関係なく、世界中から攻撃に曝されることも意味します。 また、攻撃者やその意図も「ランサムウェア」に代表される経済的な目的だけでなく、政治や宗教などの思想に基づく目的、愉快犯など多様化しており、個人や企業に関係なく「自分を攻撃する者はいない」とは誰もいえない状況にあります。このことから、インターネットへ接続するシステムは必ず脆弱性診断を受ける必要があるといえます。

脆弱性診断の種類

脆弱性診断は「検査する対象」ごとにさまざまな種類が存在します。

「検査する対象」とそれに対応する脆弱性診断の例をあげると以下のようになります。

・Webアプリケーション → Webアプリケーション脆弱性診断
・クラウド基盤 → クラウド診断
・ネットワーク/サービス基盤 → プラットフォーム診断/ペネトレーションテスト
・ソースコード → ソースコード診断

また、Webアプリケーションのフレームワーク(StrutsやRailsなど)やCMS製品(WordPressやEC-CUBEなど)ごとにも、発生しやすい脆弱性が異なるため、それに応じた診断が必要になる場合もあります。

ここで注意すべき点として「WebシステムのセキュリティはWebアプリケーションへの脆弱性診断だけでは診断できない」ということがあげられます。Webシステムの構築では、Webアプリケーションを稼働するためのさまざまな基盤・関連製品が必要になります。例えば、「AWS上にEC2サーバーとDB(RDS)・データストア(S3)を構築し、EC2サーバー上のTomcatでWebアプリケーションを稼働する」というシステムを構築した場合、 Webアプリケーションだけを診断しても以下のような観点がケアされません。

・WebサーバーやDB(RDS)サーバーの管理用ポートへのアクセス(プラットフォーム診断/ペンテスト)
・データストア(S3)に保存したデータへのアクセス(クラウド診断)
・AWS管理コンソールへのアクセス(クラウド診断)

このため、システムの構成要素に応じて脆弱性診断を使いわけ、リスクをコントロールすることが重要になります。

脆弱性診断のやり方

脆弱性のイメージ

「脆弱性診断のやり方」は診断対象ごとにさまざまです。 例えば、Webアプリケーションを対象とする場合は、ブラウザで発行するHTTP/HTTPSのリクエスト/レスポンスを解析したり、改ざんしたりします。また、クラウド診断では、クラウド基盤上の設定が適切であるかを確認します。ただし、どの診断でも重要なことは「基準を定め、網羅的に検査を行う」ことであるといえます。

脆弱性診断と聞くと「ハッカーのような人がハッカーのように攻撃してみる」ことを想像するかもしれません。確かに、ペネトレーションテストなどではそのような検査も実施します。ただし、このような検査は「基本的な脆弱性」を検査したうえで行われます。脆弱性診断が「ソフトウェアテストの一種類」である以上、「基準を定め、網羅的な検査を行う」ことがもっとも重要な点になります。

Webアプリケーションの診断基準としては OWASP ASVS や OWASP Top 10などがあげられます。また、クラウド基盤や各種製品の設定の基準としては CISベンチマーク などがあります。診断を行う際には、診断対象の性質(個人情報を扱うか、業務へどのような影響があるかなど)に応じて診断基準・項目を選択します。

また、Webアプリケーションのように検査対象機能が膨大である場合には、ソフトウェアテストの手法を活用して網羅性を担保することが重要になります。ソフトウェアテストでは因子水準などに基づいて網羅的なテストケースを準備しますが、脆弱性診断でも同様の技術により、網羅的なテストケースを準備してテストのカバレッジを管理します。

このように「基準を定め、網羅的に脆弱性診断をする」ことではじめて信頼性のある脆弱性診断となります。

脆弱性診断ツール

脆弱性診断では診断の種類やベンダーごとにさまざまなツールが利用されています。ここではWebアプリケーション診断やプラットフォーム診断で利用される代表的なツールを紹介したいと思います。

Webアプリケーション診断でもっともよく利用される診断ツールとしては「MITMプロキシ」があげられます。 一般的に「プロキシ」とはサーバーとクライアントの間で通信を中継する仕組ですが、「MITMプロキシ」は特に「中間者(Man-in-The-Middle)攻撃」を再現できるプロキシを意味します。MITMプロキシ製品の例としてはOWASP ZAPやBurp Suiteなどがあげられます。MITMプロキシは一般的に以下のような機能をもちます。

・HTTPSで暗号化された通信の復号化・再暗号化
・HTTP/HTTPS通信の記録
・HTTP/HTTPS通信の改ざん・再送信

これ以外にもMITMプロキシ製品ごとにCookieやHTTPヘッダーの制御やスキャン機能など、さまざまな機能が提供されています。これを用いることで、クロスサイトスクリプティングやSQLインジェクションなどの検査が効率的に可能になります。

プラットフォーム診断でよく利用されるツールとしては「ポートスキャナ」と「脆弱性スキャナ」があげられます。ポートスキャナ製品としてはNnmapがもっとも有名です。また、脆弱性スキャナ製品の例としてはOpenVASやQualysGuard、Nessusなどがあげられます。

「ポートスキャナ」はネットワーク上で提供されているサービスを列挙するためのツールです。これを利用することで、ネットワーク上のサーバーやそのサーバー上で稼働しているサービス(Webサービス や FTPサービスなど)を列挙し、後述の脆弱性スキャナの対象を洗い出したり、意図しないサービスが提供されていないかを検査したりします。

「脆弱性スキャナ」はネットワーク上のサービスや製品に「既知の脆弱性」がないかを検査するツールです。インターネット上の製品に脆弱性が見つかると、「既知の脆弱性」としてデータベース化されます。有名な脆弱性データベースとしてはMITRE(マイター)が管理するCVE(共通脆弱性識別子)があげられます。例えば、2014年に大きな話題となったOpenSSLの脆弱性「Heartbleed」は「CVE-2014-0160」という番号で管理されています。脆弱性スキャナにより既知の脆弱性を検査することで、攻撃者がその脆弱性を利用する前に対策することが可能になります。

まとめ

このコラムでは脆弱性診断の概要を解説しました。システムを構成する周辺技術や攻撃者の技術が日々変化を遂げる今日において、開発時点で未知の脆弱性を根絶することは困難といえます。また、サービスによっては利便性とセキュリティのバランスを考える必要もあるでしょう。

このように、今後は「リスクを管理し、セキュリティと上手に付き合っていく」ことが重要になると考えられます。「彼を知り、己を知れば」という言葉があるように、脆弱性診断はセキュリティを知るうえでみなさんの重要な「目」となります。 脆弱性診断という目を通して今後もセキュリティと上手にお付き合いいただければと思います。

関連サービス