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

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

脆弱性診断イメージ

そもそもWebアプリケーションの脆弱性って何?

脆弱性とは

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

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

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

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

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

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

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

下記の表は、企業や金融機関の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サイト)を設計・開発する過程で生まれるセキュリティ上の欠陥を指します。

脆弱性診断とは?

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

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

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

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

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

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

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

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

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

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

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