公開:
脆弱性とは?脆弱性をなくすことはできないのか
こんにちは。Sqripts編集部です。
この記事では脆弱性の基本や「脆弱性をなくすことはできないのか」に焦点を当てて解説します。
脆弱性の本質、その存在理由、そしてリスクを最小化するアプローチを解き明かしますので、ぜひセキュリティ対策の参考にしてください。
目次
脆弱性とは?
用語の定義を理解する
脆弱性とは、システム全体のセキュリティを損なう可能性をもつ「弱点」です。一般的にはソフトウェアのバグ、設計ミスによる欠陥、不適切なセキュリティポリシーや管理体制(による防御の穴)などが含まれます。
総務省の定義によれば、
コンピュータのOSやソフトウェアにおいて、プログラムの不具合や設計上のミスが原因となって発生したサイバーセキュリティ上の欠陥
出典:総務省『国民のためのサイバーセキュリティサイト』
とされています。
セキュリティ上のリスクを理解する
上記の「弱点」を通じて、攻撃者は不正アクセスを試み、データを盗む、サービスを妨害する、その他の悪意ある攻撃をしかけます。脆弱性に脅威が迫ったときに、システム損害のリスクあるいは、事業継続のリスクなどが生じます。
詳しくは「脆弱性のリスク」の章にて後述します。
なぜ脆弱性が生まれるのかを理解する
攻撃の対象となってしまう脆弱性は、私たちエンジニアが生み出しているという観点を持つことは重要です。脆弱性はシステムを設計する者、システムを利用する者が生み出しており、生み出された脆弱性に脅威が迫ったときに初めてセキュリティリスクが生まれます。
エンジニアから脆弱性が生まれる要因としては、スキル不足、ミスコミュニケーション、要件の急な変更、不十分な品質テストなどさまざまなことが考えられます。人間が関与する限り、完璧なシステムを構築することは現実的には不可能であり、「脆弱性は存在するもの」と認識しておくことが大切です。
利用者から脆弱性が生まれる要因としては、セキュリティアップデートやパッチを適用しないことが挙げられます。アップデートやパッチを適用しない環境下では、既知の脆弱性が存在し続けることになります。 また、パスワードの強度が弱い、パスワードの管理が不適切である(例えば、同じパスワードを複数のアカウントで使用するなど)といった環境も一種の脆弱性と考えられます。
【用語】脆弱性とセキュリティホールの違いと関係性
脆弱性はシステムの弱点を広く指しますが、セキュリティホールは特定の脆弱性を指します。
セキュリティホールとはつまり、攻撃者がシステムに侵入するための具体的な「窓口」です。
セキュリティホールは脆弱性に内包されており、広義的な弱点を指す「脆弱性」という言葉と、狭義的な弱点を指す「セキュリティホール」という言葉が存在します。
脆弱性のリスク
マルウェアへの感染リスク
システムの弱点を許容し続けることは、さまざまなリスクを許容するのと同じです。
まず挙げられるのが、マルウェアへの感染リスクです。マルウェアに感染すると、データ漏えいや改ざん・削除といった被害が生じます。
特に近年では、マルウェアの一種であるランサムウェアの被害が世界的に注目されており、データを人質に身代金を要求するといった犯罪行為が後を絶ちません。ランサムウェアによる攻撃も高度化しており、組織化した犯罪集団が「ビジネス」としてランサムウェアを仕掛けてくるケースも目立ちます。
マルウェア感染は、直接的なデータ損失被害だけの話ではありません。顧客の信頼喪失に始まり、金銭賠償、法的責任による事業継続の危機にまで影響を及ぼします。一度評判が損なわれると即座の回復は困難であり、ダメージコントロールには莫大なコストを要します。
ひとたびマルウェアに感染すれば、自分たちが感染源となり、取引先企業への不正アクセスの踏み台になってしまう可能性もあります。あるいは、たとえば某大手動画共有サイトでは、コメント投稿に関するシステムの脆弱性から攻撃を受け、デマコメントが乱立するなど「社会的混乱」を招いた事例もあります。
マルウェアへの感染の要因
マルウェアへの感染の主な要因は、「ソフトウェアのバグ」や「設計ミスによる欠陥」と考えられます。マルウェアやランサムウェアがシステムに感染する際には、システムのバグや設計上の欠陥を突かれる事例が多くなっています。これらの欠陥(脆弱性)を悪用し、不正なアクセスを行ったり、データを盗んだり、システムを遮断したりします。
重要なのは、脆弱性を放置するリスクは派生的に広がっていくことを理解することです。適切にリスク管理と脆弱性対策を実施しないと、放置した分だけ危険度は増していきます。
脆弱性を完全になくすことはできるのか?
「脆弱性をなくすことはできますか?」
答えはNoです。よく「開発・構築段階で十分なテストをすれば脆弱性はなくなる」と考えてしまうことがありますが、それは誤りです。
技術の進歩、攻撃手法の進化、意図しない操作などとともに新たな脆弱性は常に発見されるため、脆弱性を完全になくすことはできません。
ただし、リスクを管理し、影響を最小限に抑えることはできます。
脆弱性への対策
脆弱性対策の基本:情報収集と適切な管理
ひとことで情報収集といっても、脆弱性の情報は膨大であり、常に新たな脆弱性が発見されるため、すべてを完全に把握することはできません。
IPA(情報処理推進機構)によれば、脆弱性対策情報データベース「JVN iPedia」に登録された累計脆弱性情報は2024年3月時点で206,571件に上り、毎年右肩上がりで件数を伸ばしています。各メーカーや開発元からひとつひとつ脆弱性情報を集めるのは実質的に不可能であり、急速に脆弱性の数が増加する昨今においては、効率的ではありません。
網羅的に情報収集をしつつ、迅速な脆弱性の対策を実現するためには、データベースの活用が有効です。代表的なデータベースとしては以下の3つが挙げられます。
- JVN(Japan Vulnerability Notes)
日本国内で使用されているソフトウェアの脆弱性情報を入手するのに適しているデータベースです。 - NVD(National Vulnerability Database)
世界全域の脆弱性情報を入手するなら、米国国立標準技術研究所(通称NIST)が運営するNVDを活用するとよいでしょう。(英語表記サイトです) - JVN iPedia
JVNやNVDなどを一次ソースとして集約するデータベースです。
具体的にどんな情報を得るべきかは、対策に必要な項目から逆算しましょう。脆弱性対策には、具体的な対策手法だけでなく、対策の必要性の有無、対策の優先度を把握しなければなりません。対策の必要性の有無を把握するには、脆弱性が検出されたソフトウェアやバージョン情報を確認します。対策の優先度を判断するには、脆弱性の影響範囲を抑える必要があります。
上記を把握したうえで、定期的なセキュリティチェック、脆弱性スキャニング、ソフトウェアの更新、従業員教育といった具体的な対策に移ります。
脆弱性診断:定期的なセキュリティチェックの重要性
技術の進歩とともに、残念ながらサイバー攻撃も進化しています。一度脆弱性対策を実施したからといって、安全だとはいえなくなってしまったのが現状です。定期的なセキュリティチェックを施すことで、新たな脆弱性にも迅速に対応し、被害を最小限に抑えることができます。
セキュリティチェックには、大きく2つの種類があります。ひとつはプラットフォーム診断、もうひとつはアプリケーション診断です。プラットフォーム診断はネットワーク内のサーバやネットワーク機器、また昨今ではIoT機器なども含む環境の脆弱性有無を調査します。アプリケーション診断では、WebアプリケーションおよびWebサイト、スマホアプリなどを対象に脆弱性を診断します。
どちらの診断も、インターネット経由のリモート診断と内部ネットワークからのオンサイト診断の2つに細分化されます。
2つの脆弱性診断において、自社に必要なリソースがあればその範囲で診断活動を実施するのが最適でしょう。しかし、脆弱性に適切に対応するためには、豊富な知見や経験による「判断力」が必要です。今自分たちが対策していることが、自社にとって正解か否かを判断できなければ、それが企業にとって致命傷となってしまう可能性もあるからです。
自社に十分なリソースがない場合は、脆弱性診断ツールや専門のセキュリティチームを活用することも検討しましょう。
まとめ
脆弱性は常に新たなものが発見されるため、完全になくすことはできません。しかし、放置すればその分セキュリティリスクは高まり、事業継続の危機はもちろん、社会的混乱やパートナー企業へも影響を及ぼす可能性があります。
脆弱性の本質を理解しながら適切な情報収集と対策を施していくことが大切です。そうすれば、万が一脆弱性からの脅威が迫ってきても、被害を最小限に食い止めることができます。
Sqriptsを通じて、読者の皆さんが「自社はどのように脆弱性と向き合っていくべきか」の最適解を見つけられることを願っています。
【参考】
総務省:国民のためのサイバーセキュリティサイト
IPA:脆弱性対策情報データベースJVN iPediaの登録状況