アプリケーションのセキュリティ特性は,ソフトウェア開発プロセスに統合されたものでなければならない。後の段階になってからの侵入テストでは不十分だ。誤りを修正するには遅すぎるし,費用も掛かりすぎる。Microsoft の Steve Lipner 氏は先週,RSA 2011 カンファレンス のアプリケーションセキュリティセミナ でソフトウェア開発ライフサイクルにおけるセキュリティについて講演し,Microsoft が開発した セキュリティ開発ライフサイクル (Security Development Lifecycle/SDL) プロセスの各フェーズを説明した。
- セキュリティトレーニング
- 要件
- 設計
- 実装
- 検証
- リリース
- 反応
SDL フレームワークにはアジャイルバージョンもあって,アジャイル開発プロセスへのセキュリティ特性の統合をサポートしている。アジャイルプロセスのセキュリティ要件は,3つのカテゴリに分類される。
- すべてのスプリント: 脅威モデル (Threat Model) などの手法を用いて識別されるような,優先度が高く,かつクリティカルなセキュリテイ要件が相当する。
- ワンタイム: コンパイラの選定やバグ追跡データベースのように,インフラやポリシに関する要件である。
- バケツ (Bucket): 長期継続する,あるいは遅延可能な要件を含むカテゴリである。ファイルあるいは ActiveX の ファジング がこれに相当する。
セミナでは氏以外の講演者も,アプリケーションのセキュリティを向上させる技術について発表した。Albert Revelli 氏 (Cigtal) はブラックリスト対ホワイトリスト,メモリレベルおよびホストレベルの保護,セキュア相互運用性,最小権限の原則,区分化 (compartmentalization) などのセキュアな設計指針を取り上げた。
Brian Chess および Jacob West の両氏 (ともに Fority) は,セキュアなコーディング技術について講演した。組織がアプリケーションのセキュリティ脆弱性を管理するために使用可能なセキュリティ関連の欠陥分類リストには,OWSAP Top 10,Seven Pernicious Kingdoms,Common Weakness Enumeration (CWE),Sans Top 25,Common Vulnerability Scoring System (CVSS) など,さまざまな種類がある。Jacob West 氏は脆弱性の例として,クロスサイトスクリプティング (XSS),クロスサイトリクエスト改ざん (Cross-Site Request Forgery/CSRF),HTTP レスポンス分割,セッション固定 (Session Fixation),SQL インジェクションなどを挙げた。また Brian Chess 氏は,セキュアなコーディングのガイドラインとして,十分なバリデーションをデフォルトにすること,アプリケーションや間接選択,ホワイトリストの異なるレイヤ間に信頼に関する境界を設置すること,などを推奨した。
Chris Eng 氏 (Veracode) は,静的・動的・手動のテスティングとファジングなどのさまざまなテスト方法について,それぞれの長所や短所を含めて解説した。Reeny Sondhi 氏 (EMC Corporation) からは,自身の所属する組織で使用されている,脆弱性応答プログラムに関する概要の説明があった。