マイクロソフトでMS-IMEの開発に携わる藤村武志氏が、自らの開発プロセスにSDLを適用した体験を語った。
「セキュリティ開発ライフサイクル(SDL)を適用すると、短期的には確かに開発上のオーバーヘッドは増える。しかし、数年かけてSDLに取り組み、全プロセスに浸透させた今、オーバーヘッドは見えなくなった。むしろ、出荷後にセキュリティ問題が浮上してからばたばた対応する手間を考えると、開発の過程でつぶしておくほうがいいのでは」(マイクロソフトでMS-IMEの開発に携わる藤村武志氏)
マイクロソフトは3月2日、アプリケーション開発者を対象としたセミナー「Developer Security Day」を開催した。この中で藤村氏は、自らIMEの開発においてSDLを適用していった過程とその効果について語った。
わざわざ危険なアプリケーションを作ろうなどと考える開発者はいないはずだ。しかし、納期や工数、機能上の要件といった条件の前に、セキュリティが後手に回っているのが現状ではないだろうか。またセキュアな開発に関するノウハウもなければ、参照できるガイドラインも十分あるとはいえない。マイクロソフトでは、自ら実施したSDLというプロセスが、そうした環境を変える手助けの1つになるかもしれないという。
SDLとは名称の通り、プログラムの開発プロジェクト全体にセキュリティを反映させていく取り組みだ。藤村氏の説明によると、要件定義と設計、実装、検証、リリースおよびサポート/サービスという各フェーズに、それぞれ以下のようなセキュリティアクションを取り込んでいる。
開発のベースラインプロセス | SDLの活動 |
---|---|
要件/検証 | セキュリティトレーニング&プラン |
実装 | レビュー&テスト |
検証 | セキュリティプッシュ |
リリース | 最終レビュー |
サポート&サービス | セキュリティサービスの対応 |
まず最初に取り組むのは、メンバー全体の意識およびスキルの底上げのための教育だ。マイクロソフトの場合、その方法は単純で、メンバー全員に「セキュリティ対策テクニック」という書籍を渡し、それを読み込むようにした。その上で幾つかのトレーニングを実施したという。
また、開発初期段階でセキュリティ設計も実施する。開発要求事項とセキュリティの関係を設計段階で対応させ、「機能仕様書の中にセキュリティ項目を混ぜ込む」(藤村氏)。
ある程度、プログラムのアーキテクチャとデータフローが明らかになった段階で、次は「脅威モデル」を作成する。幾つか考えられる脅威シナリオを書き、それと照らし合わせてデータの流れを検討。問題がある場合には再度アーキテクチャの設計をやり直す。
続く実装の段階では、開発の現場で現に行われている「コードレビュー」の中に、セキュリティに関するチェックを盛り込んでいく。マイクロソフトでは、レビュワー(人間)によるコードレビューに加え、コード解析ツールを用いたレビューを実施。さらに、不適切なデータや無意味なデータをプログラムに流し込むツールを作成し「ファジーテスト」も行う。「自分がハッカーになったつもりで、セキュリティの観点からプログラムをはたいてみる」(同氏)
検証のフェーズでは、機能追加やバグ修正といった通常のタスクを停止して、集中的にセキュリティの問題のみを実施する「セキュリティプッシュ」というフェーズを挟み込む。さらに、リリース直前の最終レビュー段階で、社内、必要に応じて社外のセキュリティ専門チームによる検証を実施する。
こうした段階を経てソフトウェアを出荷すると、「次のプログラムに頭が行きがちだが、新たに見つかる脆弱性への準備や対応も考えておく必要がある」と藤村氏。脆弱性が発見された場合の対応や開発体制、顧客への対応応報などについて検討しておくべきという。
藤村氏はこのプロセスを、Windows Server 2003版のIME開発において自ら体験したが、当初はとまどうことも多かったという。
Copyright © ITmedia, Inc. All Rights Reserved.