セキュリティは設計時から考慮すべき、Microsoftがデベロッパーに呼びかけ

米Microsoftのセキュリティアーキテクト、デビッド・ルブラン氏は「アプリケーション設計時からセキュリティを組み込む必要がある」と述べた。

» 2006年03月03日 13時32分 公開
[高橋睦美,ITmedia]

 「セキュリティは最初からデザインに組み込んでいかなければならない。後からセキュリティを追加しても、うまく機能しない」――米Microsoftのセキュリティアーキテクト、デビッド・ルブラン氏は3月2日に開催されたプレスラウンドテーブルにおいてこのように語った。

 ルブラン氏が来日したのは、マイクロソフトが同日開催したデベロッパー向けのイベント「Developer Security Day」における講演のためだ。同氏は、Microsoft社内の開発リファレンスともなっている「Writing Secure Code」の筆者の一人である。

 ルブラン氏によると、セキュリティバグの50%は「デザイン上の失敗やミス」に起因する。誤って設計されたものを後から手直ししようとしても、多くのコストや手間が掛かってしまう。「したがって、初めからセキュリティを組み込んで設計することが重要だ」(同氏)

ルブラン氏 米Microsoftのセキュリティアーキテクト、デビッド・ルブラン氏

 ルブラン氏はさらに、セキュリティは信頼性と同様にアプリケーション開発時に求められる基本的な事項であり、開発者にとって特別な問題ではないと述べた。「専門家に任せる特別なことだという意見もあるが、それは誤解。『どのくらい安定したコードを書けばいいのか』というのと同じように、セキュリティは、専門家やセキュリティ担当者の問題ではなく、開発者すべての問題だ」(同氏)

アプリケーションがターゲットに

 たびたび報じられた通り、2005年はSQLインジェクションに代表されるWebアプリケーションをターゲットとする攻撃が増加した一年だった。

 ラックの丸山司郎氏によると「2004年はほとんど報告されなかったSQLインジェクションやアプリケーション関連の攻撃が、2005年はそれぞれ31%、16%を占めるに至った。OSやミドルウェアの脆弱性が減り、攻撃の入り口がなくなるにつれて、今度はアプリケーションが狙われるようになっている」(同氏)

 しかしながら、いまだに多くのシステムが脆弱なままなのが事実だという。例えば同社が実施したシステム検査では、多くのWebアプリケーションの脆弱性が発見された。セッション管理に関連する脆弱性が存在するのは59%、仕様上の問題は52%、インジェクション関連も39%のシステムに存在したという。

 もちろん、Webアプリケーションファイアウォールのような対策製品もあるが、「これらはあくまでツール」と丸山氏。アプリケーション脆弱性をなくし、セキュリティを高めていくには「作る人がどうやって安全なシステムを作るかを理解し、実装しなければならない」(同氏)と述べた。

プロセスとツール、両輪での対応

 Microsoftは2002年1月に提唱した「Trustworthy Computing」(信頼できるコンピューティング)の一環として、自身のソフトウェア開発プロセスを改善し、セキュリティ開発ライフサイクル(SDL)としてまとめてきた。要件定義と設計、実装、検証(テスト)からリリース以後のサポートにいたるまで、あらゆるステップにセキュリティを反映させていくというのがその趣旨だ。

 数年にわたってこうした取り組みを続けてきた結果、「明らかにセキュアなプログラムになった」と、MS-IMEの開発に携わるマイクロソフトの藤村武志氏は述べた。また副次的な効果として、ソースコードのチェックに力を注いだ結果、プログラムの安定性も増した。何より、開発に関わるメンバーのセキュリティ意識が格段に向上したことが大きいという。

 SDLがプロセスをカバーする一方、ツール面では、昨年リリースされた開発環境「Visual Studio 2005」がある。三井物産セキュアディレクション(MBSD)の国分裕氏によると、Visual Studio 2005には、安全なコードを開発するためにいくつかの機能が搭載されている。

 まず、Visual Studio 2005自体が管理者権限なしで動作するようになったほか、コードのチェック/デバッグ機能全般が強化された。

 例えばマネージコードについては「コード分析機能により、.NET Frameworkのガイドラインに沿ってコードをチェックし、SQLインジェクションなども発見できる」(同氏)という。アンマネージコードについてもバッファオーバーフローのチェックが可能なほか、Webアプリケーションについては、テスト機能によって開発者自らパラメータ入力テストを行えるようになった。

 「アプリケーションが大きくなればなるほどテストも大変になるが、ツールを使って機械的に実行することにより、全体を通して一定のテストを実施できる」(国分氏)。

 国分氏はさらに「どういったパラメータが送受信されるかを把握しながらWebテストを進めることにより、バグが減ってくる。バグが減ってくると自ずとコードはセキュアになる」とも述べている。

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ