Secure Windows Initiative について

Michael Howard

Secure Windows Initiative (SWI) は、Microsoft 社内に設けられた専門グループであり、悪意のある攻撃に対してマイクロソフト製品のセキュリティを強化することを目的としています。SWI は、Microsoft Security Response Center (MSRC)  などのさらに広範囲に及ぶセキュリティに対する取り組みの一環でもあります。

SWI は、教育、ツール、プロセス改善およびテストなどの複数の手段を使用して、セキュリティ保護された製品の設計、構築、テストを主眼に活動を行っています。SWI のメンバは、多数の製品を対象とするセキュリティ コンサルティングおよびプロセス改善チームの中核として活躍しています。

トピック

セキュリティ関連の教育  

 プロセスの改善

 ツール 

テスト テスト

要約 要約

セキュリティ関連の教育

開発者の中で、セキュリティ保護された製品を構築するトレーニングを正式に受けた者は稀です。ファイアウォール、暗号化、および認証プロトコルなどのセキュリティ テクノロジについて学習する開発者は多数います。ただし、開発者が個々の機能を知っているからといって、安全なコードを記述できるとは限りません。特定のセキュリティ テクノロジ (SSL、暗号化、およびスマートカードによるログオンなど) を使用する場合、開発者は、自らが使用する機能は安全であると感じるかもしれません。しかし、使用するテクノロジが、意図する機能目的のシナリオとは合致しない場合もあり、他の手段を考える必要が出てくることがあります。

SWI は、開発者チームに対し、バッファ オーバーランなど、ソフトウェアの設計やコード上のセキュリティの弱点はどこか、またその弱点の原因は何であるかを示します。SWI でトレーニングを積んだマイクロソフト製品の開発チームのメンバは、ゆうに 3,000 名を超えています。SWI は、次のような教育方法を用いてトレーニングを実施します。

  • セキュリティ レビュー デイ
  • ライブ オンライン プレゼンテーション
  • Best Practice に関するドキュメント作成
  • MSDN および Platform SDKへセキュリティ情報を掲載

セキュリティ レビュー デイ

セキュリティ レビュー デイは、全製品チームの専門分野 (設計、開発、テスト、およびドキュメント作成) に対するトレーニング セッションで始まります。セキュリティの設計に関して、「暗号化を使っているから安全」という業界の誤った考え方を払拭し、不適切なセキュリティ機能が裏目に出る場合はどんな場合か、また立案と開発プロセス全体を通じてセキュリティ保護された設計を実装する方法は何かを明確にすることが、その課題です。

バッファ オーバーラン、コード化されて格納されている機密、欠陥だらけの暗号、アクセス制御メカニズムの不備、安全性の低いファンクション コール、実質的には必要ない特権を付けてアプリケーションを実行することを義務付けるなど、トレーニングではセキュリティ面で考えられる脆弱性のカテゴリについてさまざまな角度から研究します。トレーニング チームは、サンプル コード フラグメントを使用して、問題やその解決方法に焦点を当てながら、この種の弱点を明確にあぶり出すためのテスト計画構築方法について説明します。

トレーニングの終了後、チームはオフィスへ戻り、設計、コーディング、テスト、およびドキュメント作成の視点から多面的にセキュリティに関する問題を検討し、特定します。必要なバグがあればファイルし、SWI および製品グループのメンバがこれに優先順位を割り当てます。午後のレビュー セッションでは、トレーニングの受講生が、学習した内容をすぐに応用できる場が設けてあります。

セキュリティ レビュー デイのプロセスにより、製品の問題点がかなり明らかになります。ただし、複雑なセキュリティ バグは見逃す可能性があるため、1 行ごとに順序立ててチェックします。SWI は、さらに複雑なバグを見付けるために、一度に 10 ページというペースでコードを解析するなど、非常に集中して定期的にコードの見直しを行います。

マイクロソフトのコードは、現在ほとんどが C または C++ で記述されています。これらの言語のセキュリティ問題については、よく理解されています。SWI チームは、.NET Framework を使用して Web サービスやアプリケーションを開発する場合の Webベースの弱点にも焦点を当てています。

ライブ オンライン プレゼンテーション

攻撃解析 (本書の後半参照)、コーディング プラクティス、およびセキュリティ保護されたアプリケーション構成に関する SWI のプレゼンテーションの多くは、社内ネットワークを通じてブロードキャストされます。プレゼンテーションはアーカイブ化されているため、マイクロソフトの従業員はオンデマンドでいつでも閲覧できます。

Best Practice に関するドキュメント作成

SWI が、バッファ オーバーランや ACL の不適切な使用など、安全性に欠ける設計またはコーディング プラクティスを発見すると、SWI のメンバは、直ちにその問題と根本的な解決方法について説明するドキュメントを作成します。SWI のベスト プラクティスに関するドキュメントの内容は、現在、RPC、DCOM、ActiveX、バッファ オーバーラン、暗号化、ACL、乱数などに渡っています。これらのベスト プラクティスの多くは、Microsoft Press の新しい書籍「Writing Secure Code」にまとめて発表されます。この書籍に関して詳しくは、https://www.microsoft.com/mspress/books/5612.asp をご覧ください。

MSDN および Platform SDKへセキュリティ情報を掲載

マイクロソフト プラットフォームの開発者が主として参照するのが、MSDN (msdn.microsoft.com) および Platform SDK です。SWI は、MSDN および Platform SDK にファンクション コールのセキュリティ問題を盛り込むために、ドキュメントの作成を開始しました。最初のドキュメントに関しては、最新の Platform SDK をご覧ください。

 

プロセスの改善

チームが、プロセスの初期の段階で、セキュリティについて留意するように、SWI は、機能仕様テンプレートのセキュリティに関する留意点など、多くの製品グループ内でのプロセス改善に着手しました。

SWI はまた、コードを記述する前の設計段階初期において、攻撃のモデル化手法を駆使して、セキュリティ問題の把握に努めます。チームがセキュリティ機能を誤用する恐れのあることは、経験上認識されています。例えば、直接他の手段を通じて、Web サーバーまたはデータベースに実際の攻撃がしかけられているときに、SSL を使用して、電話回線のデータを保護する場合などがそれにあたります。今まで、2 時間の攻撃解析の会議で、SWI が、製品チームに記載するよう求めた攻撃の数は、ほぼ 20~40件にも及びます。攻撃解析は、機能仕様では重要な構成部分です。通常、チームは、製品の完成に向けて、開発の重要なポイントごとに攻撃モデルに戻って、変化するセキュリティ問題に対処します。

Microsoft Security Response center (MSRC) に、セキュリティ面でバグの可能性があると連絡が届いた時点から SWI が関与を開始し、セキュリティ面における脆弱性の連鎖反応を断ち切る上で非常に重要な役割を果たします。修正案が提案される前に、SWI は、それが実際にセキュリティ面でのバグかどうかを判断し、そうであれば適切な処理が確実に実施されるよう、バグに優先順位を付けます。バグが修復され、www.microsoft.com/technet/security ( 日本サイト : www.microsoft.com/japan/technet/security) にその旨が掲載されると、SWI は問題を調査してバグの発生源、予防策、再発防止策などを決定します。この調査研究が、セキュリティの教育プロセスへと展開していきます。

SWIは、また、他のベンダ製品に関して、定期的にセキュリティ面での弱点を監視して、問題があれば、マイクロソフトの社内チームに通知します。このプロセスが、マイクロソフトの開発者を教育する際に役立ち、マイクロソフトのコードに同様の問題が発生しないよう保証します。

SWI のもう 1 つの重要な役割は、直接向かい合った話し合いや電子メールにより、現在進行形でセキュリティに関するコンサルティングを製品グループに提供することです。「このコードは安全か?」、「この種の攻撃に防御する方法は?」、「このセキュリティ面のバグは修正されたが、その修正は間違っているようだが?」「このアイディアは良くないと思うけれど、いかが?」といった質問に対して、毎日50 通以上の SWI 関連の電子メールに回答しています。SWI は日常的に利用できる貴重なリソースであると、すべての製品グループが認識しています。

 

ツール

SWI は、Microsoft Research 内部の Microsoft Programmer Productivity Research Center (MPPRC) グループと緊密に協力して、リリース前のコードのバグを発見し、除去する新しいツールへヒントを提供します。セキュリティ面の脆弱性はコードの欠陥が原因であると判明した場合は、そのコードを解析して、監査ツールにかけ、新しいコードで再現しないよう防止します。

Microsoft Research が作成したツールには、PRFfix と PREfast の 2 つのツールがあります。PREfix は、ダイナミックなソース コード点検ツールで、仮想実行時環境を構築し、実行シミュレーションを通じてエラーの可能性を特定します。PREfix には、大型のハードウェアと非常に高度な運用の専門知識が必要です。PREfast は、個人の開発者が、チェックイン前に、自作のコードを検証するのに使用する、小型の、それほど複雑でないツールです。PREfast は、操作するのに、Microsoft Visual C++ .NET からの中間出力を使用します。PREfix は、最初、Windows 2000 プロジェクトのコードの質の向上に使用されました。SWI が、以前のバグと MSRC のセキュリティ ブルティンを解析して、特定した新しいクラスのコードの欠陥は、バッファ オーバーランのケースが非常に多かったのですが、これらは、PREfix のテスト ベースに追加されました。PRFfast の製品化については、現在調査検討中です。

SWI は、また、新しい -GS フラグの設計に際し、Visual C++ .NET チームをサポートし、それが、C および C++ コードの特定クラスのバッファ オーバーランを緩和する上で有効に作用しました。PREfast、PREfix および現在進行中のセキュリティ教育と平行して、マイクロソフト コードのバッファ オーバーランが利用される機会を削減する上で、この機能が多いに役立っています。

 

テスト

SWI は、テスト プログラムにセキュリティ シナリオを組み込む方法について、開発チームをトレーニングしています。1999 年 8 月から 1999 年 10 月まで運用された win2000test.com Webサイト プロジェクトを陰で支えたのも SWI でした。テスト サイクル中システムはフルに機能し妥協することはありませんでしたが、Windows システムに関して人間サイドがいかに妥協しようとするか、多くの洞察を得ることができました。いくつかのサービス拒否のバグが特定され、修正されました。2001 年には、Windows XP で再度これを実行しました。

 

要約

SWI は、業界全般にわたりソフトウェア開発者が犯すセキュリティ面での誤りに関して徹底したナレッジ ベースを構築し、多数のプロセスおよび教育改善のためにその知識を活かして、マイクロソフト製品のセキュリティを強化しました。

Michael Howard は、Microsoft Secure Windows Initiative のセキュリティ プログラム担当マネージャです。