脆弱性診断とは? 概要・必要性・診断内容を解説
ITシステムにおける脆弱性は、企業にとって大きなリスク要因となります。特にサイバー攻撃による情報漏洩は、甚大な被害を引き起こしかねないため、入念な対策が不可欠です。そのためのセキュリティリスク対策として、注目されているのが脆弱性診断です。ここでは、脆弱性診断の概要や必要性、診断内容、実施する際のポイントなどを解説します。
脆弱性診断とは何か?
脆弱性診断とは、「ITシステム全体のセキュリティリスクをチェックし、必要な対策を講じること」です。具体的には、サーバー・ネットワーク・OSやミドルウェア、アプリケーションなどの仕様からセキュリティの抜け道に目途をたて、潜在的な脆弱性を洗い出します。サービスによっては、ソースコードチェックや、影響調査、対策支援までも含む場合もあります。セキュリティ診断やセキュリティ検査と呼ばれることもあります。
さらに、診断の一環としてペネトレーションテスト(疑似攻撃、侵入テスト)が用いられることもあり、脆弱性診断とセットで提供されることも珍しくありません。
なぜ脆弱性診断が必要なのか?
ITシステムの脆弱性を放置していると、外部からの攻撃(サイバー攻撃)による情報システムへの侵入・改ざんや情報漏洩といったリスクが増加します。これらは、サービス停止や損害賠償の支払い、社会的信用力の低下などを招き、企業の屋台骨を揺るがしかねません。
脆弱性診断の目的
脆弱性診断は、次のような目的をもって行われます。
- ・顧客に安全なサービスを提供するため
事前に脆弱性対策を行うことで、顧客が安心してWebサイト/システムを利用できるような環境を整えます。サービスに対する安心感は信頼につながり、信頼は業績につながるため、自社の成長に欠かせないものです。
- ・情報セキュリティ対策コストの低減のため
システム開発時に、セキュリティ対策を講じておくと、後々のセキュリティ対策コストが低減します。特に上流工程にセキュアコーディングを組み込むことで、改修作業などが発生しにくくなるため、結果的にセキュリティ対策コストの低減につながるのです。
- ・損害、賠償発生リスクを最小限に留めるため
脆弱性診断と適切な対策を講じておけば、実際にセキュリティインシデントが発生してしまった場合でも、「穴(被害)」の拡大を最小限に留められます。損害賠償や社会的信用力のリスクも抑えられるため、「保険」のような役割を負っているとも言えます。
昨今のセキュリティインシデントは、個別に見れば小さなセキュリティの穴を突いたものが多いといえます。しかし、発生源は小さくとも、一旦インシデントが発生すると被害は甚大になる可能性が高いのです。さらに、ひとつの脆弱性から別のリスクを誘発することもあり、小さな「穴」でも塞いでおくことが重要です。脆弱性診断は、この「穴」を事前に発見し、必要な対策を講じるプロセスなのです。
脆弱性診断の内容と出来ること
では、実際の脆弱性診断について解説します。脆弱性診断は、システムのレイヤーごとに行うのが一般的です。
Webアプリケーション脆弱性診断
Webアプリケーション診断は、攻撃者の視点から「穴」の存在を想定し、疑似攻撃などを織り交ぜることでWebアプリケーションの安全性を調査します。Webアプリケーション診断によって、SQLインジェクションやXSS(クロスサイトスクリプティング)、セッションハイジャックといったサイバー攻撃のリスクを最小化できるでしょう。具体的には、次のような項目をチェックします。
- ・各種インジェクション系攻撃に対する脆弱性の有無
- ・不適切な認証に利用される脆弱性の有無
- ・不適切なアクセス制御の有無
- ・機密情報の暴露の有無
- ・セキュリティ設定ミスの有無
- ・クロスサイトスクリプティングに対する脆弱性の有無
- ・既知の脆弱性を持つミドルウェアの検出
- ・不十分なログ記録
簡易的な脆弱性診断の場合はツールによる一律自動診断のみ行われますが、セキュリティエンジニアによる手動診断はツールだけでは見逃しがちな誤動作・誤検知などを手動でカバーし、より精度が高く深い診断ができることが特徴です。
ネットワーク/プラットフォーム脆弱性診断
ネットワーク/プラットフォーム脆弱性診断でも、ツールと手動を併用してネットワーク機器やサーバーの脆弱性をチェックします。一般的には、次のような項目をチェックします。
- ・ポートスキャン
- ・安全でないプロトコルの使用有無
- ・既知のセキュリティホールチェック
- ・既知のセキュリティホールを使用するサービスの有無
- ・アカウント情報の取得難易度、およびパスワード強度
- ・アクセスコントロールの設定は適切か
- ・外部の第三者が管理者権限を奪えるようになっていないか
- ・DoS攻撃やDDoS攻撃への耐久性
また、場合によってはリモート診断やオンサイト診断を組み合わせ、実際の攻撃に近い環境を想定したチェックも行われます。
- ・リモート診断
脆弱性診断を提供する事業者が、インターネット経由でクライアント企業の機器を診断します。ここでは、公開されているセグメント上のサーバー、ファイアウォールやルータ等のアクセス制限(ルール設定)の適切性などを確認します。
- ・オンサイト診断
セキュリティ専門家がクライアント企業のオフィスやデータセンターを訪問し、内部ネットワークから診断を試みます。
モバイルデバイス、アプリケーション脆弱性診断
手動によるアプリケーションチェックやアプリケーションのソースコード解析、生成されるファイルログの調査、通信内容のチェックなどが含まれます。
- ・アプリの通信によって外部サーバーへ重要情報が不正に送信されていないか
- ・個人情報やパスワードなどの重要情報が暗号化された状態で送信されているか
- ・SSL/TLS通信で利用している証明書が適切に検証されているか
- ・端末内の重要情報が平文で保存されていないか
- ・端末内のパーミッション設定
- ・ログ出力の内容
- ・ソースコード内に重要情報がハードコーディングされていないか
- ・ロジック改ざんが可能かどうか
- ・その他リバースエンジニアリングによる脆弱性解析
ペネトレーションテスト(疑似攻撃)
ペネトレーションテストは、明確な意図を持った攻撃者によってその目的が達成されてしまうかを検証するために、実際のクラッカーを模倣した疑似攻撃を試みるセキュリティテストです。前述したような一般的な脆弱性診断と異なる点としては、Webアプリケーションやシステム単体に対して網羅的に脆弱性を洗い出すためのものではなく、実際に脆弱性を悪用することで被害が起こり得るか確認するという点です。例えば下記のようなゴール(被害)を想定し、実際にそれが可能かどうかを検証します。
- ・外部公開サーバーを踏み台とし、内部システムの情報を奪取
- ・マルウェアに感染したクライアント端末からActive Directoryの管理者権限の奪取
- ・特定サービスの本番データベースからの情報奪取
- ・内部犯行による機密文書の外部への持ち出し
※参考:GitHub – ueno1000/about_PenetrationTest: ペネトレーションテストについて
これらのほか、「IoT機器への脆弱性診断」「無線LAN診断」などを提供する事業者もあります。脆弱性はどこに潜んでいるかわからないため、できるだけ横断的かつ網羅的に行うことが大切です。
効果的な脆弱性診断の実施方法
脆弱性診断の実施はセキュリティリスクの軽減に欠かせませんが、それなりのコストがかかることも事実です。限られた予算の中で、できる限り効率よく、最大限効果的に脆弱性診断を実施するためにはどのようにすれば良いのでしょうか。ここでは脆弱性診断実施時のポイントについて解説します。
Webサイト/システムの性質に合わせる
一口にWebサイト/システムと言っても、複雑な認証機能を持たないWebサイトから、ECサイト、SaaSのサービス提供基盤など、規模も複雑さも千差万別です。脆弱性診断もまた、ツールによる一律診断やセキュリティエンジニアによる手動診断、ソーシャルエンジニアリング含む実践的なペネトレーションテストまで、診断の深度や網羅性もさまざまなものがあります。
診断対象となるサイト/システムの性質や、万が一の場合の影響や責任範囲を鑑みた上で、どの脆弱性診断が適しているか検討しましょう。
求めるレベルに合わせる
診断対象のWebサイト/システムの性質とも関連しますが、脆弱性診断によって何をチェックしたいか、何をゴールとするのかも検討しましょう。
プラットフォームやアプリケーションの脆弱性の有無の確認だけで良いのか、その脆弱性によってどのような危険性があるのか知りたいのか、あるシステムにおける機密情報の窃取など特定の目的を達成されないか知りたいのか、システムに限らず組織全体におけるセキュリティリスクを評価したいのか、など自社の求めるレベルに合わせた診断を行うことが大切です。
実施タイミング・実施頻度について
実施のタイミングについては、以下のタイミングで実施することが望ましいでしょう。
・開発中のチェックポイントごと
リリース前だけでなく開発中のチェックポイントごとに脆弱性診断を行うと、重度の脆弱性があった場合にも早期に発見することができるので、リリース直前での手戻りやスケジュールの遅延を防ぐことができます。規模が大きく、開発期間が長くなるようなシステムほど効果的です。
・リリース前の最終診断
脆弱性診断を行うタイミングとして最も一般的です。リリースにあたり脆弱性が残存していないか網羅的に確認し、安全な状態で公開できるようにします。
・運用開始後の定期診断
どんなに安全な状態でリリースしたとしても、脆弱性というものは時間の経過とともに新しく生じてしまうものです。そのため、定期的に脆弱性診断を実施することが重要だと言われています。
JPCERT/CCが発表した「Webサイトへのサイバー攻撃に備えて」でも定期的な脆弱性のチェックが推奨されており、推奨されている頻度としては以下の通りです。
・Webアプリケーションのセキュリティ診断
対象:Webアプリケーション
頻度:年に1回程度、および機能追加などの変更が行われたとき・プラットフォーム診断
対象:WebサーバーなどのWebシステム、Webサイト運用管理用PC
頻度:数週間〜月に1回程度
※利用製品のバージョンが最新であることの確認
診断対象の性質・求めるレベル・実施するタイミングを掛け合わせ、その時々に適切な脆弱性診断を行うことで効果を最大限発揮することができるでしょう。
・開発中のチェックポイントごとの脆弱性診断は、重大な脆弱性を早期に発見することが目的なので、OWASP TOP10レベルの基本的な脆弱性のみツールで簡易的に診断する。
・ECサイトのリリース前に、ツールと手動を組み合わせた網羅的な脆弱性診断を実施する。
・定期的なプラットフォーム診断は、簡易的なツール診断を実施する。
・複雑な認証系のないWebサイトのマイナーアップデート時に、Webアプリケーションのツール診断を実施する。
といった形で、適切な診断を選ぶことでコストを抑えながらも、効果的にセキュリティリスクを点検していくことができます。
たとえば、当社で提供している脆弱性診断サービスも、実施タイミング・対象サイト/システムの性質・求めるレベルなどに応じて以下のように使い分けることが可能です。
脆弱性診断依頼時のポイント・注意点
最後に、具体的に脆弱性診断を依頼する際に気にしたいポイントと注意点について解説します。
スケジュール
実施する脆弱性診断の種類(ツール/手動/ペネトレーションテスト)によってもスケジュール感は大きく変わります。
一般的にツール診断であれば手動診断に比べ短期間で実施が可能ですが、ツールの提供を受けて自分で実施をするものなのか、セキュリティエンジニアが実施するのかによって変わりますので、その部分も確認しましょう。
ツールの提供を受け、自分で実施する形のものであれば、早ければ1週間ほどで可能な場合もあります。セキュリティエンジニアが実施するツール診断/手動診断は実施タイミングの調整が必要なため、遅くとも実施したい時期の1〜2ヶ月程度前からスケジュールを立てておく必要があるでしょう。
実際の実施までは、大体以下のような流れとなります。
① 診断対象の情報提供・ヒアリング
② 見積もり
③ 事前調査
④ 診断
⑤ 分析・報告書作成
⑥ 報告書の提出・報告会
診断自体は1日〜数日で行われることが多いですが、事前のヒアリング・見積もり・事前調査や、その後の報告書提出・報告会も合わせると全体で1ヶ月ほど見ておくと良いでしょう。ペネトレーションテストの場合は、診断自体に1ヶ月以上かける場合もあるので、より長期間を想定する必要があります。
また、年度末などは一般的に脆弱性診断を行う企業が多く、セキュリティエンジニアの予定が埋まってしまっており、なかなかスケジュールを押さえられないということもあるため、繁忙期に実施することがわかっている場合は前もって調整しておくと安心です。
費用
脆弱性診断の費用も種類によってさまざまです。ツールによる一律診断であればサイトのページ数(画面数)にかかわらずFQDN単位の固定料金という場合もありますし、手動診断の場合は1画面につきいくら、というような課金体系の場合もあります。こちらも診断対象のWebサイト/システムの規模や性質に合わせて、どのような診断が良さそうか検討すべきでしょう。
画面単位で課金となるタイプは、診断対象のページを絞ることも可能な場合もあるので、全体にはツール診断で網羅的に実施し、より精緻に診断してもらいたい部分のみ手動で診断してもらうといった形で組み合わせるのも手でしょう。
しかし、コストを抑えることを優先しすぎて脆弱性を見つけられなくては本末転倒のため、ヒアリング・見積もりの時点でセキュリティエンジニアに必ず相談するようにしましょう。
再診断について
脆弱性診断は、実施したらそれで終わりではなく、診断して判明した脆弱性を修正することが本来の目的です。そのため、脆弱性を修正した後にきちんと直っているか確認することが非常に重要だと言えます。脆弱性診断のサービスによっては修正後の診断も費用に含まれている場合もありますし、再診断用のディスカウント価格を設けている場合もあります。
再診断をすることを念頭に置いた上で、どのような扱いになっているか確認しておくと良いでしょう。
まとめ
本稿では、脆弱性診断の概要と具体的な診断方法について解説してきました。脆弱性診断は、現代の企業が直面するセキュリティインシデント発生のリスクを低減させるために必須とも言えるサービスです。脆弱性診断によって、自社システムの現状とあるべき姿を認識し、必要な対策を講じていきましょう。
当社でも手軽なツール診断からセキュリティエンジニアによる手動診断、ペネトレーションテストまで、要望に応じて幅広い提案が可能です。
また、脆弱性診断では珍しい月額型のツール診断サービス「シンプル・システムスキャナー」も提供しています。Webアプリケーションとプラットフォームの両方について、OWASP TOP10レベルのクリティカルな脆弱性を簡単に診断できます。プラットフォーム診断については月1回の診断が望ましいと言われているため、こうした手軽に実施できるセキュリティ診断ツールを導入することで、セキュリティリスクのスキャンを習慣化してみてはいかがでしょうか。