次の方法で共有


WPF セキュリティ戦略 - セキュリティ エンジニアリング

Trustworthy Computing は、セキュリティで保護されたコードを確実に生成するための Microsoft のイニシアチブです。 Trustworthy Computing イニシアチブの重要な要素は、Microsoft セキュリティ開発ライフサイクル (SDL) です。 SDL は、セキュリティで保護されたコードの配信を容易にするために標準のエンジニアリング プロセスと組み合わせて使用されるエンジニアリングプラクティスです。 SDL は、ベスト プラクティスと形式化、測定可能性、および次のような追加の構造を組み合わせた 10 のフェーズで構成されています。

  • セキュリティ設計の分析

  • ツールベースの品質チェック

  • 侵入テスト

  • 最終的なセキュリティ レビュー

  • リリース後の製品セキュリティ管理

WPF の詳細

WPF エンジニアリング チームは、SDL の適用と拡張の両方を行います。これらの組み合わせには、次の重要な側面が含まれます。

脅威モデリング

セキュリティ分析および編集ツール

テスト手法の一覧

重要なコード管理

脅威モデリング

脅威モデリングは SDL のコア コンポーネントであり、システムをプロファイリングして潜在的なセキュリティの脆弱性を特定するために使用されます。 脆弱性が特定されると、脅威モデリングによって適切な軽減策が確実に適用されるようになります。

大まかに言えば、脅威モデリングには、食料品店を例として使用して、次の重要な手順が含まれます。

  1. 資産の識別. 食料品店の資産には、従業員、金庫、レジ、在庫が含まれる場合があります。

  2. エントリポイントを列挙します. 食料品店のエントリ ポイントには、前面と背面のドア、窓、積み込みドック、およびエアコンユニットが含まれる場合があります。

  3. 資産に対する攻撃をエントリポイントを使用して調査する 。 1つの攻撃は、エアコン エントリポイントを通じて食料品店の 金庫 資産を標的にする可能性があります。エアコンユニットは、金庫がその中を通って店の外に引き上げられることができるように、ネジを緩めることができます。

脅威モデリングは WPF 全体に適用され、次のものが含まれます。

  • XAML パーサーがファイルを読み取り、対応するオブジェクト モデル クラスにテキストをマップし、実際のコードを作成する方法。

  • ウィンドウ ハンドル (hWnd) を作成し、メッセージを送信し、ウィンドウの内容をレンダリングするために使用する方法。

  • データ バインディングがリソースを取得し、システムと対話する方法。

これらの脅威モデルは、開発プロセス中にセキュリティ設計要件と脅威の軽減策を特定するために重要です。

ソース分析および編集ツール

WPF チームは、SDL の手動セキュリティ コード レビュー要素に加えて、ソース分析と関連する編集のためにいくつかのツールを使用して、セキュリティの脆弱性を減らします。 さまざまなソース ツールが使用され、次のものが含まれます。

  • FXCop: 継承規則からコード アクセス セキュリティの使用、アンマネージド コードとの安全な相互運用方法まで、マネージド コードの一般的なセキュリティの問題を検出します。 FXCopを参照してください。

  • Prefix/Prefast: バッファー オーバーラン、書式指定文字列の問題、エラー チェックなど、アンマネージド コードのセキュリティの脆弱性と一般的なセキュリティの問題を検出します。

  • 禁止 API: ソース コードを検索して、セキュリティの問題の原因としてよく知られている関数 (strcpyなど) を誤って使用していることを特定します。 識別されると、これらの関数は、より安全な代替手段に置き換えられます。

テスト手法

WPF では、次のようなさまざまなセキュリティ テスト手法が使用されます。

  • Whitebox Testing: テスト担当者はソース コードを表示し、エクスプロイト テストをビルドします。

  • Blackbox Testing: テスト担当者は、API と機能を調べてセキュリティの悪用を見つけ、製品を攻撃しようとします。

  • 他の製品からのセキュリティ問題の再評価: 必要に応じて、関連製品のセキュリティ問題がテストされます。 たとえば、Internet Explorer の約 60 個のセキュリティ問題の適切なバリエーションが特定され、WPF への適用が試行されています。

  • Tools-Based ファイルファジーによる侵入テスト: ファイルファジーは、さまざまな入力を介してファイルリーダーの入力範囲を悪用することです。 この手法を使用する WPF の 1 つの例は、画像デコード コードのエラーを確認することです。

重要なコード管理

XAML ブラウザー アプリケーション (XBAP) の場合、WPF は、特権を昇格させるセキュリティクリティカルなコードのマーキングと追跡に .NET Framework のサポートを使用してセキュリティ サンドボックスを構築します (「WPF セキュリティ戦略 - プラットフォーム セキュリティ」の Security-Critical 手法 を参照)。 セキュリティ クリティカルなコードに対する高いセキュリティ品質要件を考慮すると、このようなコードは追加レベルのソース管理とセキュリティ監査を受け取ります。 WPF の約 5% から 10% は、専用のレビュー チームによってレビューされるセキュリティ クリティカルなコードで構成されています。 ソース コードとチェックイン プロセスは、セキュリティ クリティカル コードを追跡し、各重要なエンティティ (つまり、重要なコードを含むメソッド) をサインオフ状態にマッピングすることによって管理されます。 サインオフ状態には、1 人以上のレビュー担当者の名前が含まれます。 WPF の毎日のビルドごとに、重要なコードが以前のビルドのコードと比較され、未承認の変更が確認されます。 エンジニアがレビュー チームの承認なしに重要なコードを変更すると、すぐに識別され、修正されます。 このプロセスにより、WPF サンドボックス コードに対する特に高度な調査のアプリケーションとメンテナンスが可能になります。

警告

XBAP では、Internet Explorer や古いバージョンの Firefox など、従来のブラウザーが動作する必要があります。 これらの古いブラウザーは、通常、Windows 10 および Windows 11 ではサポートされていません。 最新のブラウザーでは、セキュリティ リスクのために XBAP アプリに必要なテクノロジがサポートされなくなりました。 XBAP を有効にするプラグインはサポートされなくなりました。 詳細については、「WPF ブラウザーでホストされるアプリケーション (XBAP)についてよく寄せられる質問を参照してください。

関連項目