Windows Presentation Foundation のセキュリティ方針 - セキュリティ エンジニアリング
更新 : 2007 年 11 月
"Trustworthy Computing" (信頼できるコンピューティング) は、セキュリティで保護されたコードの生成を保証するための Microsoft イニシアティブです。Trustworthy Computing イニシアティブの主要な要素が Microsoft セキュリティ開発ライフサイクル (SDL) です。SDL は、セキュリティで保護されたコードの提供を促進するために標準のエンジニアリング プロセスと組み合わせて使用されるエンジニアリング方法です。SDL は、ベスト プラクティスと形式化、可測性、および次のような追加の構造を組み合わせた 10 の段階で構成されます。
セキュリティ デザイン分析
ツールベースの品質チェック
侵入テスト
最終的なセキュリティ レビュー
リリース後の製品のセキュリティ管理
WPF 固有の情報
WPF のエンジニアリング チームは、SDL の適用と拡張の両方を行います。この組み合わせには、次の主要な側面が含まれます。
脅威のモデリング
セキュリティの分析と編集ツール
テスト手法
クリティカル コードの管理
脅威のモデリング
脅威のモデリングは、SDL のコア コンポーネントです。これは、システムをプロファイリングして潜在的なセキュリティの脆弱性を確認するために使用します。脆弱性を特定すると、脅威のモデリングでは、適切な回避方法が整っているかについても確認します。
大まかに、脅威のモデリングには、以下の主要なステップが関連します。食料品店の例を挙げて説明します。
資産の特定。食料品店の資産には、従業員、金庫、レジ、在庫などがあります。
エントリ ポイントの列挙。食料品店のエントリ ポイントには、正面ドアと裏口ドア、窓、商品の積荷所、空調設備などがあります。
エントリ ポイントを使用した資産に対する攻撃の調査。食料品店では、空調設備エントリ ポイントから侵入して金庫資産をねらう攻撃が考えられます。空調設備を取り外し、そこから金庫を引き出して店から持ち出す可能性があります。
脅威のモデリングは WPF 全体で適用され、次の内容が含まれます。
XAML パーサーによるファイルの読み取り、対応するオブジェクト モデル クラスへのテキストのマップ、および実際のコードの作成方法。
ウィンドウ ハンドル (hWnd) の作成、hWnd によるメッセージの送信、hWnd を使用したウィンドウのコンテンツのレンダリング方法。
データ バインディングによるリソースの取得およびシステムとの対話方法。
これらの脅威のモデルは、セキュリティ デザイン要件や開発プロセス中の脅威の回避方法を特定するために重要です。
ソース分析と編集ツール
SDL の手動セキュリティ コード レビュー要素に加え、WPF チームはいくつかのツールを使用して、ソース分析や、セキュリティの脆弱性を軽減するための関連の編集を行います。次のようなさまざまなソース ツールが使用されます。
FXCop: 継承ルールからコード アクセス セキュリティの使用法、およびアンマネージ コードとの安全な相互運用方法まで、マネージ コードにおける一般的なセキュリティの問題を検出します。「FXCop」を参照してください。
Prefix/Prefast: バッファ オーバーラン、書式文字列の問題、エラー チェックなど、アンマネージ コードにおけるセキュリティの脆弱性と一般的なセキュリティの問題を検出します。
禁止API: ソース コードを検索して、strcpy などセキュリティの問題の原因としてよく知られている関数の誤った使用を特定します。そのような関数が特定されると、より安全な代替の関数に置き換えられます。
テスト手法
WPF は、次のようなさまざまなテスト手法を使用します。
ホワイトボックス テスト : テスターは、ソース コードを確認してから、悪用テストを作成します。
ブラックボックス テスト : テスターは、API と機能を調査してセキュリティの悪用可能部分を見つけてから、製品への攻撃を試みます。
他の製品からのセキュリティ問題の回帰 : 適切な場合、関連製品のセキュリティの問題点がテストされます。たとえば、Internet Explorer については約 60 のセキュリティの問題の変種が特定され、それらが WPF に適用可能かどうか試されています。
File Fuzzing によるツールベースの侵入テスト : File Fuzzing は、さまざまな入力によるファイル リーダーの入力範囲の悪用です。この手法が使用される WPF の 1 つの例では、イメージのデコード コードに不具合があるかどうかをチェックするために使用されます。
クリティカル コードの管理
XAML ブラウザ アプリケーション (XBAP) の場合、WPF は、権限を昇格させるセキュリティ クリティカル コードをマークおよび追跡するための .NET Framework のサポートを使用してセキュリティ サンドボックスを作成します (「Windows Presentation Foundation のセキュリティ方針 - プラットフォーム セキュリティ」の「セキュリティ クリティカルな方法」を参照してください)。セキュリティ クリティカル コードには高度なセキュリティ品質が必要とされているため、高いレベルのソース管理制御およびセキュリティ監査が適用されます。WPF のおよそ 5 ~ 10% は、専用のレビュー チームでレビューされるセキュリティ クリティカル コードで構成されます。ソース コードおよびチェックイン プロセスは、セキュリティ クリティカル コードを追跡し、各クリティカル エンティティ (クリティカル コードを含むメソッド) をそのサインオフ状態にマッピングして管理されます。サインオフ状態には、1 つ以上のレビューア名が含まれます。WPF の日単位の各ビルドでは、クリティカル コードを前のビルドのクリティカル コードと比較して、承認されていない変更がないかどうかをチェックします。エンジニアがレビュー チームの承認なしにクリティカル コードを変更すると、そのコードが特定されて直ちに修正されます。このプロセスにより、WPF サンドボックス コードに対する特に高度なレベルの精査の適用と保守が可能になります。
参照
概念
Windows Presentation Foundation のセキュリティ
Windows Presentation Foundation 部分信頼セキュリティ
Windows Presentation Foundation のセキュリティ方針 - プラットフォーム セキュリティ