脆弱性とは? 脆弱性の原因とリスク、対策について解説
Webサイトやシステム、OSやソフトウェアなど、さまざまな場所に存在する「脆弱性」とは何を意味しているのでしょうか。脆弱性とは製品内部に作り込まれてしまったセキュリティ上の欠陥のことを指します。脆弱性を放置していると、サイバー攻撃による不正侵入などを招き、情報漏洩やデータ破壊といった企業にとって大きな損害につながりかねないため、早急な発見と対処が必要となります。本記事では、脆弱性とは何か、脆弱性のリスク、脆弱性対策について解説します。
脆弱性とは
脆弱性という言葉をよく耳にしますが、脆弱性とはどのようなものを指すのでしょうか。ここでは、コンピューターシステムに関する脆弱性の定義について解説します。
脆弱性とは何か
脆弱性とは、パソコンやサーバーのOS・ソフトウェア、ネットワーク機器などに発生する仕様上の問題やプログラムの不具合などによるセキュリティ上の欠陥を指し、セキュリティホールとも呼ばれます。脆弱性を放置して利用を続けていると、マルウェアに感染したり、サイバー攻撃を受けて不正侵入されたりする危険性があるため、早急かつ適切な対処が必要となります。
バグ・不具合との違い
脆弱性は、製品の動作に関する一般的なバグや不具合とは分けて情報が整理され、脆弱性情報として製品ベンダーからユーザーに向けて発信・提供されます。
脆弱性はバグや不具合によって生じる場合も多いですが、たとえバグがなく、意図した(要求仕様どおりの)動作をしていたとしても、何らかの攻撃に対する弱点となるならば、それは脆弱性とみなされるのです。
脆弱性が発生する原因
脆弱性はどのような原因によって発生するのでしょうか。脆弱性が発生する主な原因は下記の通りです。
- 安全でないコーディング
- 設計上の欠陥
- 基盤となるOSやミドルウェアなどの欠陥
- 新たな攻撃手法の発見
安全でないコーディング
脆弱性が発生する原因として、コーディングや設定などの人為的なミスが挙げられます。開発過程でのバグの混入や、セキュリティ上必要な設定の漏れといったミスだけでなく、既知の攻撃に対する対策を施したコーディングを行わないと、脆弱性が発生します。SQLインジェクションやOSコマンド・インジェクション、クロスサイト・スクリプティングなど、既知の攻撃手法の標的となるような脆弱性を作り込まないよう、セキュア・コーディングが必要です。
設計上の欠陥
脆弱性は、上流工程における設計ミスによって引き起こされる可能性もあります。設計通りに実装されたシステムでも、攻撃者の視点で攻撃可能なポイントが存在する場合は脆弱性として扱われます。下流工程では修正が困難なため、設計時点から入念な脆弱性対策の検討が重要です。
基盤となるOSやミドルウェアなどの欠陥
Webサイトやシステムが動作する土台となるOSやミドルウェアに発見された欠陥(脆弱性)も、そのシステムにとって脆弱性の1つとなります。特に広く使われているOSやミドルウェアに脆弱性が発見された場合、悪意のある攻撃者の標的になりやすいため、新たな脆弱性が発見された場合はOSやミドルウェアの修正パッケージを早急に適用する必要があります。
新たな攻撃手法の発見
今までになかったような新しい攻撃手法が生み出されることによって、設計当時は問題なかったはずのものが脆弱性として機能する場合もあります。脆弱性情報を収集し、もし新たな脆弱性が発見された場合は、適宜修正パッケージの適用やシステムの改修などを行いましょう。
脆弱性によるリスク
脆弱性には具体的にどのようなリスクがあるのでしょうか。脆弱性によるセキュリティリスクには以下のようなものがあります。
- マルウェア感染
- 不正侵入被害
- 情報漏洩・盗難
- システム停止・業務継続困難
マルウェア感染
マルウェア(malware)とは、コンピューターウイルスやトロイの木馬、スパイウェアなど、ソフトウェアに不利益をもたらす悪意のあるプログラムの総称です。クライアントPCやシステムの脆弱性から侵入されると、社内ネットワークに広がり情報漏洩やデータの改竄・破壊といった被害に遭ったり、サイバー攻撃の踏み台として悪用されたりする恐れがあります。
不正侵入被害
OSやソフトウェアの脆弱性を突いて、システムに対して不正に侵入(ログイン)される可能性があります。マルウェア感染と同様に、侵入後は情報漏洩、データ改竄・破壊、踏み台として悪用されるなどの恐れがあります。
情報漏洩・盗難
マルウェア感染、不正侵入だけではなく、SQLインジェクションやクロスサイト・スクリプティングなどの脆弱性に対する攻撃によって情報漏洩やデータの盗難の被害に遭う可能性があります。顧客の個人情報やクレジットカード情報といった重大な情報漏洩が発生すると、損害賠償といった金銭的な損失だけでなくブランドの失墜など企業にとって大きな損失になりかねません。
システム停止・業務継続困難
システムへの不正侵入を許してしまうと、データの改竄や踏み台としてだけではなく、
管理者権限を乗っ取り、システムを停止される恐れもあります。悪意のある攻撃者によってシステムが停止されなくとも、不正侵入の調査などの間Webサイトやサービスを停止せざるを得ない場合があります。その間の機会損失だけでなく、場合によっては業務継続が困難となり、予想外の大きな被害へと発展する恐れもあります。
脆弱性の分類
発見された脆弱性は、オープンな共通の指標に沿って種類や深刻度などを分類・評価されます。脆弱性の分類に使われる仕組みとしては、CVE(共通脆弱性識別子)・CWE(共通脆弱性タイプ)・CVSS(共通脆弱性評価システム)といったものがあります。ここでは脆弱性を理解するために重要な各指標の概要と見方について解説します。
CVE(共通脆弱性識別子)
CVE(Common Vulnerabilities and Exposures)は、一つ一つの脆弱性を一意に識別するために付与される識別子です。米国政府の支援を受けた非営利団体のMITRE社によって採番され、多くの脆弱性検査ツールや脆弱性対策情報提供サービスによって利用されています。これにより、対策情報同士の相互参照や関連づけが行いやすくなります。
CVE識別番号は、MITRE社がCVE識別番号管理サイト(https://cve.mitre.org/index.html)で公開しています。CVEの番号とともに以下の情報が掲載されています。
- 脆弱性の概要
- 参考URL
関連する脆弱性情報の一覧で、CVE情報源サイトや製品開発ベンダーのサイトなど - ステータス
進捗状態を表し、「候補(Candidate)」と「登録(Entry)」の2つがあります。候補は脆弱性に該当するか検討中であり、登録は正式に脆弱性として判断されたことを示しています。
日本では同様の取り組みとして、JPCERT/CCと独立行政法人情報処理推進機構(IPA)が共同で運営しているJVN(Japan Vulnerability Notes)が、JVN独自の識別番号を採番し脆弱性情報を公開しています。JVNはCVE互換認定を受けており、MITRE社の「CVE情報源サイト」として公示されています。
参考:
IPA「共通脆弱性識別子CVE概説」: https://www.ipa.go.jp/security/vuln/CVE.html
JVN: https://jvn.jp/index.html
CWE(共通脆弱性タイプ)
CWE(Common Weakness Enumeration)は、ソフトウェアにおける脆弱性の種類を識別するために設けられた共通の基準のことです。こちらも米国政府の支援を受けたMITRE社を中心に、ベンダーや研究機関の協力を受け仕様策定が行われ、2008年にCWEバージョン1.0が公開されました。CWEはソフトウェアエンジニアやセキュリティエンジニアが議論する際の共通の言語となり、脆弱性診断ツールの評価尺度や、脆弱性の原因調査・再発防止のための共通基準として用いられています。
脆弱性タイプは階層構造になっており、上位層に近いほど抽象的な脆弱性を表し、下位層に行くほど具体的な脆弱性を表します。
例えば有名な脆弱性タイプとして、以下のようなものがあります。
- OSコマンド・インジェクション(CWE-78)
- クロスサイト・スクリプティング(CWE-79)
- SQLインジェクション(CWE-89)
OSコマンド・インジェクション(CWE-78)
OSコマンド・インジェクションとは、Webサーバーなど外部に公開されたサーバーのOSコマンドを外部から不正に実行されてしまう脆弱性です。サーバーのファイル改竄や、不正プログラムの実行、他のシステムへの攻撃の踏み台として悪用される可能性があります。
クロスサイト・スクリプティング(CWE-79)
クロスサイト・スクリプティングとは、Webサイトの個人情報登録画面や掲示板など、利用者から情報を入力するWebアプリケーションに任意のスクリプトを埋め込まれてしまう脆弱性です。この脆弱性が発覚した場合、悪意のある第三者がスクリプト等の「罠」を埋め込み、個人情報を盗んだり、誤った情報を表示させる可能性があります。
SQLインジェクション(CWE-89)
SQLインジェクションとは、Webサイトの入力フォームなどから、SQL文(データベースへの命令文)を不正に実行されてしまう脆弱性です。データベースへの不正アクセスにより、データの閲覧、改竄、消去などが行われる可能性があります。
参考:
IPA「共通脆弱性タイプ一覧CWE概説」: https://www.ipa.go.jp/security/vuln/CWE.html
CVSS(共通脆弱性評価システム)
CVSS(Common Vulnerability Scoring System)は、脆弱性の深刻度を評価するための指標です。米国家インフラストラクチャ諮問委員会の主導によって、ベンダーに依存しない共通の評価基準・評価方法の普及を目指して作成されたものです。CVSSによって脆弱性の深刻度を同一の基準下で定量的に比較できるようになり、脆弱性の重大性に関して共通の言語で議論できるようになりました。
現在は2019年6月に公開されたCVSS バージョン3.1が最新となっています。
CVSSによる基本評価基準は、情報システムに求められるセキュリティの3要素である「機密性」「完全性」「可用性」に対する影響と、その脆弱性を利用した攻撃の難易度(攻撃可能な経路・攻撃条件の複雑さ・攻撃に必要な権限など)を合わせて深刻度を評価します。それぞれの評価項目に設定されたスコアを集計・計算し、総合的な脆弱性の深刻度をスコアとして算出します。スコアと深刻度のレベル分けは以下のとおりです。
深刻度 | スコア |
緊急 | 9.0〜10.0 |
重要 | 7.0〜8.9 |
警告 | 4.0〜6.9 |
注意 | 0.1〜3.9 |
なし | 0 |
参考:
IPA「共通脆弱性評価システムCVSS概説」: https://www.ipa.go.jp/security/vuln/CVSSv3.html
脆弱性に関する情報には、以上の用語や分類、評価基準がよく用いられるため、それぞれについて理解した上で情報収集や対策を検討するようにしましょう。
脆弱性への対策
企業にとって大きな脅威となりうる脆弱性に対して、どのような対策が有効なのでしょうか。ここでは脆弱性への対策と、発見された場合の対処方法について解説します。
組織で使用している機器・ソフトウェアなどの管理
脆弱性対策としてまず重要なことは、自社で使用している機器・OS・ソフトウェア・サービスなどについてしっかりと管理を行うことです。システムの構成・ソフトウェアの種類・バージョン情報・アップデート履歴などをあらかじめ把握しておかないと、新たに発見された脆弱性が自社に影響があるものなのか迅速に確認することができません。
情報収集
そして日頃より脆弱性に関する最新情報を収集しておくことが重要です。脆弱性の情報は、脆弱性対策情報データベース(JVN ipedia)https://jvndb.jvn.jp/や、IT系ニュースサイト、製品ベンダーより公開されています。迅速に対応するためには、前述の通り事前に自社が利用している製品・OS・ソフトウェアを洗い出しておき、それらに新たな脆弱性が発生していないか定期的にチェックすることが望ましいでしょう。
定期的な脆弱性診断
特に公開しているWebサイト・Webサービスにおいては、定期的な脆弱性診断(セキュリティ診断)を行うべきでしょう。JPCERT/CCの公開している「Webサイトへのサイバー攻撃に備えて」(https://www.jpcert.or.jp/newsflash/2017080101.html)においても、定期的な脆弱性診断を推奨しています。
・Webアプリケーションのセキュリティ診断
対象:Webアプリケーション
頻度:年に1回程度、および機能追加などの変更が行われたとき
・利用製品 (プラグインなど追加の拡張機能も含む) のバージョンが最新であることの確認
対象:WebサーバーなどのWebシステム、Webサイト運用管理用PC
頻度:数週間〜月に1回程度
その他、クレジットカード情報を取り扱う企業が取得する必要のある「PCI-DSS」の基準では、四半期に1回もしくは大きな変更があった場合に脆弱性診断をすることが義務付けられています。
サイトやシステムの性質によって脆弱性診断の必要頻度などは異なりますが、脆弱性は時間の経過とともに発生するリスクが高まるため、定期的な脆弱性診断はリスク軽減につながるでしょう。
セキュリティ対策ツールの導入
セキュリティ対策ツールの導入も、脆弱性対策として有効な手段の一つです。ツールの導入はあくまで脆弱性やサイバー攻撃による影響を軽減したり、早期に発見したりするための保険的な対策であり、脆弱性そのものの根本的解決ではありません。しかし脆弱性の修正やアップデートといった対応には時間がかかってしまうことも事実です。近日では発見された脆弱性がサイバー攻撃に悪用されるまでの期間が非常に短くなっていますが、WAFやIDS/IPSなどを導入していたことにより、ベンダーが対策のシグネチャを迅速に提供したことによって攻撃を防御できたというような事例もあります。
セキュリティ対策ツールの多くは導入や運用に専門的な知識が必要なものでしたが、最近は知識がなくても利用しやすいクラウド型のサービスも増えています。自社にセキュリティ専門の担当者がおらず迅速な対策が難しいという企業ほど、ツールの導入は有効だと言えるでしょう。
脆弱性が発見された場合の対処方法
危険度の確認、脆弱性の影響分析
自社で利用している製品に脆弱性が発見された場合、まずその脆弱性によりどのような危険(脅威)があるかを確認する必要があります。
そしてその脆弱性に対する攻撃を受けた場合に、問題が発生する条件はどのようなものなのか、自社にどのような影響が及ぶのか調査します。
対策作業の策定
脆弱性の危険度と影響を加味し、対策計画を策定します。対策実施に必要な期間・検証期間・サービス停止の有無などを確認し、スケジュールを立てます。
対策の実施
計画に基づき、対策を実施します。脆弱性診断によって発見した脆弱性の場合は、間違いなく対処が完了したか再診断によってチェックすることが望ましいでしょう。
まとめ
脆弱性とは、OSやソフトウェアなどのIT関連製品の内部に作りこまれてしまったセキュリティ上の欠陥で、放置するとサイバー攻撃による情報漏洩やデータ破壊など、企業にとって大きな脅威となる可能性があります。脆弱性のリスクを回避・軽減するためには、日頃から自社の使用製品の脆弱性情報を収集すること、そして定期的な脆弱性診断が重要です。自社に対応できるリソースがない場合は、セキュリティ対策ツールの利用を検討してみてはいかがでしょうか。
ベアケアでは、老朽化したOSやシステムの課題をお持ちのお客さまに対し、特別価格で脆弱性診断サービスを提供しています。Webセキュリティのクリティカルな脆弱性について、網羅的にチェックが可能です。
その他、WAFやIDS/IPSなどのセキュリティ対策ツールについて、導入から運用までお任せいただけるセキュリティマネージドサービスもご用意しています。セキュリティの専任者がいなくても、自社のWebサイトやシステムのセキュリティリスクを軽減し、セキュアな環境での運用が可能になります。さまざまなセキュリティ対策ツールの中から何を導入したら良いかわからないといったお悩みにもお応えいたします。ぜひお気軽にご相談ください。