Silverlight をインストールするには、ここをクリックします*
Japan変更|すべてのMicrosoft のサイト
MSDN
|MSDN ライブラリ|デベロッパー センター|ダウンロード情報|開発ツール製品|コミュニティ|ご意見・ご要望|サイトマップ
MSDN Home  
MSDN Home > MSDN コミュニティ ホーム > リック サモナ 特別サイト > 園田道夫様 x リック サモナ 対談
園田 道夫 様

園田 道夫 様

独立行政法人 情報処理推進機構
セキュリティセンター
情報セキュリティ技術ラボラトリー
研究員

× ポール ビック

リック サモナ

マイクロソフト コーポレーション
アプリケーション プラットフォーム開発チーム
プロダクトマネージャ


園田氏 こんにちは。
私は、セキュリティのラボラトリーで Web サービスの脆弱性情報を受付、修正を行っていただくような調整業務や、セキュリティの啓発・教育に携わっています。
リック こんにちは。私は、リック サモナです。
マイクロソフト社のアプリケーション プラットフォーム開発チームを担当しています。開発者や組織がアプリケーション ライフサイクル全体にわたってセキュリティを確保できるようにする、というテーマに重点的に取り組んでいます。
園田氏 最近のセキュリティの話題は、ボットネット の問題や、Web アプリケーションの脆弱性があるかと思います。
セキュリティを考慮せずにアプリケーションを作りこむことが多く、開発者のセキュリティの意識が低いような気がしているのですがそのあたりはどのようにお考えですか?
リック おっしゃるとおりです。

数年前までは、セキュリティは IT 管理者の問題として捉えられていました。でも現在の傾向としては、アプリケーション開発分野における問題と考えられるようになっています。

“ セキュリティ上の脆弱性の 70% 以上は、ネットワーク レイヤではなく、アプリケーション レイヤに影響を及ぼすものです。”

ガートナー社の調査によれば、セキュリティ上の脆弱性の 70% 以上は、ネットワーク レイヤではなく、アプリケーション レイヤに影響を及ぼすものです。

組織にとって、適切なネットワークとファイアウォールを設置するのはとても重要なことですが、セキュリティを念頭においてアプリケーションを設計しなければ、セキュリティ対策は成功しないでしょう。

もうひとつ重要なのは、セキュリティがこれまで、多かれ少なかれ、ホビイストによる攻撃と結び付けられていたという点です。だいたい 15 歳くらいの若者が、面白半分で Web サイトをハッキングしていました。でも今は、犯罪的な攻撃が増加しています。金儲けが目的になっているのです。
園田氏 まさにその通りですね。
“ 世界的な犯罪組織がお金のために個人情報を狙ってきている傾向が顕著になっています。”

世界的な犯罪組織がお金のために個人情報を狙ってきている傾向が顕著になっています。日本でも SQL インジェクションのようなデータベースへの攻撃がかなり増えてきています。

ただこれは逆に言えば、脆弱性を持つアプリケーションが多く存在しているということだと思っています。
脆弱性を防ぐノウハウを持たない技術者が多く、また、啓発活動を我々がおこなっても開発の現場にはなかなか情報を届けることができず常にその点を懸念し、原因を考えています。
リック そこで我々は昨年、安全なアプリケーションの開発という点について、開発者たちがどの程度自信を持っているかを調査しました。

その結果、世界の大部分の開発者が、安全なアプリケーションを開発する能力に自信を持っていないことがわかりました。特に日本では、大いに自信を持っている開発者の割合は、わずか 1 桁、5% 程度に留まりました。

つまり問題なのは、組織が開発者に対して安全なアプリケーションを作るようにと指示しても、開発者自身がどうしたらいいのかわかっていない、という点です。この点ではトレーニングが重要になります。

それに加えて、組織が開発者にセキュリティに関する責任を与えていない、という問題もあります。
どういう点が査定に影響するのか、開発者に聞いてみてください。毎年の査定の中で、組織側がどういう点を評価しているのかというと、開発者が書いたコードの量、アプリケーションの納品の早さ、そしてアプリケーションの性能です。

セキュリティは重視されていないのです。
園田氏 セキュリティは、水や電気のようなもののように考えられていますね。
リック セキュリティが電気に似ているという点は、おもしろいと言えばおもしろいですね。

部屋に入って電気をつければ明かりが灯りますが、だれも電気技師を誉めたりはしないでしょう。でも、蛇口をひねったり、電気のスイッチをつけたりしたときに、それがうまく機能しないと、技師が文句を言われます。

ですから、開発者にすれば、セキュリティに対する責任を与えられていない限り、セキュリティを導入することにポジティブな利益を見いだせないのです。脆弱性が見つかった場合は、大抵 IT 管理者が責められます。そうでしょう? あなたの意見は?
園田氏 その通りだと思います。

また、もう 1 つの視点としては、システムの発注側が、セキュリティの確保を要求したり、そのための投資を考慮したりしていないこともあげられると思います。

リック まったくそのとおりです。より多くのユーザーがセキュリティを求め始めていますが、エンドユーザーについて言えば、セキュリティは必ずしも優先事項というわけではないかもしれません。私は開発者と話すときに、よくこんな質問をします。

「あなた方のうち、家族や友人のテクニカル サポート係になっている割合は?」

つまり、開発者が休暇で帰省したり、友人を訪ねたりしたときに、家族や友人はこう言ってくる。「コンピュータの調子が悪い。ポップアップが出てくる。」と。ありませんか?

エンドユーザーの大部分にとって、それはちょっと厄介なもの、コンピュータの動きを鈍らせるものにすぎないのです。それによって実際に引き起こされるかもしれない甚大な被害については、認識していないのです。

一般ユーザーの立場から見れば、難しすぎる、というのがその大きな理由です。Web サイトに行って、「これを実行しますか?」というポップアップが出て、「はい」か「いいえ」を聞かれたときに、一般ユーザーならどうすると思いますか?
ひたすら「はい」をクリックするでしょう。つまり、今のままでは難しすぎるのです。もっと簡単にする必要があります。
園田氏 一般ユーザーのお話がでてきたので、ここでその点についてお話したいと思います。

日本は特殊かもしれませんが、一般ユーザーがアクセスするサイトの脆弱性をチェックしようとすると法律に違反する場合があります。それは法律的な問題なので仕方がないのですが、そういうこともあって、一般ユーザーが自分でチェックするノウハウは日本ではほとんど知られていないのが現状です。

リック 一般ユーザーが自分を守るためにできることは 3 つあります。

1 つ目は、管理者としてログインしないことです。主要スパイウェア 20 種について言えば、そのどれもが、ユーザーが管理者としてログインしなければ、深刻なダメージを及ぼすことはありません。
2 つ目は、インターネットブラウザ内で状況に応じて許可レベルを設定し、悪意あるコードがコンピュータに攻撃を仕掛けるのを防ぐこと。
そして 3 つ目は、最新のアンチスパイウェアやアンチウイルスのソフトウェアを確実にインストールすることです。

一般ユーザーには、Web アプリケーションをチェックすることはできません。つまり、サーバーサイドのコードについては、一般ユーザーができることはあまりないのです。
園田氏 また、一般ユーザーのセキュリティの知識がそもそも乏しいため、開発者へのセキュリティの要求レベルが高くないわけです。そのため、開発者がセキュリティを一所懸命勉強してもなかなか認められず、独自に勉強するための労力も払えないのが日本の現状です。

ただ、事件が多く発生し、社会的にはプレッシャーは増えてきていますが、今までセキュリティを開発プロセスに組み込んできたことがないので、どこから手をつけることができればいいのかわからないのです。

従って、ただ勉強の機会や技術資料を提供するだけでなく、それらに時間を割くことができない方のためにすぐに結果が出るチェックツールなども日本では必要性が高いと思っています。
リック 要するに、セキュリティには 3 つの柱があります。

人、プロセス、そしてツール。開発者をトレーニングし、プロセスを配置し、ツールと技術でそれを補強する必要があるのです。現状では、アプリケーションをスキャンするツールさえ使っていれば完全に安全だと、多くの組織が考える傾向にあります。でも、そうではありません。ツールでプロセスを補強することはできますが、それだけでは、コードを安全にすることはできません。

とはいえ、多くの開発者がセキュリティにしかるべき注意を払っていないという点には同意します。開発者にセキュリティに関する資料を渡すだけで、彼らが時間を割いて読むでしょうか? 脅威モデルの作成に時間を費やすでしょうか?

答えは、こうです。組織がその点についてインセンティブを与えない限り、開発者のほとんどはそんなことはしないでしょう。

“ 問題の多くは、開発者と上級経営者との間で意思の疎通ができていないことから生じています。”

ですからマイクロソフトでは、二元的なアプローチをとっています。当社では安全なアプリケーションを作るための基礎的なガイダンスを開発者に提供していますが、その一方で、上級レベルの経営者とも話をして、なぜセキュリティに対する意識を高める必要があるのかを伝えています。

上級経営者の賛同がなければ、望ましい成功は得られないでしょう。問題の多くは、開発者と上級経営者との間で意思の疎通ができていないことから生じています。CIO や CSO に「あなたにとって、セキュリティはどれくらい重要ですか?」と聞けば、大抵は「極めて重要だ」と即答します。

ところが、当社の実施した調査では、開発者に「経営者にとって、セキュリティはどれくらい重要ですか?」と聞いたところ、「とても重要」と答える割合は、予想以上に低いものでした。どこかに行き違いがあるのです。CSO は「我々はセキュリティを重視している」と言うかもしれませんが、エンドサイドの開発者に言わせれば、「会社はセキュリティを重視していない。セキュリティではインセンティブは得られないし、口ではすると言っていても、トレーニングも一切やらない」となるのです。完全に行き違っているのです。
園田氏 難しい問題ですね。
リック ええ、そう簡単には解決しません。

ですから Visual Studio 2005 では、マイクロソフト社内で使っていたツールを数多く採り入れ、ツールセットとして統合された形で提供することにしました。

例えば、コード アクセス セキュリティは、管理者権限を必要としないアプリケーションの開発を可能にします。アプリケーションの最小パーミッションを計算する「Permission Calculator」というボタンも導入しました。

C# や Visual Basic でプログラミングするマネージ コード開発者には、FxCop という静的解析ツールを提供しています。これは 220 のルールを監視しますが、そのうちの 20 は、SQL インジェクションなど、セキュリティに関するものです。C++ 開発者には、バッファオーバーラン、メモリリーク、非初期化変数などを監視する PREfast を提供しています。

そして、特に興味深いのは、こうしたものをセキュリティ開発ライフサイクルに結び付ける Visual Studio Team System です。これにより、コードチェック時の静的解析ツール使用を開発者に義務付けるプロジェクトポリシーを策定することが可能になります。

このツールには、主に 2 つの利点があります。1 つ目は、脆弱性を見つけられること。2 つ目は、Visual Studio Team Systemの一環として、こうしたツールによりコードが監視されることを開発者が意識するので、初めからもっと良いコードを書くようになる、という点です。

Visual Studio Team System には徹底したレポーティング機能が組み込まれているので、どれくらいの脆弱性やバグが各開発者の責任なのか、ということまでわかるのです。ですから、開発者が正確なコードを書くようになります。それに、さらなるトレーニングが必要な場合には、各開発者のコードのクオリティに応じて、トレーニングを提供することも可能です。
園田氏 やはり、そういう機能は基本として必要だと思いますし、それを利用した開発プロセスを導入できることはいいとだと思います。

視点を変えると、顧客がこのようなツールでチェックしてくれという開発要件を発注の時点で入れるべきである、という指針があるとなおいいですね。
要件があれば受注する側がセキュリティ対応の費用を積んで要求することもできますし、そこでよいサイクルが生まれるのでないでしょうか?

リック
“ 組織は要求事項の中にセキュリティを組み入れる必要があるのです。”
その点に関しては、おもしろい表現を聞いたことがあります。

インドなどの国へソフトウェア開発を外注することに関する表現なのですが、「インドへの外注の良い点は、支払っただけのものを得られるところ。悪い点は、支払っただけのものしか得られないところ」というものです。

つまり、組織は要求事項の中にセキュリティを組み入れる必要があるのです。
園田氏 このようなことは、経営側、発注側など様々な方面へのプロモーションも必要ですね。
マイクロソフトにそこまで要求する内容ではないのかもしれませんが…
リック そうですね…。

マイクロソフトはその点について、リーダーシップを執ろうと務めています。開発ツールを持っているというだけでなく、開発者が創設した会社だということも、その理由ですね。

この問題は、エコシステム全体に関わっていると思います。あなたがおっしゃった点については、私たちも指導者たちと協力して問題解決に努めています。
園田氏 私の立場でもプロモーションしていきたいと思います。
リック 一緒にがんばりましょう。
園田氏 一方で、セキュリティに対応するということは、開発者の+αの工程が必要となり、開発現場にはそれだけ負荷がかかるという認識もあります。
リック あまりにも多くの開発者が、セキュリティは開発を阻害し、機能を損なうものだという誤解を抱いています。

私がよく引き合いに出す例に、自動車とブレーキにまつわるものがあります。私は開発者にこう聞きます。「なぜ車にはブレーキがあるのか?」すると、彼らはこう答える。「スピードを落とすため」。十分にスピードを落とせば、足を車の外に出して止められます。時速 5 キロで走っていればね。

“ 車にブレーキをつけるのは、スピードを出せるようにするためです。”

つまり、車にブレーキをつけるのは、スピードを出せるようにするためです。同じことが、セキュリティにも言えます。セキュリティを適切に導入すれば、将来的なコストや労力を削減することができます。安全なコードをきちんと書くだけでも、ユーザー インタフェイスに関する問題や、全般的な品質や信頼性に関する問題を、ライフサイクルの早い段階で排除することができるのです。

ですから、開発者に言いたいのは、セキュリティを邪魔者やよけいな時間を食うものと考えるべきではない、ということです。
園田氏 上流でセキュリティに対応できればできるほど、楽に品質を確保できますが、一方で上流での設計者もこれらの知識や関心が薄いのが日本の現状だと思っています。
リック 上流の観点から私たちが推し進めていることのひとつに、脅威のモデル化があります。

これは、コードを書く前に、アプリケーションに影響を与え得る潜在的な脅威を割り出すというものです。そうすれば、セキュリティ上の欠陥があるコードを書いてしまう可能性を、初めの段階から減らすことができます。

マイクロソフトは、特に日本において、Security Developer Day や MSDN オンライン セミナー、ウェブキャストといったいくつかのプロジェクトを実施し、私たちの役割を果たすべく努力しています。
園田氏 根本的な部分からの改善を呼びかけるのは確かに有効だと思います。
リック しかし、組織と開発者の方も、私たちが提示するアドバイスを受け入れ、それぞれの役割を果たす必要があります。それがチームワークというものです。

組織は自分の身を守ろうとします。組織の目標は、生き残ることです。

例えば、3 つの銀行があるとして、そのうちの 1 つの Web サイトがハッキングを受けたら、消費者は他の銀行に鞍替えします。
つまり、Web サイト開発者の肩には、きわめて重い責任がかかっているのです。

一般ユーザーもそれぞれの役割を果たすべきですが、一般ユーザーが情報を入力する Web サイトの安全性については、彼らに責任を負わせるべきではありません。多くのユーザーは、そうした知識を持っていません。

正直言って、安全を確認する簡単な方法は、実際に自分 で Web サイトをハッキングしてみて、可能かどうか確かめることです。でも日本では、他の国でもそうですが、それは違法です。
園田氏 マイクロソフトからベストプラクティスや脅威モデルの情報をどんどん提供されることを期待しています。今日はありがとうございました。
リック ええ、そうですね。お話できてよかったです。100% 確実な解決策などありませんが、あなた方のような組織と協力して、ハッカーを一掃できればいいですね。


Top of Page Top of Page

Microsoft