CWE is a Software Assurance strategic initiative sponsored by the National Cyber Security Division of the U.S. Department of Homeland Security. |
CWE - 2010 CWE/SANS Top 25 Most Dangerous Programming Errorsにおいて脆弱性の原因となる危険なプログラミングエラー25が発表された。開発者にセキュリティ問題の原因となるプログラミングに関する注意を促し、実際にソフトウェアが動作する前の段階で問題を発見し対処できるようにすることを目指したもの。2009年に発表されたリストの更新版にあたり、内容の多くが更新されている。2009年版を使っていた場合には、今回発表された2010年版を再度検討する価値がある。
公開されている脆弱性に結びつくプログラミングエラートップ25をまとめると次のとおり。25にランクインしなかった16含めると、合計41のプログラミングエラーが報告されていることになる。
スコア | ID | 内容 | |
---|---|---|---|
1 | 346 | CWE-79 | クロスサイトスクリプティング |
2 | 330 | CWE-89 | SQLインジェクション |
3 | 273 | CWE-120 | Bufferオーバーフロー |
4 | 261 | CWE-352 | クロスサイトリクエストフォージェリ(CSRF) |
5 | 219 | CWE-285 | 不正アクセス制御 |
6 | 202 | CWE-807 | 不正入力値に対処していないことに起因する脆弱性 |
7 | 197 | CWE-22 | ディレクトリトラバーサル |
8 | 194 | CWE-434 | アップロートファイルに制限を設けないことに起因する脆弱性 |
9 | 188 | CWE-78 | OSコマンドインジェクション |
10 | 188 | CWE-311 | 重要データを暗号化していない起因する脆弱性 |
11 | 176 | CWE-798 | パスワード等をソースコードにハードコーディングすることに起因する脆弱性 |
12 | 158 | CWE-805 | 範囲を越えるバッファアクセスに起因する脆弱性 |
13 | 157 | CWE-98 | PHP Fileインクルージョン |
14 | 156 | CWE-129 | 配列インデックスの誤った検証に起因する脆弱性 |
15 | 155 | CWE-754 | 例外的な状況における不適切なチェックに起因する脆弱性 |
16 | 154 | CWE-209 | エラーメッセージに公開されてはならない情報が掲載されてしまう脆弱性 |
17 | 154 | CWE-190 | 整数オーバーフロー |
18 | 153 | CWE-131 | バッファサイズの誤った計算に起因する脆弱性 |
19 | 147 | CWE-306 | クリティカルな処理に対する認証欠落に起因する脆弱性 |
20 | 146 | CWE-494 | 完全性チェックを実施しないコードのダウンロードに起因する脆弱性 |
21 | 145 | CWE-732 | クリティカルなリソースに対する不正な保護権設定に起因する脆弱性 |
22 | 145 | CWE-770 | 制限を設けないリソース確保に起因する脆弱性 |
23 | 142 | CWE-601 | 信用されないサイトへのURLリダイレクトリ |
24 | 141 | CWE-327 | リスキーな暗号化アルゴリズムを利用することに起因する脆弱性 |
25 | 138 | CWE-362 | レースコンディション |
スコア | ID | 内容 | |
---|---|---|---|
26 | 136 | CWE-749 | 適正に規制されていないAPIが提供されていることに起因する脆弱性 |
27 | 129 | CWE-307 | 認証処理に回数制限や時間制限を設けないことに起因する脆弱性 |
28 | 125 | CWE-212 | 重要データ削除処理の欠落に起因する脆弱性 |
29 | 124 | CWE-330 | 十分ではないランダム数値を利用していることに起因する脆弱性 |
30 | 120 | CWE-59 | リンクフォロー脆弱性 |
31 | 120 | CWE-134 | 外部から指定可能な整形出力機能を使うことに起因する脆弱性 |
32 | 119 | CWE-476 | ヌルポインタ処理に起因する脆弱性 |
33 | 119 | CWE-681 | 数値型の不正変換に起因する脆弱性 |
34 | 118 | CWE-426 | アプリケーションの制御下にないリソースを検索することに起因する脆弱性 |
35 | 116 | CWE-454 | 信頼されない入力値を使った初期化処理に起因する脆弱性 |
36 | 114 | CWE-416 | メモリ開放後に処理を実施することに起因する問題 |
37 | 114 | CWE-772 | 不要になったメモリを解法しないことに起因する問題 |
38 | 106 | CWE-799 | インタラクションに制限を設けないことに起因する問題 |
39 | 100 | CWE-456 | クリティカルな値を初期化しないことに起因する問題 |
40 | 91 | CWE-672 | 開放後のリソースを操作することに起因する問題 |
41 | 77 | CWE-804 | 推測可能なCAPTCHAに起因する問題 |
発表されたランキングはあくまでも一般的なケースで整理した場合の順位になっている。どの脆弱性をどの程度重要なものとみなすかはプログラミング言語やユースケースなどコンテキストに依存して変化する。このためCWE - 2010 CWE/SANS Top 25 Most Dangerous Programming Errorsではカテゴリ別まとめも提供されている。提供されているカテゴリは次のとおり。
カテゴリ |
---|
コンポーネント完の不安全なインタラクション |
リスキーなリソース管理 |
誤った防御方法やその欠落 |
カテゴリ |
---|
教育視点からのランキング |
プログラミング言語からのランキング |
設計または実装という観点からのランキング |
自動分析または手動分析という観点からのランキング |
開発者視点からのランキング |
顧客視点からのランキング |
技術インパクト視点からのランキング |
これらリストはプログラマやテスタ、アーキテクト、デザイナ、プロジェクトマネージャなどシステム開発に関わる人材にとって有益な資料になるのみならず、教育関係者における教材としても利用できる。また、システム開発を発注したり購入する顧客における要望チェックリストとしても利用できる。