脆弱性診断とは

脆弱性診断とは

脆弱性診断とは、文字通りウェブサイトなどに脆弱性が存在しないかどうかを調べることです。情報処理推進機構(IPA)が公開している「ウェブ健康診断仕様」などを参考にしたり、自動診断ツールを使用したりして自社で検査することも可能ですが、セキュリティ専門企業の脆弱性診断サービスを受けることで、自社では発見が難しい脆弱性を発見できる可能性が高くなります。そのため、一度は専門企業に診断を依頼してみることをお勧めします。

そもそもウェブサイトの脆弱性とはどんなものなのか

ウェブサイトの開発者にとって、バグは身近なものです。ウェブサイトにバグがあると様々な悪いことが起きます。たとえば、間違った結果を表示する、処理がいつまでたっても終わらない、画面が乱れる、異常に遅い、などなどです。そして、バグの中には以下のように悪用ができてしまうものもあり、そのようなバグのことを脆弱性と呼びます。

・ 個人情報などの秘密情報を勝手に閲覧する
・ Webサイトの内容を書き換える
・ サイトを閲覧した利用者のPC をウイルスに感染させる
・ 別の利用者に成りすまし、秘密情報の閲覧、投稿、買い物、送金などを行う
・ Webサイトを利用不能にする
・ オンラインゲームなどで無敵になることができる、アイテムを好きなだけとれる
・ 自分の個人情報を確認したら、他人の個人情報が見えてしまう

脆弱性があるとなぜダメなのか

ウェブサイトに脆弱性があるとなぜダメなのか、考えてみます。ウェブサイトの利用者への直接的なダメージ以外にも、以下のような理由があります。

理由その1:経済的損失

脆弱性があってはいけない理由の1つに、脆弱性を悪用された結果Webサイト運営者が受ける経済的な損失があります。個人情報の流出でニュースになった例を見れば、経済的な損失が数億円~数十億円に上ることがあることが分かると思います。

理由その2:個人情報保護法等による法的な要求

ウェブサイトの安全対策を要求している法律として、「個人情報の保護に関する法律」(個人情報保護法)があります。そして、個人情報取扱事業者として講じるべき安全管理措置が、各省庁が分野毎に規定しているガイドラインで規定されています。つまり、ウェブサイトで個人情報を取り扱う事業者は、法的にウェブサイトの脆弱性対策を求められているのです。

理由その3:攻撃の加害者となる可能性がある

脆弱性を悪用されると、ウェブサイトの改ざんによりサイトを閲覧した利用者のPCにマルウェアを感染させたり、不正メールの発信元にされたり等、意図せず攻撃の加害者となってしまう可能性があります。

では、どうずればよいのか

もちろん、ウェブサイトの企画の段階でセキュリティ要件を決めておくことや、セキュア開発が、脆弱性を生まないために重要であることは間違いありません。しかし、脆弱性とは悪用できるバグです。バグがないかどうかテストを実施して確認することと同様、脆弱性がないかどうかもテストを実施して確認することが必要です。そして、脆弱性がないかどうかをテストするのが脆弱性診断です。

決められた仕様どおりに実装されているはずだから、と言ってテストを実施しないで公開するウェブサイトはありません。同様に、いくら事前にセキュリティ要件を決めていても、ベテランエンジニアがセキュア開発を行っていても、脆弱性診断を実施しないままウェブサイトを公開することは、本来は良くないことなのです。ところが、まだまだ脆弱性診断を実施しないまま公開されるウェブサイトが多くある、というのが現実のようです。

脆弱性診断が必要なのはわかったけど、具体的にはどういうものなのか

脆弱性診断サービスは、提供している企業によりさまざまなプランがありますが、主に以下のように分類されます。自社のウェブサイトの場合どの診断が適切なのかは、脆弱性診断サービス提供企業とよく相談することが大切です。

診断方法による分類

・ ツール診断
ツールにより診断の場合、大量のページを効率的に診断できるというメリットがありますが、誤検知が多いことや、サービスの特性やウェブサイトの構成に応じて脆弱性かどうかを判断したり、危険度を判断したりすることができないというデメリットがあります。

・ 手診断
エンジニアが手でウェブサイトを動かして診断するため、大規模サイトの場合は膨大な時間と費用が必要となりますが、サービスの特性やウェブサイトの構成に応じて脆弱性かどうかを判断したり、危険度を判断したりするにはやはりエンジニアの手が必要となります。

診断対象範囲による分類

・ フル検査
ウェブサイトの全てのページに対して、既知の脆弱性を網羅する診断です。本来であれば、フル検査が望ましいですが、予算やスケジュールの都合で実施できない場合が多く、その場合は診断サービスを提供する企業に予算やスケジュールの範囲でもっとも効果的な診断対象を提案してもらう、というのが現実的です。

・ 抜き取り検査
ウェブサイトのページの中から、昨日や担当開発者に偏りがないようにできるだけまんべんなく検査対象を抜き出して診断する方法です。抜き取りのため、網羅性は劣りますが、脆弱性が見つかった場合には、同様の機能や同じ開発者が担当した箇所にも脆弱性がある可能性が高いため、さらに詳しく調べることが望ましいです。「ウェブ健康診断」は、抜き取り検査にあたります。

脆弱性診断に大切なこと

脆弱性診断サービスの品質を決める要素はさまざまですが、特に大切なことは、適切に検査対象を絞り込むことです。すべてのウェブサイト、ページをくまなく診断することが難しい場合、検査対象を絞り込むことになります。実際、費用や時間の面からほとんどのケースで検査対象を絞り込んでいます。

脆弱性には、その影響範囲が脆弱性のある個所に限定されるものと、どこか一か所にあるだけでウェブサイト全体に影響を及ぼすものがあります。前者の場合、該当箇所のみ診断すればよいのですが、後者の場合、ウェブサイト全体を診断しなければならないように思えます。

例えば、SQLインジェクション脆弱性がどこか一か所に存在すると、個人情報を扱うページには脆弱性がなかったとしても、データベースを操作され個人情報を盗まれる可能性があります。そのため、すべてのページを診断しなくてはならないかというと、実際は脆弱性ごとに生じやすい箇所があるため、ある程度診断対象を絞り込むことが可能です。

ところが、実際にはそう簡単にはいきません。一見重要ではないエラー表示ページ等にも深刻な脆弱性が潜んでいることがあり、「経験上、脆弱性が見つかりやすいところ」をいかに診断対象に加えられるか、ということが、診断対象を絞り込むうえでは大切になるのです。

HASHコンサルティングの脆弱性診断

サービス案内ページへ