「うちの会社のシステム、ちゃんとセキュリティ対策できてるのかな…」って、なんとなく不安に思ったことはない?ニュースで「〇〇社のサイトが不正アクセスされた」って聞くたびに、「もしうちも同じことが起きたら?」ってドキッとするよね。でも、どこを直せばいいのかわからないままだと、対策のしようがない。そこで登場するのが脆弱性スキャンだよ。この記事を読めば、脆弱性スキャンがどんなものか、なぜ必要なのか、どうやって使うのかが全部わかるよ。
- 脆弱性スキャンとは、システムの 弱点(脆弱性)を自動で見つける ツール・作業のこと
- スキャンで問題を発見したあとは、修正する ことで初めてセキュリティ対策になる
- 新しい脆弱性は毎日発生するので、定期的に繰り返す ことが鉄則だよ
もうちょっと詳しく
脆弱性スキャンには大きく分けて2種類あるよ。1つ目はネットワークスキャンで、つまりシステムの外側からポートや通信経路に問題がないか調べること。2つ目はWebアプリケーションスキャンで、WebサイトやWebサービスの画面・フォームなどに攻撃が通じないか確認するものだよ。スキャンツールはあらかじめ「よく知られている攻撃パターン(つまり既知の脆弱性リスト)」を持っていて、それを順番に試していく仕組みなんだ。ただし、スキャンが得意なのは「すでに知られている弱点」を見つけることで、全く新しいタイプの攻撃には対応しきれない場合もある。だからスキャンと一緒に、人の目による確認(ペネトレーションテストといって、つまりプロが実際に侵入を試みるテスト)も組み合わせると、より安心なんだよ。
スキャンは「既知の弱点」を探すのが得意。新手の攻撃には人の目も必要!
⚠️ よくある勘違い
→ 一度スキャンしただけでは、その後に新たに発見された脆弱性には対応できない。ソフトウェアは毎日更新され、新しい穴が生まれ続けるから、一回やって終わりにはならないんだ。
→ 月1回や四半期に1回など、定期的にスキャンして、見つかった問題をその都度修正するサイクルを回すことが本当のセキュリティ対策だよ。
[toc]
脆弱性スキャンって何をするの?基本をおさらい
脆弱性スキャンを一言で言うと、「システムの中に攻撃者が入り込めそうな穴がないか、自動でチェックしてくれる作業」だよ。
ちょっと身近な例で考えてみよう。学校の防犯チェックを想像してほしい。警備員さんが毎日、校内の窓のカギが閉まっているか、非常口がちゃんと機能しているか、フェンスに穴が開いていないかをチェックして回るよね。脆弱性スキャンはまさにその「防犯チェック」をコンピューターシステムに対して自動でやってくれるツールなんだ。
脆弱性スキャンが調べること
スキャンツールは主に以下のようなことを調べるよ。
- 古いバージョンのソフトウェアが使われていないか(つまり、パッチ(修正プログラム)が当たっていない古いソフトは攻撃されやすい)
- 不必要なポートが開いていないか(ポートとは、つまりシステムへの出入り口のこと。使っていない出入り口が開きっぱなしだと危険)
- パスワードの設定が弱くないか(「password」や「1234」みたいな簡単すぎるパスワードは一発で突破される)
- Webサイトに入力フォームなどの脆弱点がないか(SQLインジェクションやXSSなど、つまり不正なコードを送りつける攻撃が通じないか)
スキャンの仕組み
スキャンツールは「既知の脆弱性データベース」を持っていて、それと照らし合わせながら調べていく。この「既知の脆弱性データベース」とは、つまり世界中で報告・発見されたセキュリティの穴をまとめたリストのこと。CVE(Common Vulnerabilities and Exposures)という国際的な識別番号で管理されていて、新しい脆弱性が発見されるたびにデータベースが更新されるんだ。スキャンツールはこのリストを使って「このシステム、CVE-XXXX-XXXXに対して弱くないかな?」と次々と試していく仕組みだよ。
脆弱性スキャンの種類を知っておこう
脆弱性スキャンには、目的や対象によっていくつかの種類があるよ。自分たちのシステムに何が必要かを知るために、それぞれの特徴を押さえておこう。
ネットワーク脆弱性スキャン
ネットワーク全体を対象に、外部や内部からシステムに侵入できる穴がないかを調べるスキャンだよ。具体的には、どのポートが開いているか、どのサービスが動いているか、古いプロトコル(つまり通信のルール・方式のこと)が使われていないかなどをチェックする。会社のビルで言えば、建物の外を一周して「裏口のカギが壊れていないか」「換気口から入れないか」を確認するイメージだね。
Webアプリケーション脆弱性スキャン
WebサイトやWebサービスに特化したスキャンだよ。ログインフォームや検索ボックスに不正な文字列を入力して「エラーが出たり、データベースの情報が見えたりしないか」を自動でテストする。ECサイトや会員制のWebサービスを運営しているなら、このスキャンは特に重要。OWASP(オワスプ)という団体が公開している「Web攻撃のトップ10リスト(つまりWebサービスが最もよく狙われる攻撃パターン一覧のこと)」に対応できているかも確認できるよ。
ホスト型スキャン(エージェント型スキャン)
サーバーやパソコンに専用のソフト(エージェント)をインストールして、システムの中から調べるスキャンだよ。外からでは見えないOS(オペレーティングシステム、つまりWindowsやLinuxのようなコンピューターを動かす基本ソフト)の設定や、インストールされているソフトウェアのバージョンまで細かく確認できるのが特徴だよ。
クラウド環境向けスキャン
最近はAWSやAzureのようなクラウドサービス(つまり、インターネット上でサーバーやシステムを借りて使うサービスのこと)を使う企業が増えているよ。クラウド向けスキャンは、クラウド特有の設定ミス(例えば、誰でもアクセスできる状態になっているストレージなど)を見つけてくれるんだ。
脆弱性スキャンはなぜビジネスに必要なの?
「うちは小さい会社だし、狙われないでしょ」と思っているなら、それは大きな誤解だよ。サイバー攻撃は大企業だけでなく、中小企業や個人のWebサービスも標的になる。実は攻撃者は「手当たり次第に自動でスキャン」して、弱いところを探すことが多いんだ。つまり、セキュリティが甘いサイトは規模に関わらず狙われやすいんだよ。
情報漏えいのリスクを減らせる
顧客の個人情報やクレジットカード情報が漏れてしまったら、会社への信頼は一気に落ちるし、法的な責任も問われることがある。定期的に脆弱性スキャンをして修正していれば、情報漏えいにつながる穴を事前につぶせるよ。
コンプライアンス(法令遵守)の観点からも重要
クレジットカード情報を扱う会社は「PCI DSS(ペイメントカード業界のセキュリティ基準、つまりカード情報を安全に管理するための国際ルールのこと)」に従う義務があるよ。この基準の中には「定期的な脆弱性スキャンの実施」が明記されているんだ。医療情報や個人情報を扱う場合も、法令でセキュリティ対策が求められることが多い。
対応コストを抑えられる
セキュリティインシデント(つまり、不正アクセスや情報漏えいなどのセキュリティ上の問題が実際に起きてしまうこと)が発生してから対応するのは、事前に予防するよりもずっとコストがかかる。対応のための人件費、システム復旧費用、信頼回復のための広報活動…これらを合わせると、大きな損害になることもある。定期スキャンのコストは、それに比べるとずっと安上がりだよ。
脆弱性スキャンの進め方・実際の流れ
「じゃあ実際にどうやって進めればいいの?」という疑問に答えるために、脆弱性スキャンの基本的な流れを説明するよ。
ステップ1:スキャン対象を決める
まず「どのシステムをスキャンするか」を決めるよ。Webサイト全体なのか、社内のネットワークなのか、特定のサーバーなのか。対象を絞ることで、スキャンが効率よくできる。また、スキャンによっては対象システムに負荷がかかることがあるので、業務時間外に実施するなどの配慮も必要だよ。
ステップ2:スキャンを実行する
スキャンツールを使って自動でチェックを走らせる。代表的なツールとしては、オープンソース(つまり無料で使えてソースコードが公開されているソフトのこと)の「OpenVAS」や、商用ツールの「Tenable Nessus」「Qualys」などがある。初心者でもUIが使いやすいツールが多く、ボタンを押せば自動でスキャンが進む仕組みになっているよ。
ステップ3:結果レポートを読む
スキャンが終わると、見つかった脆弱性の一覧がレポートとして出てくる。脆弱性には「重大(Critical)」「高(High)」「中(Medium)」「低(Low)」といったリスクレベルが付いていることが多い。まずは「重大」と「高」に該当するものから優先的に対応するのが鉄則だよ。
ステップ4:修正・パッチ適用
見つかった脆弱性を修正していく。多くの場合は「ソフトウェアを最新バージョンにアップデートする」「設定を変更する」「不要なサービスを止める」といった対処法が取られるよ。パッチ(つまり、脆弱性を修正するための修正プログラムのこと)が提供されている場合は、それを適用するのが一番確実だよ。
ステップ5:再スキャンで確認する
修正したあとは、再度スキャンをして「ちゃんと直っているか」を確認するよ。修正したつもりでも、設定が正しく反映されていなかったり、別の問題が残っていたりすることがあるから、必ずダブルチェックをしよう。
脆弱性スキャンを始めるときに知っておきたいこと
脆弱性スキャンは便利なツールだけど、使う前に知っておくべき注意点や、より効果的に活用するためのポイントがあるよ。
自分のシステムだけスキャンすること
これはとても大事なルールだよ。脆弱性スキャンは、自分が管理しているシステムに対してのみ実施すること。他人のWebサイトや会社のシステムに対して無断でスキャンをかけると、不正アクセス禁止法に違反する可能性がある。「ちょっと試しに」は絶対にダメだよ。外部のクラウドサービスやホスティングサービスを使っている場合も、その会社の利用規約を確認してから実施しよう。
スキャンツールには「誤検知」がある
スキャンツールが「脆弱性あり!」と報告したものが、実は問題ではないケースもある。これを誤検知(フォルスポジティブ)といって、つまり「実際には安全なのに危険と判断してしまうこと」だよ。逆に、本当は危険なのに見逃してしまう場合(つまり見落とし)もある。スキャン結果は参考情報として扱い、重要なシステムはセキュリティの専門家による手動確認も組み合わせると安心だよ。
スキャンだけで「完璧なセキュリティ」にはならない
脆弱性スキャンはあくまでも「今わかっている弱点を見つける」ためのツールだよ。まだ世界で発見されていない新しい攻撃手法(ゼロデイ脆弱性、つまり公表・修正される前に悪用される脆弱性のこと)には対応できない。だからスキャンに加えて、ファイアウォールの設定、社員へのセキュリティ教育、バックアップの取得など、複数の対策を組み合わせることが大切なんだよ。
定期的なスキャンをルーティンにしよう
企業によって異なるけれど、最低でも月1回、重要なシステムなら週1回のスキャンを習慣にするのがおすすめだよ。CI/CD(つまり、ソフトウェアを開発・リリースする自動化の仕組みのこと)にスキャンを組み込んで、新しいコードをリリースするたびに自動でスキャンが走る体制を整えられると、さらに安心だよ。セキュリティは「一度やって終わり」じゃなくて、「毎日少しずつ続ける習慣」が大事なんだ。
