コンピュータセキュリティにおいて、脆弱性とは、システムの設計、実装、または管理における欠陥や弱点のことであり、悪意のある攻撃者がそれを悪用してシステムのセキュリティを侵害する可能性がある。
システム管理者が完全な正確性を実現するために最善を尽くしても、事実上すべてのハードウェアとソフトウェアには、システムが期待どおりに動作しないバグが存在します。そのバグによって攻撃者がシステムリソースの機密性、完全性、または可用性を損なう可能性がある場合、それは脆弱性とみなされます。セキュリティ対策が不十分なソフトウェア開発手法や、複雑さなどの設計要因は、脆弱性の負担を増大させる可能性があります。
脆弱性管理には、システムの特定と重要度の優先順位付け、脆弱性のスキャン、およびシステムのセキュリティ確保のための対策が含まれます。脆弱性管理は通常、修復、緩和、および受容の組み合わせです。
脆弱性は、共通脆弱性評価システム(CVSS)に従って深刻度を評価され、共通脆弱性情報データベース(CVE)などの脆弱性データベースに追加されます。2026年4月現在、CVEデータベースには327,000件以上の脆弱性が記録されています。[ 1 ]
脆弱性は、ハードウェアまたはソフトウェアに導入された時点で発生します。脆弱性を含むソフトウェアまたはハードウェアが稼働すると、脆弱性はアクティブになり、悪用可能になります。脆弱性は、管理者、ベンダー、または第三者によって発見される可能性があります。脆弱性を(パッチなどを通じて)公開すると、攻撃者がパッチが適用される前に既存のシステムを標的にするためにこの情報を使用する可能性があるため、侵害のリスクが高まります。脆弱性は、システムにパッチが適用されるか、使用が停止されると最終的に解消されます。
システム管理者が最善を尽くしても、事実上すべてのハードウェアとソフトウェアにはバグが存在します。[ 2 ]バグがセキュリティリスクを生み出す場合、それは脆弱性と呼ばれます。[ 3 ] [ 4 ] [ 5 ]ソフトウェアパッチは、特定された脆弱性を修正するためにリリースされることが多いですが、ゼロデイ脆弱性は依然として悪用される可能性があります。[ 6 ]脆弱性は悪意のある攻撃者によって悪用される可能性が異なり、実際のリスクは脆弱性の性質と周辺システムの価値に依存します。[ 7 ]一部の脆弱性はサービス拒否攻撃にのみ使用できますが、より危険な脆弱性では、攻撃者がユーザーの認識なしにコードインジェクションを実行できます。 [ 3 ]脆弱性のうち、権限昇格 を可能にするものはごく少数であり、これは通常、より深刻な攻撃に必要です。[ 8 ]脆弱性がなければ、エクスプロイトは通常アクセスできません。[ 9 ]マルウェアは、ソーシャルエンジニアリングや、鍵のかかっていないドアや露出したポートなどの物理的なセキュリティの不備によって、エクスプロイトなしで直接インストールされる可能性もあります。 [ 10 ]
脆弱性は、以下のような設計上の不備によって悪化する可能性があります。
不適切なソフトウェア開発手法は、コードベースに脆弱性が混入する可能性に影響を与える可能性があります。安全なソフトウェア開発に関する知識やトレーニングの不足、納期に対する過度のプレッシャー、あるいは過度に複雑なコードベースは、脆弱性が混入し、見過ごされる原因となります。また、セキュリティが企業文化で優先されていない場合、これらの要因はさらに悪化する可能性があります。[ 15 ]不十分なコードレビューもバグの見落としにつながる可能性がありますが、コードレビュープロセス中に使用できる静的コード分析ツールもあり、脆弱性の発見に役立ちます。[ 16 ]
DevOps は、新機能の展開を迅速化するために自動テストと展開を重視する開発ワークフローですが、多くの場合、多くの開発者に変更構成へのアクセス権限を与える必要があり、意図的または偶発的に脆弱性が混入する可能性があります。[ 17 ] DevOps ワークフローの一部である依存関係のコンパートメント化は、依存関係を必要なものだけに絞り込むことで攻撃対象領域を縮小できます。 [ 18 ]組織独自のハードウェアとソフトウェアではなく、サービスとしてのソフトウェアを使用する場合、組織は脆弱性の防止をクラウド サービス プロバイダーに依存します。[ 19 ]
国家脆弱性データベースは、脆弱性を重複する可能性のある8つの根本原因に分類しています。[ 20 ]
意図的なセキュリティバグは製造中または製造後に導入され、特定の状況下で集積回路が期待どおりに動作しなくなる可能性があります。ハードウェアのセキュリティバグのテストは、時間の制約と21世紀のチップの複雑さのため非常に困難ですが[ 23 ] 、設計と製造のグローバル化により、悪意のある行為者によってこれらのバグが導入される機会が増えています[ 24 ] 。
オペレーティングシステムの脆弱性は、使用するオペレーティングシステムによって異なりますが、共通の問題は、攻撃者が本来許可されている以上のアクセス権を取得できる権限昇格バグです。LinuxやAndroidなどのオープンソースのオペレーティングシステムは、ソースコードが自由に利用可能で、誰でも貢献できるため、脆弱性が持ち込まれる可能性があります。しかし、 Microsoft WindowsやAppleのオペレーティングシステムなどのプロプライエタリなオペレーティングシステムでも、同様の脆弱性が発生します。[ 25 ]信頼できるオペレーティングシステムのベンダーはすべて、定期的にパッチを提供しています。[ 26 ]
クライアント/サーバーアプリケーションはエンドユーザーのコンピュータにダウンロードされ、通常はWebアプリケーションよりも更新頻度が低くなります。Webアプリケーションとは異なり、ユーザーのオペレーティングシステムと直接やり取りします。これらのアプリケーションの一般的な脆弱性には次のものがあります。[ 27 ]
ウェブアプリケーションは多くのウェブサイト上で稼働しています。他のアプリケーションに比べて本質的にセキュリティが低いため、データ漏洩やその他のセキュリティインシデントの主な原因となっています。[ 28 ] [ 29 ]ウェブアプリケーションには以下のようなものがあります。
ウェブアプリケーションの脆弱性を悪用した攻撃には、以下のようなものがあります。
セキュリティバグは一般的に、以下のようなかなり少数の幅広いカテゴリに分類されます。[ 33 ]
さまざまなサイバー攻撃防止策の有効性と費用対効果に関する証拠はほとんどありません。[ 34 ]攻撃のリスクを推定することは簡単ではありませんが、侵害までの平均時間と予想されるコストを考慮して、特定された脆弱性を修復または軽減する優先順位と、そうすることが費用対効果が高いかどうかを判断できます。[ 35 ]セキュリティに注意を払うことで攻撃のリスクを減らすことができますが、複雑なシステムで完璧なセキュリティを実現することは不可能であり、多くのセキュリティ対策には許容できないコストまたはユーザビリティの欠点があります。[ 36 ]例えば、システムの複雑さと機能を減らすことは、攻撃対象領域を減らすのに効果的です。[ 37 ]
脆弱性管理を成功させるには、通常、修復(脆弱性を閉じる)、緩和(悪用を困難にし、その影響を軽減する)、およびある程度の残存リスクを受け入れることの組み合わせが必要です。多くの場合、多層防御戦略が攻撃に対する複数の障壁として使用されます。[ 38 ]一部の組織では、すべての脆弱性を修正するリソースが不足している状況で優先順位付けを可能にするため、最もリスクの高い脆弱性のみをスキャンします。[ 39 ]費用を増やすと、収益が逓減する 可能性が高いです。[ 35 ]
修復とは、例えばソフトウェアパッチをダウンロードすることによって脆弱性を修正することです。[ 40 ]脆弱性スキャナーは通常、ゼロデイ脆弱性を検出できませんが、データベースに基づいて既知の脆弱性を見つけるのに効果的です。これらのシステムは、既知の脆弱性の一部を検出し、パッチなどの修正を推奨することができます。[ 41 ] [ 42 ]ただし、誤検出などの制限があります。[ 40 ]
脆弱性は、それが組み込まれているソフトウェアがシステム上でアクティブに実行されているときのみ悪用できます。[ 43 ]脆弱性を含むコードがシステム上で実行されるように構成される前は、それはキャリアとみなされます。[ 44 ]休眠状態の脆弱性は実行可能ですが、現在は実行されていません。休眠状態およびキャリア状態の脆弱性を含むソフトウェアは、アンインストールまたは無効化することでリスクを取り除くことができます。[ 45 ]アクティブな脆弱性は、他のタイプと区別することで、パッチ適用を優先することができます。[ 43 ]
脆弱性緩和とは、脆弱性を完全に解消するのではなく、悪用を困難にしたり、攻撃による被害を軽減したりする対策です。[ 46 ]特にルート(管理者)アクセス権限を持つシステムの一部において攻撃対象領域を縮小し、特権悪用を行うエクスプロイトの機会を遮断することは、サイバー攻撃による被害を軽減するための一般的な戦略です。[ 40 ]サードパーティ製ソフトウェアのパッチが入手できない場合は、ソフトウェアを一時的に無効にできる場合があります。[ 47 ]
侵入テストは、脆弱性を悪用してシステムに侵入し、システムが安全でないかどうかを確認するものです。[ 48 ]侵入テストが失敗したとしても、必ずしもシステムが安全であるとは限りません。[ 49 ]侵入テストの中には、既知の脆弱性に対して既存の脆弱性攻撃をテストする自動化されたソフトウェアを使用して実施できるものもあります。[ 50 ] また、訓練を受けたハッカーによって実施される侵入テストもあります。多くの企業は、外部からの攻撃をシミュレートするため、この作業を外部委託することを好みます。[ 49 ]

脆弱性のライフサイクルは、ハードウェアまたはソフトウェアに脆弱性が導入されたときに始まります。[ 51 ]脆弱性の検出は、ソフトウェアベンダーまたは第三者によって行われる場合があります。後者の場合、ベンダーに脆弱性を直ちに開示して修正してもらうことが最も倫理的であると考えられています。[ 52 ]政府または諜報機関は、一般に公開されていない脆弱性を購入し、攻撃に使用したり、備蓄したり、ベンダーに通知したりする場合があります。[ 53 ] 2013 年現在、ファイブ アイズ(米国、英国、カナダ、オーストラリア、ニュージーランド) が市場の大部分を占めており、その他の主要な購入者には、ロシア、インド、ブラジル、マレーシア、シンガポール、北朝鮮、イランが含まれます。[ 54 ]組織犯罪グループも脆弱性を購入しますが、通常はエクスプロイト キットを好みます。[ 55 ]
一般に知られている、またはパッチが適用されている脆弱性であっても、長期間にわたって悪用される可能性があります。[ 56 ] [ 57 ]セキュリティパッチの開発には数か月かかる場合があり、[ 58 ]あるいは開発されない場合もあります。[ 57 ]パッチはソフトウェアの機能に悪影響を与える可能性があり、 [ 57 ]ユーザーは機能と互換性を確認するためにパッチをテストする必要がある場合があります。 [ 59 ]大規模な組織はすべての依存関係を特定してパッチを適用できない場合があり、小規模な企業や個人ユーザーはパッチをインストールしない場合があります。[ 57 ]研究によると、脆弱性が一般に知られたり、パッチがリリースされたりすると、サイバー攻撃のリスクが高まります。[ 60 ]サイバー犯罪者はパッチをリバースエンジニアリングして根本的な脆弱性を見つけ、エクスプロイトを開発することができ、 [ 61 ]多くの場合、ユーザーがパッチをインストールするよりも速く開発します。[ 60 ]
脆弱性は、ソフトウェアまたは脆弱なバージョンが使用されなくなると廃止されます。[ 52 ]これには長い時間がかかる場合があります。特に、産業用ソフトウェアは、製造元がサポートを終了しても、置き換えることが現実的ではない場合があります。[ 62 ]
脆弱性の深刻度を評価するためによく使用される尺度は、オープンソース仕様の共通脆弱性評価システム(CVSS)です。CVSSは、脆弱性を悪用してデータの機密性、可用性、完全性を侵害する可能性を評価します。また、脆弱性がどのように使用されるか、悪用がどれほど複雑になる必要があるかも考慮します。悪用に必要なアクセスの量と、ユーザーの操作なしで悪用できるかどうかも、総合スコアに考慮されます。[ 63 ] [ 64 ]
脆弱性を発見した人は、それをすぐに開示する(完全開示)か、パッチが開発されるまで待つ(責任ある開示、または協調的開示)かのいずれかです。前者のアプローチは透明性が高いと評価されていますが、欠点は、パッチが利用できない状態で開示すると攻撃のリスクが高まる可能性があることです。[ 65 ]ベンダーによっては、脆弱性を報告した人にバグ報奨金を支払うところもあります。 [ 66 ] [ 67 ]法的責任や運用上のオーバーヘッドが発生する可能性があるため、すべての企業が開示に積極的に対応するわけではありません。[ 68 ] 脆弱性の開示を義務付ける法律はありません。[ 69 ]ベンダーや一般に開示しない第三者によって脆弱性が発見された場合、それはゼロデイ脆弱性と呼ばれ、防御策が少ないため、最も危険なタイプとみなされることがよくあります。[ 70 ]
最も一般的に使用されている脆弱性データセットは、 Mitre Corporationが管理するCommon Vulnerabilities and Exposures (CVE)です。[ 71 ] 2026 年 4 月現在、327,000 件を超えるエントリがあります。[ 1 ]この情報は、米国国家脆弱性データベース[ 71 ]を含む他のデータベースと共有されており、そこでは、各脆弱性にCommon Vulnerability Scoring System (CVSS)、Common Platform Enumeration (CPE) スキーム、Common Weakness Enumerationを使用してリスク スコアが付けられています。CVEやその他のデータベースは通常、サービスとしてのソフトウェア製品の脆弱性を追跡していません。[ 41 ]脆弱性を発見した企業にとって、CVE の提出は任意です。[ 69 ]
ソフトウェアベンダーは通常、脆弱性が攻撃に悪用された場合の費用について法的責任を負わないため、より安価だがセキュリティの低いソフトウェアを作るインセンティブが生まれます。[ 72 ]一部の企業は、脆弱性管理に関する法的要件を課すPCI、HIPAA、サーベンス・オクスリーなどの法律の対象となっています。[ 73 ]