システムにどのようなセキュリティ上の脆弱性があるか、具体的な調査方法がわからないという方は多いのではないでしょうか。本記事では、調査ツールとしての脆弱性スキャナーにスポットを当てて解説していきます。
脆弱性スキャナーの概要を知る
脆弱性スキャナー(Vulnerability Scanner)とは、システムで使用している
- アプリケーション
- ネットワーク機器
- サーバー機器
などに潜んでいるセキュリティ的な弱点、すなわち脆弱性の有無を検査するツールです。脆弱性は、機密情報の不正取得やデータの改ざんなどのサイバー攻撃に利用される可能性があります。健康診断によって小さな異変を早期に発見したおかげで大事に至らずに済む場合があるように、システムの脆弱性を早期に発見することでサイバー攻撃による多大な被害を回避あるいは軽減できる場合があります。
また、脆弱性スキャナーの主な機能としては以下の点が挙げられます。
1.システム上の脆弱性の収集
脆弱性スキャナーはシステムに存在する脆弱性をまず探します。探し出す対象の脆弱性としては、OSあるいはミドルウェアのバージョンが古い、不適切な設定内容でシステムを運用している、最新のセキュリティパッチが適用されていないなどがあげられます。
2.収集した脆弱性の分析
検出された脆弱性は、その脆弱性の悪用のしやすさや悪用された場合の影響度などの観点で情報が整理されます。具体的には CWE(Common Weakness Enumeration:脆弱性のカテゴリー区分) やCVE(Common Vulnerabilities and Exposures:脆弱性を一意に特定するID) などと紐づけられ、 CVSS(Common Vulnerability Scoring System:脆弱性の深刻度を示す数値) によってその脆弱性の深刻度を定量的に把握できます。
3.検査結果レポート
前述したような分析結果がドキュメントとして出力されます。中には、検出された脆弱性に対する具体的な対策方法を提案してくれるものもあります。セキュリティ対策担当者は、脆弱性対応の優先度や方針の決定にその出力結果を活用できます。
以上、主要な部分だけに絞って簡潔にお伝えいたしました。続けて、脆弱性スキャナーを用途別に分類したうえでそれぞれの目的に焦点を当てたいと思います。
脆弱性スキャナーの用途
ひとくちに脆弱性スキャナーといっても検査する対象や内容にいくつかの分類があります。
1.Webアプリケーション層 vs インフラストラクチャー層
システムはいくつもの層が重なった状態として捉えられるのですが、誤解を恐れず端的に表現した場合に、上の層と下の層のどちらを検査対象とするかという分類になります。
前者は個々のWebアプリケーション(Webサイトを含みます)に対して脆弱性を検査するものです。SQLインジェクションやクロスサイトスクリプティングを始めとして、データベースとの通信あるいはWebアプリケーション自身において情報漏えいやデータ改ざんなどに繋がる脆弱性を検出します。
一方で後者は、Webアプリケーションが動作するための土台となるミドルウェアあるいはOS、またはファイアーウォールのようなネットワーク機器を対象とするものになります。こうした土台はいくつものWebアプリケーションによって利用されている場合が多いため、脆弱性が存在していると広範囲に渡って影響を与えるおそれがあります。
2.SAST vs DAST
こちらは検査技法による分類です。
SAST(Static Application Security Testing)は、何らかのデータを格納した「ファイル」を検査対象とします。検査対象の具体例を以下に挙げます。
- 自社でプログラミングしたソースコード
- 第三者から提供を受けたOSSあるいは有償のライブラリ
- 同じく第三者から提供を受けたコンテナイメージ
DAST(Dynamic Application Security Testing)は、稼働しているWebアプリケーションに対して、脆弱性を悪用する通信を実際に試みる方法です。SASTと比較した場合に検査ボリュームが飛躍的に増大する傾向があるため、優先順位を定めて検査対象を限定することが多くあります。
3. ローカルマシン vs リモートマシン
スキャナーツールをインストールしたサーバーマシン(あるいはPC)上での検査に対応しているものと、SSHなどを使ってリモートアクセスした先のサーバーマシン(あるいはPC)に対する検査に対応しているものとがあります。もちろん、両方に対応しているスキャナーツールも存在します。
検査の目的やその対象に合わせた脆弱性スキャナーをしっかりと選択しましょう。
代表的な無料脆弱性スキャナー4選
脆弱性スキャナーとして広く知られているツールの一部を、簡単にではありますがご紹介します。無料で利用可能なスキャナーツールをなるべくピックアップしてみましたので、まずはツールを触って検討するといった使い方も可能です。
OWASP ZAP
OWASP TOP 10 を始めとしたセキュリティ的な啓蒙活動を積極的に行う非営利団体であるOWASPが提供しています。Webアプリケーションに対するDASTに対応しています。
製品URL: https://github.com/zaproxy/zaproxy
Vuls
DASTに対応していて、実行中のコンテナに対しての検査が可能です。動作モードを切り替えることによって、ローカルマシンとリモートマシンのどちらも検査可能です。
製品URL: https://github.com/future-architect/vuls
Trivy
コンテナイメージに対するSASTを実施できます。また、TerraformやCloudFormation(AWS)などインフラストラクチャーの管理に利用されるオーケストレーションツールの定義ファイルも検査可能です。
製品URL: https://github.com/aquasecurity/trivy
OSV-Scanner
主要なOSS製品に関する脆弱性を管理するデータベース(OSV: Open Source Vulnerability)をGoogleが管理していて、この情報を利用できるようになります。SASTに対応しています。
製品URL: https://github.com/google/osv-scanner
無料版、有料版の両方で他にも非常に多くのスキャナーツールがあります。目的に沿った脆弱性スキャナーを活用して、セキュリティ対策を効率よく進めていきましょう。
まとめ
「脆弱性スキャナーの基本を知ろう 無料のスキャナーツールもご紹介」と題して、ご紹介してまいりました。脆弱性を悪用したサイバー攻撃は日々増加し続けています。人が受診する健康診断のように、脆弱性スキャナーを利用して定期的にシステムを検査することは、セキュリティ対策を講じる際に非常に有用な手段となりえます。脆弱性スキャナーの導入を一度検討してみてはいかがでしょうか。
さらに、お使いのシステムが
- コンテナを利用している or 利用していない
- Webアプリケーションが稼働している or 稼働していない
- オンプレミス or クラウド
など、どのような構成かによって有効な脆弱性スキャナーも変わります。用途に応じた脆弱性スキャナーを選択し、活用していきましょう。
ただし、脆弱性スキャナーで検知した脆弱性を対応したからといってセキュリティ対策が完璧にできているとは言い切れません。また、使用した脆弱性スキャナーによっては検知する粒度が粗く範囲も限定的なため誤検知が発生する場合もあります。セキュリティの専門家による手動の脆弱性診断サービスや、WAFを始めとしたセキュリティ対策ツールと組み合わせて使用するなどの運用方法も含めた検討が必要といえるでしょう。
当サイトではWebサイト、モバイル、IoTへの脆弱性のリスクを考えている方や、サイバー攻撃の脅威から守るWAFやセキュリティ診断に興味がある方へ、ダウンロード資料をご用意しております。ぜひ資料をダウンロードいただき、ご活用ください。