
ITシステムにおける脆弱性は、企業にとって大きなリスク要因となります。特にサイバー攻撃による情報漏洩は、甚大な被害を引き起こしかねないため、入念な対策が不可欠です。そのためのセキュリティリスク対策として、注目されているのが脆弱性診断です。ここでは、脆弱性診断の概要や必要性、診断内容などを解説します。
目次
脆弱性診断とは何か?
脆弱性診断とは、「ITシステム全体のセキュリティリスクをチェックし、必要な対策を講じること」です。具体的には、サーバ・ネットワーク・OSやミドルウェア、アプリケーションなどの仕様からセキュリティの抜け道に目途をたて、潜在的な脆弱性を洗い出します。また、ソースコードチェックや、影響調査、対策支援までも含むのが一般的です。セキュリティ診断やセキュリティ検査と呼ばれることもあります。
さらに、診断の一環としてペネトレーションテスト(疑似攻撃、侵入テスト)が用いられることもあり、脆弱性診断とセットで提供されることも珍しくありません。
なぜ脆弱性診断が必要なのか?
ITシステムの脆弱性を放置していると、外部からの攻撃(サイバー攻撃)による情報システムへの侵入・改ざんや情報漏洩といったリスクが増加します。これらは、サービス停止や損害賠償の支払い、社会的信用力の低下などを招き、企業の屋台骨を揺るがしかねません。
脆弱性診断の目的
脆弱性診断は、次のような目的をもって行われます。
- 顧客に安全なサービスを提供するため
事前に脆弱性対策を行うことで、顧客が安心してWebサイトを利用できるような環境を整えます。サービスに対する安心感は信頼につながり、信頼は業績につながるため、自社の成長に欠かせないものです。
- 情報セキュリティ対策コストの低減のため
システム開発時に、セキュリティ対策を講じておくと、後々のセキュリティ対策コストが低減します。特に上流工程にセキュアコーディングを組み込むことで、改修作業などが発生しにくくなるため、結果的にセキュリティ対策コストの低減につながるのです。
- 損害、賠償発生リスクを最小限に留めるため
脆弱性診断と適切な対策を講じておけば、実際にセキュリティインシデントが発生してしまった場合でも、「穴(被害)」の拡大を最小限に留められます。損害賠償や社会的信用力のリスクも抑えられるため、「保険」のような役割を負っているとも言えます。
昨今のセキュリティインシデントは、個別に見れば小さなセキュリティの穴を突いたものが多いといえます。しかし、発生源は小さくとも、一旦インシデントが発生すると被害は甚大になる可能性が高いのです。さらに、ひとつの脆弱性から別のリスクを誘発することもあり、小さな「穴」でも塞いでおくことが重要です。脆弱性診断は、この「穴」を事前に発見し、必要な対策を講じるプロセスなのです。
脆弱性診断の内容と出来ること
では、実際の脆弱性診断について解説します。脆弱性診断は、システムのレイヤーごとに行うのが一般的です。
Webアプリケーション脆弱性診断
Webアプリケーション診断は、攻撃者の視点から「穴」の存在を想定し、疑似攻撃などを織り交ぜることでWebアプリケーションの安全性を調査します。Webアプリケーション診断によって、SQLインジェクションやXSS(クロスサイトスクリプティング)、セッションハイジャックといったサイバー攻撃のリスクを最小化できるでしょう。具体的には、次のような項目をチェックします。
- ・各種インジェクション系攻撃に対する脆弱性の有無
- ・不適切な認証に利用される脆弱性の有無
- ・不適切なアクセス制御の有無
- ・機密情報の暴露の有無
- ・セキュリティ設定ミスの有無
- ・クロスサイトスクリプティングに対する脆弱性の有無
- ・既知の脆弱性を持つミドルウェアの検出
- ・不十分なログ記録
簡易的な脆弱性診断の場合はツールによる一律自動診断のみ行われますが、セキュリティエンジニアによる手動診断はツールだけでは見逃しがちな誤動作・誤検知などを手動でカバーし、より精度が高く深い診断ができることが特徴です。
ネットワーク/プラットフォーム脆弱性診断
ネットワーク脆弱性診断でも、ツールと手動を併用してネットワーク機器やサーバの脆弱性をチェックします。一般的には、次のような項目をチェックします。
- ・ポートスキャン
- ・安全でないプロトコルの使用有無
- ・既知のセキュリティホールチェック
- ・既知のセキュリティホールを使用するサービスの有無
- ・アカウント情報の取得難易度、およびパスワード強度
- ・アクセスコントロールの設定は適切か
- ・外部の第三者が管理者権限を奪えるようになっていないか
- ・DoS攻撃やDDoS攻撃への耐久性
また、場合によってはリモート診断やオンサイト診断を組み合わせ、実際の攻撃に近い環境を想定したチェックも行われます。
- ・リモート診断
脆弱性診断を提供する事業者が、インターネット経由でクライアント企業の機器を診断します。ここでは、公開されているセグメント上のサーバ、ファイアウォールやルータ等のアクセス制限(ルール設定)の適切性などを確認します。
- ・オンサイト診断
セキュリティ専門家がクライアント企業のオフィスやデータセンタを訪問し、内部ネットワークから診断を試みます。
モバイルデバイス、アプリケーション脆弱性診断
手動によるアプリケーションチェックやアプリケーションのソースコード解析、生成されるファイルログの調査、通信内容のチェックなどが含まれます。
- ・アプリの通信によって外部サーバへ重要情報が不正に送信されていないか
- ・個人情報やパスワードなどの重要情報が暗号化された状態で送信されているか
- ・SSL/TLS通信で利用している証明書が適切に検証されているか
- ・端末内の重要情報が平文で保存されていないか
- ・端末内のパーミッション設定
- ・ログ出力の内容
- ・ソースコード内に重要情報がハードコーディングされていないか
- ・ロジック改ざんが可能かどうか
- ・その他リバースエンジニアリングによる脆弱性解析
ペネトレーションテスト(疑似攻撃)
ペネトレーションテストは、明確な意図を持った攻撃者によってその目的が達成されてしまうかを検証するために、実際のクラッカーを模倣した疑似攻撃を試みるセキュリティテストです。前述したような一般的な脆弱性診断と異なる点としては、Webアプリケーションやシステム単体に対して網羅的に脆弱性を洗い出すためのものではなく、実際に脆弱性を悪用することで被害が起こり得るか確認するという点です。例えば下記のようなゴール(被害)を想定し、実際にそれが可能かどうかを検証します。
- ・外部公開サーバを踏み台とし、内部システムの情報を奪取
- ・マルウェアに感染したクライアント端末からActive Directoryの管理者権限の奪取
- ・特定サービスの本番データベースからの情報奪取
- ・内部犯行による機密文書の外部への持ち出し
※参考:GitHub – ueno1000/about_PenetrationTest: ペネトレーションテストについて
これらのほか、「IoT機器への脆弱性診断」「無線LAN診断」などを提供する事業者もあります。脆弱性はどこに潜んでいるかわからないため、できるだけ横断的かつ網羅的に行うことが大切です。
まとめ
本稿では、脆弱性診断の概要と具体的な診断方法について解説してきました。脆弱性診断は、現代の企業が直面するセキュリティインシデント発生のリスクを低減させるために必須とも言えるサービスです。脆弱性診断によって、自社システムの現状とあるべき姿を認識し、必要な対策を講じていきましょう。また、セキュリティ対策費用がかさむようであれば、十分なセキュリティ対策が施されたクラウドサーバの活用で、コスト削減も検討してみてください。