今月12日、SANS Instituteから、ソフトウェアの脆弱性の原因となる「危険なプログラミングエラー」のトップ25が発表された。このリストの作成には、米Symantec、Microsoft、Apple、米国土安全保障省の国家サイバーセキュリティ部門、米国家安全保障局(NSA)、OWASP、カリフォルニア大学、パデュー大学など、サイバーセキュリティに携わる30もの団体が協力したそうな。それと、日本からは「独立行政法人 情報処理推進機構(IPA)」も参加。その割には、IPAの公式ホームページには、それらしきニュースは載っていなかったけどなぁ。これから載せる予定なのかしら?他に有名どころでは、Secunia、VeriSign、Red Hat、Oracle、Fortifyなんかも名前を連ねてる。
このリストの作成には、様々なもくろみがあるみたいだけど、主には次の4つが挙げられる。
○ 消費者はより安全なソフトウェアを購入できる。
○ プログラマが安全なコードを書く際の基準となる。
○ 教育機関はより自身を持って安全なコーディングを指導できる。
○ 企業経営者が自社のプログラマのスキルを評価する基準となる。
さて、気になるリストだけど、3分野25項目の「最も危険なプログラミングエラー」で構成されている。
【コンポーネント間の危険な通信およびデータ処理】
全部で9件選定されているよ。
1. 入力検証の不備
2. 出力のエンコードまたはエスケープ処理の不備
3. SQLインジェクション
4. クロスサイトスクリプティング
5. OSコマンドインジェクション
6. 機密情報を平文で送信
7. クロスサイトリクエストフォージェリ
8. 競合状態
9. エラーメッセージ情報の露呈
【危険なリソース管理】
こちらも全部で9件。
10. バッファオーバーフロー
11. ステートデータを外部に格納
12. ファイル名やパスに外部から入力された値を使用
13. 信頼できない検索パス
14. コードインジェクション
15. 検証チェックせずにコードをダウンロード
16. リソース解放の不備
17. 初期化の不備
18. 誤計算
【穴だらけの防御】
こちらは7件。
19. アクセス制御の不備
20. 脆弱な暗号アルゴリズムの使用
21. ハードコードされたパスワード
22. 重要なリソースに対する不適切なパーミッションの付与
23. 十分にランダム化されていない値の使用
24. 不必要な特権での実行
25. サーバサイドにおけるセキュリティチェックの不備
プログラマーは、これら25項目を含まない安全なコードの書き方をマスターする必要があるんだって。
各項目に関する詳しい説明などは、SANSの情報を参考にしてね
