はじめに
CWEに関する疑問をお持ちですか?Wallarmは、CWE(共通脆弱性一覧)が何であり、なぜオンラインセキュリティにとって重要なのかを説明します。
CWE (Common Weakness Enumeration) は、製品のセキュリティ欠陥を整理する仕組みで、実装ミスによって引き起こされる脆弱性を示すものです。コードの欠点や脆弱性を見つけ、回避策を促すために作られました。
米国の国家サイバーセキュリティ部門やUS-CERTがMitre CWEを支援しています。CWEは欠陥や不具合を600以上の分類に整理します。
CWEは、ソフトウェアの欠陥や問題を減らすために、設計者により安全な作り方を提示します。WAFやAPIセキュリティの技術者は、開発中のコードの脆弱性を防ぐためにCWEを活用できます。また、Security Orchestration, Automation, and Response (SOAR) ツールは、CWEを利用して修正ルールや工程を自動化する手助けをします。
CWEは、脆弱性に関する詳細な説明、例、関連するCommon Vulnerabilities and Exposures (CVE) との関連付け、さらに他の脆弱性との関係性を含む、広く報告された脆弱性の一覧です。例えば、CWE-200には、いくつかの事例とその脆弱性を悪用するCVEの一覧が含まれています。
セキュリティ専門家はCWEの記録を活用し、関連する攻撃パターンに基づいた予防措置や修正策を講じることができます。各CWEには、攻撃手法とそれに伴う脆弱性が記載されています。組織はこの情報を基に、リスクに応じた優先順位を設定することが可能です。
エンジニアや研究者にとって、CWEはプログラミング言語、プラットフォーム、環境、設計基準を超えた共通の脆弱性を見分ける手助けとなります。
ウェブアプリは、リクエストを送信したクライアントが、本物で適切なリクエストであるかどうかを十分に確認しない、もしくは確認できない場合があります。
攻撃者は、クライアントを騙して意図せずリクエストをウェブサーバに送信させる可能性があります。サーバが、クライアントからのリクエストを意図的なものとして確認できない場合、URL、画像の読み込み、XMLHttpRequestなどの手法を通じて、情報漏洩や不意なコード実行が引き起こされる恐れがあります。
ソフトウェアがバッファの終端より後や始端より前にデータを書き込むことを指します。
この結果、データの破損、アプリのクラッシュ、またはコードの実行が発生する可能性があります。配列の要素が変更されたり、バッファの範囲外でポインタ演算が行われたりすることで、以降の書き込み結果が不定または予期せぬものとなります。
OSコマンドが下流のコンポーネントに渡される際、ソフトウェアは上流からの入力を使ってその一部または全部を生成します。しかし、OSコマンドに影響を与える要素を十分に無害化できない場合があります。
このため、攻撃者がシステムを利用して予期せぬ危険なコマンドを実行する恐れがあります。攻撃者が直接システムにアクセスできなくても(たとえばウェブアプリの場合)、この問題は脆弱性となり得ます。問題が権限のあるプログラム内にあると、通常アクセスできないコマンドを実行させたり、持っていない権限で別のコマンドを呼び出したりする可能性が生まれます。攻撃者が制御するコマンドが高い権限で動作すると、最小権限の原則が守られていない場合、被害が拡大するおそれがあります。
CWEは、特定の製品に限定された脆弱性ではなく、脆弱性そのものに焦点を当てている点でCVEと異なります。
例えば、CVEは、攻撃者が遠隔でコードを実行できるような脆弱性を持つ特定の製品を取り上げます。こちらは1つの製品に絞った脆弱性です。
一方、CWEは特定の製品に依存しない脆弱性です。CWEはソフトウェアのセキュリティ欠陥を管理する共通の言語として普及しました。エンジニアは事前に欠陥情報を把握することで、脆弱性のない製品を提供し、将来のセキュリティ問題を回避できます。これにより、より迅速な開発サイクル、優れた製品の提供、攻撃面の縮小、サイバー攻撃の回避が可能となります。
以下に、CWEの例をいくつか示します:
CWEは、ソフトウェア開発や設計、コードに存在する欠陥の一覧を示します。欠陥、バグ、その他の誤りが脆弱性を引き起こし、内外の攻撃者によって利用される可能性があります。プログラムの実装、コード、設計、仕様には必ず欠陥が存在します。
2005年に、CWEリストはソフトウェアの欠陥を体系的に識別する共通の指標として策定されました。組織は、測定可能なセキュリティ指標を用いて、自社のITシステム(21世紀の企業の基盤)における欠陥を特定、軽減、防止することが可能です。分散コンピューティングの普及に伴い、その重要性は増しています。
NVDによれば『CWEはまだSecurity Content Automation Protocolの必須項目ではない』とされながらも、CWEはソフトウェア欠陥の識別における共通基準となっています。NVDは、CWE分類ツールを用いて、脆弱性の種類に応じてCVEを識別しています。つまり、多くの政府機関や民間組織がCWEを標準的な情報源として活用していますが、すべてのレポートや規格で採用されているわけではありません。
CWEリストは、統一された用語と識別子を用いることで、ISOのガイドラインのような一貫性ある正確な情報を提供します。CWEは、解析者、エンジニア、一般のPCユーザーまで、誰でも利用可能な情報源です。
2021年のCWEトップ25における欠陥と、その共通脆弱性一覧の評価スコアが紹介されています。
TOP 25
順位 | ID | 名称 |
---|---|---|
1 | CWE-787 | 境界外への書き込み |
2 | CWE-79 | クロスサイトスクリプティング:ウェブページ生成中の入力の不適切な処理 |
3 | CWE-125 | 境界外からの読み取り |
4 | CWE-20 | 入力検証エラー |
5 | CWE-78 | OSコマンドインジェクション(OSコマンドで使用される特殊文字の不適切な処理) |
6 | CWE-89 | SQLインジェクション(SQLコマンド特殊文字の不適切な処理) |
7 | CWE-416 | 解放後の使用 |
8 | CWE-22 | ディレクトリ制限の誤ったパス指定(パストラバーサル) |
9 | CWE-352 | クロスサイトリクエストの偽装(CSRF) |
10 | CWE-434 | 危険な可能性のあるデータの無制限転送 |
11 | CWE-306 | 重要な機能の検証欠如 |
12 | CWE-190 | オーバーフローまたはラップアラウンド |
13 | CWE-502 | 信頼されないデータのデシリアライズ |
14 | CWE-287 | 不適切な認証 |
15 | CWE-476 | 無効なポインタ参照 |
16 | CWE-798 | ハードコードされた認証情報の使用 |
17 | CWE-119 | メモリバッファ内の操作の不適切な制限 |
18 | CWE-862 | 認可の欠如 |
19 | CWE-276 | 誤ったデフォルトの権限設定 |
20 | CWE-200 | 機密情報が不正な主体に露出 |
21 | CWE-522 | 適切に保護されていない認証情報 |
22 | CWE-732 | 重要リソースへの誤った権限割当 |
23 | CWE-611 | XML外部実体参照の不適切な制限 |
24 | CWE-918 | サーバーサイドリクエストフォージェリ(SSRF) |
25 | CWE-77 | コマンドインジェクションに使われる特殊文字の不適切な処理 |
また、CWEは、脆弱性に関する詳細な説明、例、関連するCVE、および他の脆弱性との関連性を含む、広く報告された一覧となっています。例えば、CWE-200には、いくつかの事例とその脆弱性を悪用するCVEの一覧が含まれています。
セキュリティ専門家はCWEの記録を活用し、関連する攻撃パターンに基づいた予防措置や修正策を講じることができます。各CWEには、攻撃手法とそれに伴う脆弱性が記載されており、組織はこの情報を基にCWEへの優先順位設定を行うことが可能です。
エンジニアや研究者にとって、CWEはプログラミング言語、プラットフォーム、環境、設計基準を超えた共通の脆弱性を見分ける手助けとなります。
Subscribe for the latest news