目次
昨今、Webサービスやアプリケーションを使った事業や提供することが増えている中で、脆弱性診断などのセキュリティ対策は事業の継続とサービス利用者の安心を守るために欠かせない対策の1つとなっています。
本記事では、セキュリティに興味を持つ開発エンジニアや企業のセキュリティ・IT管理担当者に向けて、脆弱性診断と何なのか、目的と必要性、導入するメリットデメリットなど詳しく解説していきます。
1. 脆弱性診断(セキュリティ診断)とは?
脆弱性診断(セキュリティ診断)は、システムやネットワークやOS・ミドルウェア、Webアプリケーション上に脆弱性がないかをチェックすることです。(英語では「Vulnerability Assessment」)脆弱性診断は、OSの最新版アップデートをする、ウィルス対策をするといった基本的なセキュリティ対策の次に必要な対策で、攻撃者による悪意ある攻撃や個人情報の漏えい事故となど、多大な被害やリスクを未然に防ぎます。
脆弱性診断は、専門家など人による診断(以降、「手動診断」と書く)とツールを使った診断(以降、「自動診断」と書く)の大きく2つの方法があります。さらに、「プラットフォーム診断」・「Webアプリケーション診断」・「モバイルアプリケーション診断」などそれぞれの対象に特化した診断サービスや診断ツールが提供されています。
企業サイトや利用しているサーバーへの不正アクセスによる被害件数は年々増加傾向のため、脆弱性診断の市場は今後も成長していくと予測されています。
1-1. 脆弱性診断の目的と位置づけ
そもそも、脆弱性診断の目的となんなのか説明します。
脆弱性診断の目的は、脆弱性を悪用した情報漏えいやシステム不能とさせてしまうといった侵害につながる可能性がある既知の脆弱性の特定や深刻な度合いをランクづけをして報告する ことです。また、その診断結果からリスクが高い・影響が大きいと診断された脆弱性を修正・対処をすることでシステムのセキュリティを向上させ、悪用されることを未然に防ぐことができます。
なお、政府情報システム脆弱性診断の位置づけについては以下のように書いています。
脆弱性診断は『発生の想定される脆弱性を確認する』を目的として実施することが望ましいとされています。つまり、仕様や要件としてカバーすべき脆弱性など、本来対処すべきであった脆弱性の漏れを検出する目的で使われています。
(参照:「政府情報システムにおける脆弱性診断導入ガイドライン 」より)
このように、脆弱性診断は、現在稼働中または開発進行中のシステムやネットワーク、OS・ミドルウェア、Webアプリケーション上にある本来対処すべき既知の脆弱性や悪用の可能性がある情報をチェックすることを目的としています。
1-2. 脆弱性診断が必要な理由
脆弱性診断が必要な理由は多岐にわたりますが、主な理由は以下になります。
1. 脆弱性リスクの可視化
「脆弱性」を利用して、情報漏えいやシステムダウンや停止をするといったビジネスに影響を与える可能性リスクの可視化・管理をすることで、講じるべき対策方法が理解できます。
2. セキュリティ対策へのコスト削減
開発の上流工程時からセキュリティチェックを組み込むことで、脆弱性を作らない開発ができ、結果リリース直前のチェック時に起こる手戻り作業を減らします。
3. セキュリティインシデントの発生を最小限に留める
企業への不正アクセスは「日常茶飯事」と化し、個人情報の漏えいやWebサイト改ざん、システムダウン、アクセス障害など被害が後を絶ちません。被害を受けてしまうと顧客対応や調査・復旧作業の費用が発生するなど多額なコストが発生することや、企業全体のイメージ低下も招いてしまいます。脆弱性診断はそういったセキュリティインシデントの発生リスクを抑えることができます。
このように脆弱性診断は、事業やサービスを提供する企業にとって悪意ある攻撃から守るために必要な「投資」です。
以上が脆弱性診断が必要な理由の紹介でした。
1-3. 脆弱性診断の方法
脆弱性診断には「手動診断」と「自動診断」の大きく2つの診断方法があります。
(1) 手動診断(サービス)
手動診断とは、専門家やエンジニア・テスターといった第三者(人)による診断です。
直接アプリケーションやシステムを調査・検証をするため、誤検知を減らし、複雑な脆弱性も診断できます。特に高度な技術や独自の要件が必要な場合には専門家やテスターによる手動診断が的しています。
(2) 自動診断(ツール)
自動診断とは、Webアプリケーションやシステム上の脆弱性や問題を検出する専用のツールです。
簡単に言うと「脆弱性診断の自動化」です。プログラムされたアルゴリズムに基づいて自動で脆弱性を検知・攻撃リスクを報告してくれます。なお、ツールは、人による診断と比べて大量のコードやネットワークトラフィックを素早く短期間でスキャンできるだけでなく同じ設定・条件で同じテストを何度も再実行ができるところから、大規模なアプリケーションやネットワーク診断にも適しています。
このほかにも自動診断と手動診断について詳しく解説した記事を公開予定です。
1-4. 脆弱性診断の種類
脆弱性を診断する対象ごとに技術や脆弱性が異なるため、その分野に特化した脆弱性診断サービスやツールが存在しています。今回は、「Web・モバイルアプリケーション診断」「プラットフォーム診断」「クラウド診断」の3つを紹介します。
(1) Web・モバイルアプリケーション診断
Web・モバイルアプリケーション診断とは、その名の通り、企業が開発したWebやモバイルアプリケーション内の脆弱性を診断する方法のことです。よくあるWeb・モバイルアプリケーション例として、「ECサイト」「ゲーム」「アプリ」「SNS」といったものなどがあります。
- Web・モバイルアプリケーションの例
Webアプリケーション代表例 | モバイルアプリケーション代表例 |
---|---|
●インターネットバンキング ●ECサイト ●予約サイト ●Webメールクライアント など | ●金融機関のモバイルバンキングアプリ ●スマフォゲーム・アプリ ●SNS ●医療情報管理アプリ など |
上記のように、Web・モバイルアプリケーションといっても実装されている機能や、使用するプログラミング言語はもちろん、検知される脆弱性も異なります。一般的な診断では、Web アプリケーション上にある脆弱性で有名な「SQL インジェクション」や「クロスサイトスクリプティング」といったものをシステムの利用環境に合わせた診断方法で調査をし、システム停止や情報漏えい・データ改ざん・不正アクセス・認証回避などにつながる脆弱性を洗い出します。
(2) プラットフォーム診断
プラットフォーム診断とは、サーバやOS、ネットワーク機器といった特定のプラットフォームを対象とする脆弱性診断です。サーバやネットワーク機器の状態を確認しOSやミドルウェア、ソフトウェアに潜んでいる脆弱性を検知します。
- プラットフォーム診断対象例
サーバー・OS代表例 | ネットワークデバイス代表例 | デスクトップシステム代表例 |
---|---|---|
●Linuxサーバー ●Windows サーバー ●UNIXベースのサーバー など | ●ルーター ●スイッチ ●FW(ファイアウォール) など | ●WindowsデスクトップPC ●macOSデスクトップ ●Linuxデスクトップ など |
(3) クラウド診断
クラウド診断は、AWS (Amazon Web Services)やGCP(Google Cloud Platform)といったクラウド環境内での脆弱性を特定し、その環境全体のセキュリティス状況を確認します。クラウドプロバイダーが提供するサービスやインフラストラクチャに対するセキュリティチェックが主要な要素となります。
- クラウドプロバイダーサービスの場合
Amazon Web Services (AWS) | Microsoft Azure | Google Cloud Platform (GCP) |
---|---|---|
●EC2 インスタンス ●S3 バケット ●RDS データベース など | ●Virtual Machines ●Azure Storage ●Azure SQL Database など | ●Compute Engine ●Cloud Storage ●Cloud SQL など |
2: 脆弱性診断を導入するメリット・デメリット
脆弱性診断を導入するメリットはまとめると以下の3つです。
メリット | デメリット |
---|---|
1. 潜在的なセキュリティリスクの最小化 脆弱性を早期発見・改善することで、攻撃者が悪用する前に対策が講じられ、情報資産の漏えいといったセキュリティリスクの発生を低減できます。 2. リソースの最適利用 システムやアプリケーション上のセキュリティ問題を特定することで、セキュリティ対応に発生するリソースや投資を最適に利用することができます。 3. コンプライアンスの確保 セキュリティ強化と悪意のある攻撃から守るためだけでなく、セキュリティ標準や法令や規制を遵守することで法的リスクの低減やお客様や取引先との信頼向上につながります。 | 1. 専門的な知識が問われるケースも 脆弱性診断を外部に依頼またはツールを使って実施する際にもセキュリティ知見は必要で、初心者にとっては、学習曲線が急である場合があります。 2. 誤検知・誤報告 脆弱性診断ツールやサービスで診断の誤検知が発生する可能性は0ではありません。誤検知が多いと、運用チームが本当に重要な問題に対応するのが難しくなります。 3.コストと時間 脆弱性診断(特に手動診断の場合)はリソースと時間を要します。特に大規模なシステムやアプリケーションになると、診断コストや時間が増えるといったこともあります。 |
3: 費用について
前述で書いた「コスト(費用面)」についても解説します。 具体的な金額相場は会社によって異なるため紹介が難しいですが、手動診断と自動診断では手動診断の方が高めな傾向です。
その説明をする前に、契約内容の違いについて触れておくと、手動診断の場合、1回きりの「スポットでの契約」や年●回といった回数制限がついたケースが多いです。反対に自動診断は年間契約が多いですが、自分たちのタイミングで診断できることや回数制限もないことが多いです。よって年間の診断回数は多い場合であれば、自動診断の方がコストを抑えることができます。
どちらにしても、企業・組織の規模やニーズによってサービス・ツールどちらを選ぶのかは異なります。 セキュリティを重要視するのか、スピード感や予算を優先するのかまたはプロジェクトの規模などを考慮し、最適なツールやサービスを選択することが重要です。
手動診断と自動診断の特徴や費用の比較については別記事で紹介します。
3-1. 無料版と有料版の違い
脆弱性診断には有料版だけでなく、お試しで診断できるツールやサービスがあります。
ですが、無料ツールやお試しサービスは、有料版と比較すると機能やできることに制限がされていることが大半です。
無料版 | 有料版 | |
---|---|---|
費用 | 安い(無料) 予算が限られている組織や個人向け | 高い(ライセンス形態) 大規模な組織や専門家向けの製品は高価に |
検知機能 | 制限あり | 高度な脆弱性の検知が可能 |
サポート | コミュニティやドキュメントのみ 自力で解決しないといけないケースがある | 専門サポートがいる |
最新脅威への対応 | 有料版より開発が遅め | 最新脅威や技術の対応ができる |
上記のように、高度な脆弱性の検出や診断方法が制限されていたり、サポートが不十分で専門的な知識がない人には難易度は高いです。その他、最新脅威にも対応できるよう定期的なアップデート開発がありますが、有料ツールに比べて無料版などは遅れることがあります。
4. 脆弱性診断を行うタイミングは?
診断を行う適切なタイミングは、診断対象にもよりますが少なくとも1年に1回や、バージョンアップを行うタイミングでの実施を推奨します。なお、アプリやシステム開発会社などは製品リリース前の最終確認時や、最近だと開発途中に診断を組み込むといったケースも多いです。後者の場合、脆弱性を早期に発見・修正ができるため、開発プロセスの効率化にもつながります。
潜在的なリスクを最小限に抑えて、セキュリティレベルを高く維持するためには開発段階はもちろんのこと、リリース後も定期的なチェックは必要です。特にアプリケーションやシステム変更がある度に、セキュリティチェックを実施するすることが最適です。
5. 開発初期からリリース後まで。全工程にセキュリティチェックを
前述でも説明したように、近年、Web・モバイルアプリケーション開発では、高速化する開発プロセスにツールによるセキュリティチェックを組み込む開発スタイル(DevSecOps)が増えています。Syhuntは、GitLabといった開発ツールとシームレスに連携することで開発初期からセキュリティチェックを組み込めることが特徴です。
Syhunt利用シーン | 説明 |
---|---|
開発前 | アプリケーションやシステム開発前のコードや設計段階の脆弱性を検出・修正する(静的解析[ソースコード診断]) |
開発中期 | 開発進行中のアプリケーションやシステム内の脆弱性を検出し開発者に即座にフィードバックする(動的解析・モバイルアプリケーション診断) |
リリース直前 | アプリケーションやシステムを本番環境へデプロイする前のセキュリティ検証。潜在的なリスクを低減 |
定期チェック | 既に運用中のシステムやアプリケーションを定期的にスキャンし、新たな脆弱性や変更によるセキュリティリスクを検出する (静的解析・動的解析・モバイルアプリケーション診断) |
納品・検収チェック | 納品前や検収チェックをするとき |
新たな脅威が出た時 | 新たな脅威やセキュリティパッチ情報が公開されたとき |
その他追加変更時 | ・動的な処理に追加・変更が起きた場合 ・認証、暗号化、ファイルアップロード等、実装に注意を要する処理に追加や変更がある場合 ・開発を担当するベンダーに変更がある場合 など |
Syhuntは、脆弱性診断だけでなく、インシデント発生時に必要となる「フォレンジック調査」やダークウェブ上に情報が漏えいしていないかをチェックする「ブリーチ機能」といった機能もご利用いただけます。一般的なツールやサービスでは「脆弱性診断」「フォレンジック調査」「ダークウェブ診断」など各分野ごとで提供されていることが多いですが、SyhuntはWeb・モバイルアプリケーション上のセキュリティ欠陥を包括的に診断することができます。
また、Syhuntには、操作が簡単で直感的な「GUI版」が用意されており、情報システム部門やプログラムに詳しくないエンドユーザーにも利用しやすい設計となっています。 例えば、納品前や検収チェックの際にSyhuntを活用することで、非エンジニア部門でもセキュリティ品質の確保に寄与できます。
6. まとめ
本記事では「脆弱性診断」について解説してきました。
サービス(手動診断)では、専門家による診断のため、誤検知も少なく複雑な脆弱性診断ができ、独自の要件が必要な企業や組織に適しています。また近年、サイバーセキュリティ界では「いたちごっこ」と言われているように、サイバー攻撃を防ごうと対策をしても、攻撃者はすぐ新たな攻撃を仕掛けてきます。こういった中で、タイムリーにチェックできるツール(自動診断)は、セキュリティチェックを待つことなく実施できるといったメリットがありおすすめです。
システムやサイト内に脆弱性があると、自社への攻撃だけでなく利用ユーザーや取引先情報などの漏えい・悪用といった情報セキュリティ事故の発生リスクが高くなることはもちろん、こうした事故が起こると企業や顧客からの信頼が一気に失墜してしまう恐れがあります。企業の信頼失墜を防ぐためにも攻撃者への隙(脆弱性)を見せないことがポイントです。脆弱性診断は、ユーザーや顧客が安心して利用できるシステム・サイト運営をするために、ウイルス対策の実施やOSやアプリケーションのバージョンアップなど基本的な対策の1つとして実施すべき対策です。
診断タイプや費用・契約形態もさまざまありますので、自社が運用しやすい脆弱性診断ツール・サービスの導入を進めてみてはいかがでしょうか。