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

脆弱性診断とは、アプリケーションやサーバ、ネットワークに「脆弱性」がないかを診断するセキュリティテストのことです。攻撃者の視点に立って、「脆弱性」を狙った攻撃が成功する可能性がないかを検証し、問題点を洗い出します。
このページでは主にWebアプリケーションの脆弱性診断について解説します。 Web脆弱性診断ツール「VAddy」はWebアプリケーションの脆弱性を自分で簡単に検査できるクラウド型ツールです。

脆弱性診断イメージ

脆弱性とは?

Webアプリケーション(Webサイト)を設計・開発する過程で生まれるセキュリティ上の欠陥を指します。欠陥と言う以上、つまりはWebアプリケーションのバグです。攻撃者は、この「脆弱性」を狙って攻撃を仕掛けてきます。脆弱性診断は、この「脆弱性」について調査を行います。

脆弱性診断の対象

WebサイトやWebサービスに関連する脆弱性の中でも、その検査対象/レイヤーによって診断内容は大きく異なります。ここでは、最も一般的な3つの対象について説明します。
どの対象を診断する場合も、診断範囲と診断方法の決定、診断作業の実施、結果報告、指摘箇所の対策実施と再診断、という流れを経て、サイバー攻撃に強いセキュアなWebサイト/Webサービス環境の確保を目指す点は共通です。

Webアプリケーション診断

  • 独自アプリケーション
  • CMS等(一般のアプリケーションとして検査)

サーバ上で稼働させるWebアプリケーション(Webサイト上で稼働するプログラム)を対象として行う脆弱性診断です。
攻撃者の視点に立ち、手動またはツールを使って、Webアプリケーションに潜む SQLインジェクション、クロスサイトスクリプティング、コマンドインジェクションをはじめとする脆弱性を見つけ、解析、報告します。
後述の脆弱性診断ツール「VAddy(バディ)」もこのWebアプリケーション脆弱性診断の一種です。

≫ 脆弱性診断(Webアプリケーション診断)の方法
※Webアプリケーションの脆弱性に関しては、IPAをはじめ様々な専門機関から情報やガイドラインが公開されています。
≫ IPA「安全なウェブサイトの作り方」
≫ OWASP TOP 10

プラットフォーム診断

  • CMS等(既知の脆弱性管理)
  • ミドルウェア
  • サーバOS
  • ネットワーク

サーバ(Webサーバ/メールサーバ/DNSサーバ等)やネットワークを対象とするものです。主に、OS/ミドルウェア等の既知の脆弱性への対応や、ネットワーク機器の状態、稼働している各サービス/ポート等の安全性について検査します。
外部からインターネット越しに診断を行ってFW等を含めたシステム全体の状況を確認する場合(リモート診断)と、ネットワーク内から診断を行って個々のシステムの問題点をチェックする場合(オンサイト診断)、およびその両方を行う場合があります。

※Webアプリケーションについても、CMSやOSSなど既知の脆弱性が管理されているものは、プラットフォーム診断でバージョン等の確認を行うことが一般的です。

ネイティブアプリ診断

  • iOSアプリ
  • Androidアプリ

主にAndroidやiOS用のスマートフォン/タブレット専用「アプリ」の脆弱性について行う診断です。
近年のネイティブアプリは、Webサービスの中でサーバ間と頻繁に通信を行うものが中心となっており、サーバとの通信に関する診断がより重要となっていますが、機器内に残るデータの管理や、逆コンパイルによる悪用の危険性など、モバイルアプリ特有の問題の検査も行われています。

注目されるWebアプリケーションの脆弱性診断

上記のうち、Webアプリケーションの脆弱性は次のような理由から注目されており、脆弱性診断などの対策を行う企業が急増しています。

  • ●攻撃者の視点から
    • 攻撃を仕掛けられる箇所や手法の選択肢が多いこと
    • 従来からある個人情報などの経済的価値の高い情報の詐取はもちろんのこと、Webサイトの改ざんを目的とした攻撃が攻撃も多発していること
  • ●システムの特性から
    • 低レイヤーの通信と比べて、システムが正常通信と攻撃を見分けにくいこと
    • OSやミドルウェア、通信機器等の低レイヤーでは、ベンダーからの情報をはじめ対策や防御方法が明確なことが多いのに対して、多くのWebアプリケーションはサイトごとに構成も機能も全く異なるため、個別の対応が必要となること
    • 開発スケジュールとの戦いの中でセキュリティ対策が後回しとなった結果、脆弱性が放置されたままの既存Webアプリケーションが多数公開されていること
  • ●最近の傾向として
    • Webサイト/Webアプリケーションの運用歴が長くなるにつれ、過去に開発された機能のレビューが難しくなっていること
    • 短期間に頻繁にアップデートが行われるWebサービスが多く、セキュリティ面の対応が追い付かないケースが多いこと
    • セキュリティ意識の高まりから、利用するWebサービスにおけるセキュリティ対策実施状況を確認・調査する企業が増えていること

とくに注意したい、Webアプリケーションの主要な脆弱性

下記の11項目は、実際に攻撃にあった脆弱性のうちの約90%を占めています*。

  • SQLインジェクション
    関連リンク:SQLインジェクションとは?
  • クロスサイトスクリプティング(XSS)
    関連リンク:クロスサイトスクリプティングとは?
  • リモートファイルインクルージョン
  • コマンドインジェクション
  • ディレクトリトラバーサル
  • ブラインドSQLインジェクション
  • 安全でないデシリアライゼーション
  • XML外部実体攻撃
  • HTTPヘッダインジェクション
  • SSRF脆弱性
  • 非公開ファイル検査

*2019年7月にクラウド型WAF「Scutum」で観測された攻撃リクエストを元に算出

中でも、SQLインジェクションを利用した攻撃は、発生頻度が高い上に、被害が発生した場合に大量の個人情報の流出に繋がることも多く、最優先で対策すべき脆弱性です。XSSの脆弱性は、フォームの確認画面をはじめWebサイト上の実に幅広い箇所で発生する可能性があり、アプリケーション開発時の僅かなミスが改ざんやなりすまし、悪意あるサイトへの誘導など様々な被害に直結します。この2つの脆弱性への対策はWebアプリケーション開発時のセキュリティ対策要件にも必ずと言って良いほど含まれており、最もメジャーな脆弱性として扱われています。

VAddyは、2021年9月27日に「検査項目追加オプション」の提供を開始しました。
このオプションを追加購入することで、独立行政法人 情報処理推進機構(以下、IPA)が提唱する「安全なウェブサイトの作り方(チェックリスト)」で紹介されている全ての脆弱性の診断が可能になります。「より客観的な指標に基づく診断を実施したい」というお客様にとって最適なオプションです。

プレスリリース:脆弱性診断ツール「VAddy」、IPA「安全なウェブサイトの作り方(チェックリスト)」の全項目に対応した『検査項目追加オプション』を提供開始

セキュリティ事故での被害は甚大

下記の表は、企業や金融機関のWebアプリケーションにおいて実際にあった被害の例です。これらはあくまでほんの一部の例であり、他にもさまざまな攻撃・被害パターンが報告され、メディアでも取り上げられています。

被害パターン 被害例
情報漏えい ショッピングモールのメールマガジンサービスのサーバーへ、2017年5月から2018年1月の間、SQLインジェクション攻撃を用いた複数回にわたる不正アクセスがあり、メールアドレスとパスワードの組み合わせ約24万件、メールアドレスのみ約3万件が流出した。
なりすまし 2016年10月、ドラッグストアオンラインショップにて、第三者が別サイト等から入手したと思われる会員IDとパスワードを用いて(会員になりすまして)不正にログインし、一部アカウントにてポイントを不正に利用されていたことが判明した。
サイト改ざん 2016年6月、金融機関Webサイトにて、第三者からの不正アクセスにより、Webサイトの閲覧者を悪意あるサイトへ自動的に誘導するよう、Webサイトが改ざんされていたことが判明した。

上記に述べたケースの被害の大きさからもわかるように、万が一事故が起きてしまった場合、築き上げてきた企業としての”価値”や”信頼”をすべてを失うことになりかねないのです。

脆弱性診断の必要性

脆弱性は、Webアプリケーションの開発・運営を続けていく上で常につきまとう身近な問題です。前述した被害の深刻さからもおわかりいただけるように、Webアプリケーション開発には脆弱性診断をはじめとする情報セキュリティ対策がとても重要です。

最近でも、脆弱性の対策もれの責任を問うひとつの判決事例が話題となりました。
2011年~2014年頃の事例で、脆弱性が原因で情報漏えい事件を起こしたECサイトの運営会社が、システム開発を依頼した開発会社を告訴した裁判がありました。判決は、運営会社側が勝訴し、開発会社は損害賠償金の支払いを命じられました。
参照:SQLインジェクション対策もれの責任を開発会社に問う判決 | 徳丸浩の日記

このように、実際に事件が起きてしまうと、開発会社が大きな責任を負わされることになりかねません。事故の被害を被るのはサイト運営者だけではないのです。しかし、そこまで危機感を持って対策を行っている開発会社はまだまだ多くはありません。売り上げを増やすための改修などが優先され、セキュリティ対策は後回しにされがちなのです。

最近になってやっと、弊社のお客様からも「最近よく脆弱性診断が発注案件に含まれるようになった」との声を聞くようになってきました。徐々にですが、発注者側のセキュリティ意識が高まりつつあり、伴って、脆弱性診断などのセキュリティ対策が注目されてきているのです。

【参考】脆弱性への対策は大きく2種類

開発時に生まれた脆弱性による実害を防ぐ一つ目の方法は、上記のように脆弱性診断を行い、発見された問題点を改修することですが、もう一つの方法として、もしWebアプリケーションに脆弱性が存在していてもそれを無害化できるような専用のファイアウォール「Webアプリケーションファイアウォール(WAF)」を導入することも有効です。
ただしこれは、リリース後のWebサイトを運営者が防御するための手段であり、開発部門や開発会社が自分の担当範囲でコントロールできるものではありません。また、 運用開始後に大きな脆弱性が発見された場合、たとえWAFを導入していても最終的にはWebアプリケーションの改修を行うことが一般的です。
あくまで、リリース前とリリース後というフェーズの異なるセキュリティ対策として、脆弱性診断とWAFを併用することが理想と言えるでしょう。
今までの脆弱性診断は、導入に時間が掛かったり、セキュリティの専門家でないと使えなかったり、様々な制約がありましたが、最近では低コストで効率よくセキュリティ専門家「以外」の方でも利用できる脆弱性診断も登場しています。

脆弱性診断の実施費用

状況別、予算の段階に応じた診断方法の選択

Webアプリケーションをサイバー攻撃から守るセキュリティ対策は複数存在していますが、その中の脆弱性診断でも幾つかのやり方が存在します。これまで脆弱性診断を実施していなかった場合、担当者がそれらを一から調査するだけでも手間が掛かることがわかると思います。
ここでは、ベーシックな脆弱性診断の費用から検査対象のWebアプリケーションの状況に合わせた診断の組み合わせ例まで一通りご紹介します。

■古いアプリケーション(機能追加の予定がなく、予算も取れない)
→手動脆弱性診断(1回:100万円~200万円)or VAddy(1ヶ月:59,800円)で一回だけ診断

稼働中のWebアプリケーションの中には製品ライフサイクルの終盤にさしかかっていて、この先大きな機能追加の予定が無いものもあります。その中でも現役として十分な売上を確保しているようなWebアプリケーションの場合は、予算を確保して手動脆弱性診断の実施も検討できるでしょう。そうでない場合はVAddyのようなツールを使って診断を実施できます。

■SaaS(リリース前)
→手動脆弱性診断(1回:100万円~200万円)を実施後、VAddy(年間:598,000円)で継続的に診断

手動脆弱性診断とVAddyを組み合わせる方法です。サービスのリリース前に手動脆弱性診断を実施し、以降はWebアプリケーションのアップデートに合わせて日々の診断はVAddyで継続的に診断を行うことでWebアプリケーションを常にセキュアな状態に保ちます。手動脆弱性診断については年一回程度の継続実施もおすすめします。

■SaaS(リリース後)
→まずVAddy(年間:598,000円)で継続的に診断。
 その後、手動脆弱性診断(1回:100万円~200万円)も組み合わせる

VAddyで脆弱性診断をスモールスタートする方法です。すでにリリースされているサービスでも、十分な売上が確保できる前は脆弱性診断に予算をかけにくい場合があります。そうした場合まずはVAddyで診断を継続的に実施しつつ、ある程度予算が確保できるようになった後で外部に依頼をして手動脆弱性診断をすることも可能です。

■受託開発(診断費用は自社負担)
→VAddy(1ヶ月~:59,800円)を使った診断を開発フローに組み込む

例えば、取引先から脆弱性診断の実施を求められていても脆弱性診断の費用は自社負担する必要がある場合は、いっそ自社の標準開発フローにVAddyを組み込んでしまうことも考えられます。VAddyは一つの契約で複数の案件に利用できるので、VAddyのライセンス費用を複数の案件の予算に振り分けて、個々の案件の費用負担を下げることができます。また、セキュリティ専門家の配置は必要ないので、開発段階で誰でも脆弱性診断を実施することができ、継続的にセキュアなWebアプリケーションを開発できるメリットもあります。

Web脆弱性診断ツール「VAddy」は、月に何度でも脆弱性診断できる定額制で最短1ヶ月から利用可能となります。
VAddyの年間ライセンスに、株式会社SHIFT SECURITYによる 手動脆弱性診断などに利用いただける診断チケットを加えたプランもご用意しています。
料金プラン:https://vaddy.net/ja/plan.html

ご不明な点がございましたら画面左下のチャットからお問い合わせください。
どんな簡単な内容でも結構です。皆様の不明点、疑問点を即座に解決いたします!

脆弱性診断についてのよくある質問

脆弱性とは?

セキュリティホールとも呼ばれ、Webアプリケーション(Webサイト)を設計・開発する過程で生まれるセキュリティ上の欠陥を指します。

脆弱性診断とは?

脆弱性診断とは、Webアプリケーション(Webサイト)に「脆弱性」がないかを診断するセキュリティテストのことです。攻撃者の視点に立って、「脆弱性」を狙った攻撃が成功する可能性がないかを検証し、問題点を洗い出します。

とくに注意したい、主要な脆弱性は?

下記の11項目は、実際に攻撃にあった脆弱性のうちの約90%を占めています*。

  • SQLインジェクション
  • クロスサイトスクリプティング(XSS)
  • リモートファイルインクルージョン
  • コマンドインジェクション
  • ディレクトリトラバーサル
  • ブラインドSQLインジェクション
  • 安全でないデシリアライゼーション
  • XML外部実体攻撃
  • HTTPヘッダインジェクション
  • SSRF脆弱性
  • 非公開ファイル検査

*2019年7月にクラウド型WAF「Scutum」で観測された攻撃リクエストを元に算出

セキュリティ事故の例は?

「情報漏えい」や「なりすまし」、「サイト改ざん」などが挙げられます。他にもさまざまな攻撃・被害パターンが報告され、メディアでも取り上げられています。万が一事故が起きてしまった場合、築き上げてきた企業としての”価値”や”信頼”をすべてを失うことになりかねません。

なぜ脆弱性診断を行う必要があるのか?

脆弱性とは開発側が想定していなかったユーザーの操作によって発現することが多いため、一般的なバグに比べると発見が困難です。したがって攻撃者視点で検査を行う脆弱性診断サービス/ツールを利用する必要があります。

脆弱性診断ツールは、手動診断とは何が違うの?

脆弱性診断ツールはその名の通り、作業者が自身のPCで脆弱性診断を行うことができるツールのことです。専門業者へ外注する手動診断よりも手軽に診断を行えることが最大のメリットといえます。一方、手動診断はセキュリティエンジニアが脆弱性診断を実施するため、ツールでは検出が難しい「仕様上の欠陥」なども見つけることができます。