Web システムの脆弱性の分類

品質保証QA脆弱性

Web システムの脆弱性によるセキュリティの問題について、対策する開発者側やテストを行う検証者側の視点に立って分類しました。
どこに脆弱性があるのか、どのように攻撃するのかという観点を元に分類することで、対策する箇所の理解やテストケースの作成もわかりやすくなるかと思います。

セキュリティ関連記事の多くは、たとえ検索上位のサイトであっても、何を言っているのかよくわからない要領を得ない内容のものも多数存在しており、正しい知識の習得の妨げになっているのではないかという懸念があります。
脆弱性やセキュリティの問題には様々な名前がついていて混乱しやすいですが、結局のところ、攻撃と言われるもののほとんどはリクエストデータに不正なデータを仕込むことであり、これによくわからない名前が色々とついているだけのことです。
攻撃によらない脆弱性については、そのほとんどがバグと呼べるようなシステムの稚拙さに起因するものです。
基本的に後述する「脆弱性の種類・分類」でまとめてあるものを網羅することでセキュリティ関連の知識としては十分かと思います。
変な記事に惑わされず、物事の本質を見極めましょう。


脆弱性の種類・分類
大きく5つの観点に分けました。

脆弱性種別攻撃方法・原因など解説ページ
不正なリクエストデータに対する脆弱性 ・不正な SQL 文を埋め込む攻撃
・不正な OS コマンドを埋め込む攻撃
・不正な HTML タグや JavaScript を埋め込む攻撃
・不正なパス名を埋め込む攻撃
・不十分なバリデーションチェック
・信頼できないデータの復元
・XML ドキュメントによる不正な外部エンティティ参照
[ 解説 ]
認証の欠如による脆弱性・認証済の利用者を踏み台にした攻撃
・承認済のサーバを踏み台にした攻撃
・不適切・不十分な認証処理
・ユーザ権限の確認不十分
[ 解説 ]
機密情報・認証情報の漏えいによる脆弱性・エラーメッセージ出力による機密情報の漏えい
・認証情報の不十分な保護
[ 解説 ]
不適切なパーミッションによる脆弱性・不適切なパーミッション設定[ 解説 ]
不正なメモリ領域へのアクセスによる脆弱性・境界外の読み取り・書き込み
・解放済みメモリの使用
・整数の桁あふれ
・NULL ポインタの逆参照
[ 解説 ]


以下の章でそれぞれについて解説していきます。

Web システムの脆弱性を開発者の視点に立ってわかりやすく説明する その1
Web システムの脆弱性を開発者の視点に立ってわかりやすく説明する その2
Web システムの脆弱性を開発者の視点に立ってわかりやすく説明する その3
Web システムの脆弱性を開発者の視点に立ってわかりやすく説明する その4


共通脆弱性タイプ一覧(CWE)
CWE【Common Weakness Enumeration】では、ソフトウェアにおけるセキュリティ上の弱点(脆弱性)の種類を識別するための共通の基準を目指し、脆弱性のパターンに共通の呼び名をつけてリスト化しています。
また、JVN【Japan Vulnerability Notes】では、CWE 識別子をキーワードとして対応する脆弱性対策情報が検索できるサービス JVN iPedia を公開しています。

CWE【Common Weakness Enumeration】
https://cwe.mitre.org/
JVN iPedia
https://jvndb.jvn.jp/

IPA でも、すぐに広まりそうな危険性の高いセキュリティ問題をいち早く提供してくれています。
Twitter でも情報収集できるので、フォローしておくと良いでしょう。

重要なセキュリティ情報一覧
https://www.ipa.go.jp/security/announce/alert.html
Twitter
https://twitter.com/ICATalerts/

本記事では、2021 年度版の「CWE Top 25」(最も危険なセキュリティ問題トップ 25)より解説する項目をピックアップしました。
CWE Top 25」は、CWE のトップページ右上にある「Top25」という丸いボタンから見ることができます。

2021 CWE Top 25 Most Dangerous Software Weaknesses
https://cwe.mitre.org/top25/archive/2021/2021_cwe_top25.html

コメント