「自社でセキュリティ診断を実施してみよう」と思ったとき、こんな疑問を持ったことはありませんか?
- 脆弱性診断ツールって、どこまで見てくれるのだろう?
- 脆弱性診断ツールがあるなら、専門家に頼む必要はないのでは?
- そもそも自社に診断ツールは必要なのか?
この記事では、診断員である私の視点から、脆弱性診断ツールによるスキャンのメリットとデメリットをわかりやすく解説していきます。皆様のご参考になれば幸いです。
そもそも脆弱性診断ツールにはどのようなものがある?
まず、脆弱性診断ツールとはどのようなものでしょうか。
システムやWebアプリケーションに潜むセキュリティ上の弱点(いわゆる脆弱性)を自動で検出してくれるものです。診断ツールには様々な種類があり、使用方法は、ダウンロードして使うオンプレ型もあれば、すぐに使えるクラウド型もあります。診断対象として、Webアプリケーションを対象にするもの、プラットフォームを対象にするものなど各種あります。
主な機能・メリット
スキャンによって大量の検査を実施することができ、人間が手作業で実施するよりも効率よく作業をすることができます。Webアプリケーションの場合で言うと、1つのリクエストに対して数百~数千もの検査を行うことができます。最近ではAIを活用した自動的な診断も増えてきています。また、診断結果のレポートも自動出力してくれる機能を備えているものが多いです。
診断ツールだけで診断を行うのとは別に、セキュリティの専門家による手動診断をサポートするための機能を備えているものもあります。たとえばリクエストの改ざんやセッションの書き換え、自作のリスト(ペイロード)による検査などができます。
使用方法 | オンプレ型 クラウド型 |
対象 | Webアプリケーション プラットフォーム |
機能 | 大量のスキャン検査を一度に実施できる 結果レポートを自動出力 AIによる自動診断 手動診断をサポートする機能 など |
診断ツールの例
いくつか具体的な診断ツールとその特長をあげます。
Burp Suite | スキャンのみならず、専門家による手動での検査に向いた診断ツール |
VEX | スキャン時のパラメータの引継ぎ処理が優秀 |
AeyeScan | AIによる診断対象の自動巡回機能があり、比較的簡単に診断が可能 |
Vaddy | 簡単に導入が可能であり、開発途中で定期的な診断を実施するのに向いている WAF開発のノウハウを活かしているため、より疑似的な攻撃ができる |
ZAP(旧 OWASP ZAP) | 無料で提供されており、手軽にスキャンを実施可能 |
Nessus | CVEの検出可能数が業界内でもトップクラス 誤検知が少ない カスタマイズも可能なため、幅広い層に使われている |
InsightVM / Nexpose | スキャンオプションがある 管理画面から脆弱性の統計を取る事も可能 |
Vuls | 無料で提供されている(オープンソースソフトウェア) 無料ではあるが、公開されている脆弱性情報なども検出可能 |
近年では、脆弱性診断ツールの精度が大きく向上しています。
特にAI技術の導入によって、これまで見つけにくかった脆弱性の検出精度が高まり、診断ツールがカバーできる範囲も広がってきました。また、比較的手頃な価格で利用できる診断ツールも増えており、自社で手軽にスキャンを実施できる環境が整いつつあります。
そのため、以前よりも「まずは自社でチェックしてみる」という選択がしやすくなってきていると感じます。
診断ツールでできること、できないこと
さて、ここで最初にあげた以下のような疑問をお持ちになる方もいらっしゃるのではないでしょうか。
- 診断ツールって、どこまで見てくれるのだろう?
- 診断ツールがあるなら、専門家に頼む必要はないのでは?
- そもそも自社に診断ツールは必要なのか?
そこで今回は診断員である私から診断ツールでできること、できないことを解説します。
診断ツールを利用するメリットにはどういう点がある?
ツール診断の大きなメリットのひとつは、安価で気軽に診断を実施できることです。特にクラウド型の診断ツールであれば、導入も簡単で、すぐに使い始めることができます。
さらに、診断ツールを使えば人手に頼らずに24時間自動で診断を回すことも可能です。そのため、一度に大規模なサイトや多くの検査パターンを効率よくチェックすることができます。
具体的な検出例(Webアプリケーションの例)
以下のような脆弱性を検出することができます。
- クロス・サイト・スクリプティング
-
ユーザーが入力した内容を正しく処理せずにそのまま表示してしまうことで、悪意あるスクリプトが実行されてしまう脆弱性です。
たとえば、掲示板や問い合わせフォームに入力されたスクリプトが他の利用者の画面で動いてしまうと、Cookie情報の盗み取りや不正な操作につながります。 - SQLインジェクション
-
データベースとやり取りする部分に、ユーザーの入力がそのまま組み込まれてしまう脆弱性です。悪意ある入力によって、データベースの中身を見られたり、改ざんされたりするおそれがあります。
- OSコマンドインジェクション
-
システム内部でOSのコマンドを実行する処理に、外部から不正な命令を混ぜ込まれる脆弱性です。攻撃者により、サーバ上のファイル操作や不正プログラムの実行が行われる危険があります。
- SSIインジェクション
-
Webサーバーが提供する「SSI(サーバーサイドインクルード)」機能を悪用して、不正な命令を埋め込まれる脆弱性です。これにより、任意のコマンド実行や情報漏えいが発生する可能性があります。
- クロスサイトリクエストフォージェリ
-
ログイン中のユーザーに、意図しないリクエストを送らせてしまう攻撃です。例えば、「ログイン中の銀行サイトで知らぬ間に送金される」といったケースがこれにあたります。
- ディレクトリファイルへのアクセス
-
URLやファイルパスの指定を悪用して、本来アクセスできないファイルを閲覧されてしまう脆弱性です。
「../
」といった記号を使い、サーバ内の重要情報(設定ファイルなど)を盗まれることがあります。 - セキュリティ対策の有無
-
Webサイトの通信を保護したり、不要な情報を外部に漏らさないようにするための設定が不十分なケースです。
たとえば、「クリックジャッキング防止」や「HTTPS通信の強制」などを行わないと、思わぬ攻撃リスクが残ってしまいます。
このように、よくあるインジェクションや設定について検出することができます。診断ツールでこれだけ調べられるなら、「もう専門家に頼まなくてもいいのでは?」と思う方もいるかもしれません。
- クロス・サイト・スクリプティングなどの脆弱性を安価に検出できるなら、ツール診断で十分では?
- AIで検査できたり、レポートまで出してくれたりするのであれば、もはや専門家に頼む必要はないのでは?
ですが、診断ツールには見落としがちな“死角”があります。
診断ツールにも死角がある(Webアプリケーションの例)
実際の現場では、ツールだけでは発見できない脆弱性が少なくありません。
それは、ツールが「人間の意図やシステムの利用文脈」を十分に理解できないからです。
- 診断ツールでの検出が漏れやすい例
たとえば、脆弱性を検証するためには、事前に特定のデータを登録しておく必要があるケースです。テスト用のユーザー情報や、実際に入力済みのデータを前提とする画面などは、ツール診断だけでは正しくアクセスできません。また、サイトの仕様や業務フローを把握していないと、攻撃が成立するかどうかを判断できない場合もあります。メール送信機能やファイルアップロード機能のように、実際の画面操作を通してのみ動作する処理も、ツール診断のみでは十分に検証できません。
- 検査に必要な設定が難しい例
さらに、診断ツールの設定自体が難しい場合もあります。たとえば、複雑な認証フローを備えたシステムや、ECサイトのように「カートに商品を入れてから購入画面に進む」といった一連の操作を必要とする場合、自動化のシナリオを正しく組まないと、診断が途中で止まってしまうことがあります。その結果、重要な部分の検査が抜け落ちてしまうことも少なくありません。
- 検出結果の精査
そして、もうひとつ大きな課題が「検出結果の精査」です。診断ツールは機械的にパターンマッチングを行うため、実際には問題がない箇所を「脆弱性」と誤検知することがあります。逆に、仕様上の制約や文脈によって本来危険な挙動を見逃すこともあります。こうした結果を正確に見極めるには、経験豊富な診断員の判断が欠かせません。自動診断のレポートは膨大な量になることもあり、そこから本当に対応すべき問題を選び出すには人の知見が必要です。
OWASP TOP10リスクとの対応状況
OWASPが定義している「重大なセキュリティリスクTOP10」をもとに、診断ツールでどこまで検出できるのかを整理してみました。私個人の見解も含まれますが、ツール診断だけでほぼ検出できる項目を「〇」、一部のみ検出できるものを「△」、そして検出が難しいものを「×」として評価しています。
OWASP TOP10 2021 | ツールでの検出範囲 |
A01:2021-アクセス制御の不備 | △ |
A02:2021-暗号化の失敗 | × |
A03:2021-インジェクション | 〇 |
A04:2021-安全が確認されない不安な設計 | △ |
A05:2021-セキュリティ設定ミス | △ ※セキュリティヘッダの設定が主 |
A06:2021-脆弱で古いコンポーネント | × ※プラットフォームでの検査 |
A07:2021-識別および認証の失敗 | × |
A08:2021-ソフトウェアおよびデータ整合性障害 | △ |
A09:2021-セキュリティログとモニタリングの失敗 | – ※Webアプリケーション診断の範囲外 |
A10:2021-サーバーサイド・リクエスト・フォージェリ | △ ※診断ツールでの検出は可能だが判断が困難 |
SQLインジェクションなどの“インジェクション系”は診断ツールでも比較的高い精度で検出可能な傾向があります。一方で、「アクセス制御の不備」や「セキュリティ設定のミス」など、システムの設計や実装の意図を理解する必要がある項目は、やはり人の手による確認が欠かせません。
プラットフォーム診断の場合はどうか
ここまでWebアプリケーションについて主に解説してきました。プラットフォーム側についても少し触れておきたいと思います。メリットについては基本的にWebアプリケーション同様とお考えください。
プラットフォームの場合、(SSH接続した上で)内部スキャンを実施することで、ソフトウェアのバージョン情報や各サーバの設定の確認が可能です。一方、外部スキャンの場合はバージョン情報は外からは見えず、確認できるのは証明書やレスポンスヘッダで判断した検出がほとんどですので注意が必要です。
細かい設定周りの確認や、不要なポート開放の判断は診断ツールでは難しいので、そのあたりのアドバイスについては専門家にご相談いただければと思います。
「ツール診断」と「専門家による診断」の使い分けはどのようにするか
では、実際にどのような場面で診断ツールを活用し、どのような場合に専門家へ依頼すべきなのでしょうか。
目的やサイトの性質によって、最適な使い分けがあります。
診断ツールによるスキャンの活用法
ツール診断は、継続的なセキュリティチェックを行いたい場合にとても有効です。
たとえば、数カ月に一度の定期的な確認や、静的ページの多いコーポレートサイトなど、比較的重要度の低いシステムの健康診断的なチェックに適しています。短時間で自動的にスキャンできるため、「早期発見・早期対応」を目的とした日常的な運用に向いています。
専門家による手動診断の必要性
一方で、個人情報や機密情報、クレジットカード情報を扱うようなサイトでは、専門家による手動診断が不可欠です。
特に初期リリース前には必ず実施することを強くおすすめします。また、大幅な機能追加や設計変更があった場合、あるいは動きが特殊なWebアプリケーションでは、ツール診断では再現できない複雑な挙動を人の目で確認する必要があります。
さらに、専門家は診断ツールのスキャン結果をもとに「どの脆弱性が本当に危険なのか」「どう対策すべきか」といった判断やアドバイスも行います。単に検出するだけでなく、リスクを正しく評価し、現実的な改善につなげられるのが専門家に診断を依頼するメリットです。
ツール診断と専門家診断を組み合わせるメリット
セキュリティ診断は、ツール診断と専門家による診断をうまく組み合わせて活用することが理想です。ツール診断は、日常的にサイトの健康状態をチェックする役割を果たします。軽微な変更後の確認や、早期のリスク発見には効果的です。
一方で、専門家による手動診断はシステム全体を深く掘り下げ、表面化していない潜在的なリスクや設計上の問題まで洗い出します。また、発見した脆弱性に対して、実際にどのように対処すべきかまで踏み込んだアドバイスを得ることができます。
この2つをバランスよく使い分けることで、コストを抑えつつも堅牢なセキュリティ体制を維持することが可能です。「ツール診断で定期的に確認し、重要なタイミングで専門家が深掘りする」――そんなサイクルが、現実的で効果的なセキュリティ対策の形といえるでしょう。
脆弱性診断についての
\ 無料相談受付中! /

株式会社神戸デジタル・ラボ
デジタルビジネス本部 Securityチーム
2018年に神戸デジタル・ラボに入社。主にWebアプリケーションやプラットフォームの脆弱性診断を担当。他社開発システムの脆弱性診断をはじめ、自社の開発案件の脆弱性診断に関するルールやマニュアルの整備、全体の進行管理を担当。これまでに社内外合わせて200件以上の脆弱性診断に携わる。