企業・組織のシステムにセキュリティ上の脆弱性や問題点がないかを診断するテストを、脆弱性診断またはセキュリティ診断と言います。
この脆弱性診断の目的や種類などを含め、脆弱性診断とは何か説明します。
この記事の目次
脆弱性診断(セキュリティ診断)とは
脆弱性診断の基本事項について説明します。
そもそも脆弱性とは
脆弱性(読み方:ぜいじゃくせい)(英語:Vulnerability(バルネラビリティ))とは、OS・ネットワーク・ソフトウェア・アプリケーションなどに存在する、情報セキュリティ上の欠陥のことです。
脆弱性は、プログラムの不具合・欠陥や設計上のミスが原因となり発生します。
さらに、脆弱性には、すでに情報が公開された既知の脆弱性と、まだ発見されていない未知の脆弱性があります。
脆弱性を放置するリスク
仮に、脆弱性が残った状態でOS・ネットワーク・ソフトウェア・アプリケーションなどを利用し続けた場合、その企業や組織は、不正アクセスを受けたり、マルウェアに感染したりする恐れがあります。
そして、不正アクセスやマルウェア感染などのサイバー攻撃を受けると、結果として次のような損害につながる可能性があります。
機密情報の漏えい・流出
顧客の個人情報や社内機密情報など、重要な情報が盗み取られる。
社内システムのダウン
ひとたびサイバー攻撃を受けると、ネットワークやメール送受信の停止・Webページの閉鎖という対応は免れません。
Webサイトなどデータの改ざん
企業の公式サイトなどのWebサイトなどが書き換えられ、攻撃の踏み台に利用されることがあります。
マルウェア感染
例えば、PCやデバイスをロックしてしまうマルウェア「ランサムウェア」に感染した場合、身代金を要求されるなど、直接的な金銭的被害を受けます。
その他、サイバー攻撃により個人情報が漏洩した場合は、国から是正勧告を受けるというリスクもあります。万が一、是正勧告に従わなかった場合は、刑事上の罰則も用意されています。
企業や組織が、自社のシステムに存在する脆弱性を放置しておくという選択肢は、もはやないというのが現状です。
脆弱性診断の目的・必要性
このようなリスクを最小化するため、セキュリティ上の問題点である脆弱性の有無を診断して特定する脆弱性診断(セキュリティ診断)を、セキュリティ対策の一つとして行います。
脆弱性診断での問題点の特定は、一連のセキュリティ対策の最初に行うことが多く、その診断結果に基づいて具体的な改善やセキュリティ対策を実施します。
また、セキュリティ対策の運用開始後も、定期的に脆弱性診断を行います。
脆弱性診断の方法
脆弱性診断(セキュリティ診断)の方法には、大きく分けて次の2つがあります。
ツール診断
ツール診断は、自動検査ツールなどを用いて、機械的に脆弱性を検査する方法です。ツール診断は、セキュリティ診断の知識を持たないユーザを想定して設計されています。
メリット
- 広範囲に短時間で診断可能
- 低コスト
- セキュリティ専門家でなくても診断できる
デメリット
- 複雑なシステム構成の場合、誤診断が生じる可能性がある
- 複雑な欠陥や一定のパターンから外れた欠陥は検知困難
手動診断
手動診断(マニュアル診断)は、セキュリティ専門家が検査を行う診断方法です。例えばWebサイト上に存在する脆弱性を洗い出す場合、エンジニアが実際にWebサイトを操作してチェックします。
メリット
- 誤診断が少なく、精度が高い
- ツール診断では検知が難しい複雑な欠陥も診断できる
デメリット
- 診断結果が出るまでに時間がかかる
- 高コスト
脆弱性診断ではどこを診断する?
脆弱性診断(セキュリティ診断)では、検査・診断する範囲をサービス利用者が決定することができます。具体的にはどのようなリソースを診断するのでしょうか?
アプリケーション
アプリケーション診断で、Webサイトやアプリケーションに存在するセキュリティ上の問題点を検査します。
顧客の重要情報を扱うWebサイトやスマホアプリを運営する場合において、サービスの公開前に実施されることが多いテストです。
具体的には、SQLインジェクション・クロスサイトスクリプティング(XSS)・パラメータ改ざんなどに悪用可能な脆弱性が存在しないか確認します。
プラットフォーム
プラットフォーム診断で、OSやミドルウェア・ネットワーク機器に存在するセキュリティ上の問題点を検査します。
自組織ネットワークの内部と外部の両面から、問題点を診断します。
具体的には、アクセス制御設定の確認・各種機器の設定の確認・ネットワークスキャンを用いた脆弱性の検出・外部接続可能なポートのうち不必要なポートがオープンになっていないかの確認などを行います。
代表的な脆弱性の種類5選
一言で脆弱性と言っても、どのような種類があるのでしょうか。ソフトウェアにおける脆弱性は、「共通脆弱性タイプ一覧(CWE:Common Weakness Enumeration)」によってカテゴリ分けされています。アメリカの非営利団体MITREが中心となって作成し、IPA(独立行政法人情報処理推進機構)も採用している基準です。
CWEは細分化され、約700種類以上の脆弱性タイプがあります。その中から、代表的な脆弱性を5つ取り上げます。
- クロスサイトスクリプティング(CWE-79)
- SQLインジェクション(CWE-89)
- 不適切な入力確認(CWE-20)
- バッファオーバーフロー(CWE-119)
- クロスサイト・リクエスト・フォージェリ(CWE-352)
順番に見ていきましょう。
1. クロスサイトスクリプティング(CWE-79)
クロスサイトスクリプティングは、Webアプリケーションの入力フォームを悪用されてしまう脆弱性です。Web掲示板に悪意あるスクリプトを書き込み、ユーザーを不正なページへ誘導する攻撃に利用されます。IPAの「脆弱性対策情報データベース JVN iPedia に関する活動報告レポート(2021年第1四半期)」で、最も報告の多い脆弱性です。
2. SQLインジェクション(CWE-89)
SQLインジェクションとは、Webサイトにデータベースを操作する言語「SQL文」を入力し、Webサイトのデータベースから情報を盗む攻撃です。また、この攻撃を許してしまう脆弱性を意味します。SQL対策をしていないWebサイトの場合、サイト内検索や問い合わせなどの入力フォームが悪用されます。
3. 不適切な入力確認(CWE-20)
不適切な入力確認は、入力フォームに不正プログラムを入力し、実行されてしまう脆弱性です。この脆弱性を突かれると、プログラムの意図しない動作やリソースの過剰消費といった被害に遭います。スパムメールの送信などのサイバー攻撃に加担させられるケースもあります。
4. バッファオーバーフロー(CWE-119)
バッファオーバーフローとは、データの一時保管領域「バッファ」に許容量以上のデータを書き込まれてしまう脆弱性、または攻撃手法です。バッファオーバーラン、バッファエラーとも呼ばれます。バッファオーバーフローが起きると、システムの停止や誤作動といったトラブルに発展します。
5. クロスサイト・リクエスト・フォージェリ(CWE-352)
クロスサイト・リクエスト・フォージェリ(CSRF)とは、Webアプリケーションが本来拒否すべきリクエストを処理してしまう脆弱性です。CSRFを利用した攻撃は、以下の手順をご覧ください。
- 攻撃者が、ユーザーを不正サイトに誘導する
- ユーザーが不正サイトにアクセスすると、不正リクエストが攻撃対象のサーバに送信される
- サーバのWebアプリケーションがリクエストを処理してしまうと、ユーザーが意図しない操作が実行される(掲示板への書き込みやSNSの乗っ取りなど)
CSRF攻撃は、クラウドサービスやSNSなどにログイン中のユーザーが狙われやすい傾向があります。不正誘導されたユーザーには、直接的な被害は発生しません。ただし、不正リクエストの攻撃者として誤認される恐れがあります。
脆弱性を悪用した実際の事件・被害事例
続いて、脆弱性を悪用した実際の事件や被害事例を3つ紹介します。
- TwitterにおけるCSRFの脆弱性
- YouTubeに対するクロスサイトスクリプティング攻撃
- 日本テレビ約43万件の個人情報流出
どのような事件・事例なのか、具体的に説明します。
1. TwitterにおけるCSRFの脆弱性
2013年、Twitterにログインした状態で不正なWebサイトにアクセスすると、攻撃者にアカウントが乗っ取られる被害が発生しました。これは、CSRF(クロスサイト・リクエスト・フォージェリ)の脆弱性を悪用した攻撃です。アカウントを乗っ取られたユーザーは、意図しないツイートやログイン情報の変更といった被害に遭いました。脆弱性が発覚した後にTwitterはすぐに対応し、同日中に修正しています。
2. YouTubeに対するクロスサイトスクリプティング攻撃
2010年、YouTubeはクロスサイトスクリプティングの脆弱性を狙った攻撃を受けています。YouTubeのコメント欄に脆弱性があり、ユーザーの画面に不正なポップアップが表示される事態となりました。他にも、有害サイトに誘導されるといった被害も発生しています。YouTubeを運営するGoogleは、攻撃発覚から約2時間後に脆弱性を修正しました。
3. 日本テレビ約43万件の個人情報流出
2016年4月、日本テレビのWebサイトから約43万件もの個人情報が流出しました。原因は、「OSコマンド・インジェクション」による不正アクセスです。OSコマンド・インジェクションとは、Webサーバへ不正なOSコマンド(命令文)を送り、強制的に実行する攻撃です。
OSコマンド・インジェクションは、Webサイトの問い合わせフォームなどの入力エリアから実行されます。Webサイト側が攻撃を防ぐためには、WAF(Webアプリケーションファイアウォール)を使った入力処理の遮断などの対策が必要です。日本テレビは入力エリアの脆弱性対策が充分でなかったため、大規模な個人情報漏えいへと繋がりました。
よくある質問
脆弱性診断(セキュリティ診断)はどのくらいの頻度で行うべきですか?
脆弱性診断の推奨頻度は、診断項目により異なります。
例えば、Webサーバに保存されたデータの検査は、1週間に1回程度、ID・パスワードの検査やDDoS対策の体制確認は1年に1回程度とされています。
脆弱性診断の診断期間はどれくらい?
脆弱性診断サービスや診断項目、対象数によって前後しますが、約3週間が一般的です。見積もりから診断実施、報告まで比較的短期間で終了します。多くの場合、診断報告後も1ヶ月程度のサポートを受けられます。
脆弱性診断の価格・費用はどのくらいかかりますか?
無料から数百万円まで、脆弱性診断のサービスにより価格・費用は異なります。一般的には、手動診断(マニュアル診断)よりツール診断の方が安価です。
また、同一サービスでも、ベーシックからプレミアムまで、複数の料金体系を用意している場合もあります。
自社の規模や検査が必要な範囲などを精査した上で、導入するサービスを選択します。
手動診断ではどのような人材が診断するのですか?
ツールでは検出できない複雑な問題点も洗い出せる手動診断(マニュアル診断)では、セキュリティ専門家自身が実際にWebサイトなどを操作し、診断します。
セキュリティ専門家として企業を支援するのが、ハッキング技術をセキュリティの向上や世の中への貢献のために活用するハッカーである「ホワイトハッカー」です。
診断結果はどのように得られますか?
ツール診断でも手動診断でも、発見された問題点は報告書・レポートとしてまとめられた状態で確認できます。さらに、手動診断やアセスメント付きのサービスでは、レポートとともに、その後の対策に関して、セキュリティ専門家の知見を生かしたアドバイスを受けることができます。
ペネトレーションテストとの違いは?
脆弱性診断と類似した診断にペネトレーションテストがあります。システム全体の問題点を網羅的に確認する脆弱性診断に対し、ペネトレーションテストでは、現実的な攻撃シナリオを用いて攻撃に対する耐性を確認します。現状の自社のシステムがどれだけ攻撃を受けやすいのかを診断するテストです。
脆弱性診断はサーバを診断するの?
脆弱性診断の対象は、大きく分けて「サーバサイド」と「クライアントサイド」の2つがあります。「脆弱性診断」とだけ言う場合、サーバサイドの診断を意味する場合が一般的です。また、サーバサイドの診断箇所も細かく分類されています。たとえば、サーバで稼働しているWebアプリケーションや、サーバ・OSなどのプラットフォームなどです。脆弱性診断を依頼する際は、診断箇所の違いに気をつけましょう。
モバイルアプリ(スマホアプリ)の診断対象はどこまで?
スマートフォン向けのモバイルアプリの脆弱性診断は、アプリケーションおよびアプリケーションと連携するサーバAPIが対象です。脆弱性診断サービスによっては、個別メニューで提供される場合もあります。
個別メニューで依頼する場合は、どちらか一方だけでなく包括的な診断がおすすめです。「1つだけのほうが安いから」と片方だけを診断しても、もう一方の脆弱性が放置される危険性があります。
まとめ
セキュリティ上の脆弱性や問題点がないかを診断する、「脆弱性診断(セキュリティ診断)」について説明しました。
安価かつすばやく基本的な脆弱性を洗い出すツールから、診断後のセキュリティ対策に関するアドバイスまで受けられるサービスまで、脆弱性診断サービスの内容は様々です。複数のサービスを比較検討して、自社のニーズに合致したサービスを検討しましょう。