@IT|@IT自分戦略研究所|QA@IT|イベントカレンダー+ログ | ||
Loading
|
|
@IT > あなたのコードは安全か? |
企画:アットマーク・アイティ
営業企画局 制作:デジタル・アドバンテージ 掲載内容有効期限:2004年7月11日 |
|
|
インターネットが、コンピューティングの可能性を大きく広げてくれたことに異論を持つ人はいないだろう。多くの果実をもたらしたインターネットは、しかし一方では、侵入や情報窃取、破壊といった脅威にコンピュータ・システムを直面させる危険をもたらした。情報セキュリティが、コンピューティグの最重要課題になっていることは周知のとおりである。 本来コンピュータ・セキュリティは、設計→開発→展開→運用管理といったITライフサイクルの各ステージで検討・実践されなければならないものだ。しかし攻撃によって直接の影響を受けるのは、ほとんどの場合最終ステージとなる運用管理フェーズであるため、これまではセキュリティ対策といえば、ファイアウォールの設置やパッチ管理など、もっぱらこのフェーズが対象になるケースが多かった。けれどもCode RedやNimda、SQL Slammerなどのコンピュータ・ワームにせよ、ILoveYouやマイドゥーム、ネットスカイなどのコンピュータ・ウイルスにせよ、攻撃の端緒を与えているのはプログラムに潜むバグ=セキュリティ・ホール(脆弱性)である。 強固な情報システムを構築するために、ITライフサイクルの上流である開発工程において、プログラム・コードのセキュリティに注意を払うのは当然のことだ。しかし残念ながら、多くの開発現場において、セキュリティが優先順位の上位にあることはまれである。 これにはいくつかの理由がある。第1に、セキュリティは生産物であるソフトウェアの「前向き」な利便性の1つではないばかりか、むしろ利便性の邪魔になることが多い。デフォルトのセキュリティが強化されたWindows Server 2003では、初期状態では多くのサービスが停止された。これなどセキュリティと利便性の関係を象徴しているといってよいだろう。 第2に、利便性を体現する機能の実装とは異なり、セキュリティへの投資と、そこから得られる見返りはいずれも計測困難で、プログラマにとっては大変退屈な作業だ。 そして第3に、セキュリティは長らく置き去りにされてきており、実現手法やノウハウの蓄積は十分ではない。つまり、セキュリティに配慮したくても、具体的に何をどうすればよいのかが分かりにくい。 それでも、プログラマには安全なコードを記述する義務がある。幸いなことに、まだわずかではあるが、頼りにできる文献もいくつか登場してきた。またマイクロソフトは、プログラマ向けの無償セキュリティ・セミナーを全国で開催中だ。プログラマとして自分自身が記述したコードのセキュリティに不安があるなら、そろそろ系統的な学習を始めてはどうだろうか。
Windows環境の開発者にとって頼りになる文献は、Microsoft Pressから発売されている『Writing Secure Code』(Michael Howrd/David LeBlanc著)である。すでに米国では、第2版である『Writing Secure Code 2』が発売されている。この本の表紙には“Required reading at Microsoft. ― Bill Gates”(マイクロソフトでは、これを読むことが必要条件である ― ビル・ゲイツ)とある。
残念ながら、最新の第2版はまだ日本語化されていないが、第1版については日経BPソフトプレスから『プログラマのためのセキュリティ対策テクニック』として邦訳版が販売されている。
この書籍は、プログラマを対象に、安全なコードを記述するために注意すべきポイントやテクニックを解説したものだが、導入部にある「セキュリティの必要性」では、なぜセキュリティが必要なのか、セキュリティの実現が困難なのはなぜか、どうすればセキュリティのための予算確保を経営陣に説得できるのか、などを読み物としてまとめている。 また巻末の付録として「セキュリティの10か条の鉄則」「設計者や開発者のいい訳集」などでは、ウィットに富んだ語り口でコンピュータ・セキュリティの現状を寸描している。これらなどは、プログラマ以外の人でも広く楽しみながらセキュリティへの理解を深めることができるだろう。 本論としては、あり得る攻撃の種類(サービス拒否、トロイの木馬など)や過去に発生した侵入の例(CodeRed、ILoveYouなど)、セキュアなソフトウェアを構築するためのプロジェクト管理方法、脅威のモデル化、より具体的な攻撃手法(バッファ・オーバーラン、SQLインジェクション、クロスサイト・スクリプティングなど)、暗号化の基礎などについて、具体的なコード例などを紹介しながら要点を解説している。また後半では、マイクロソフトの最新アプリケーション・プラットフォームである.NET Frameworkについて、コード・アクセス・セキュリティやロールベース・セキュリティ、.NET Frameworkの暗号化機能などについて解説する。 本書を読破すれば、セキュリティをソフトウェア開発の中でどう位置づけ、どう扱えばよいかという、それまではつかみ所がなかったことが明確になるだろう。マイクロソフトだけでなく、すべてのプログラマに読んでおいてもらいたい一冊である。 そうはいっても、ボリュームのある書籍をじっくり読む時間が取れないという人は、期間限定ではあるが、マイクロソフトが開催している無償のトレーニング・プログラム“Secure System Training Tour”に参加するとよいだろう。これは全国で開催中のトレーニング・プログラムで、『Writing Secure Code 2』のエキスを1日で解説するというものだ。セッションでは、セキュリティ上の弱点がどのように生まれ、それがどう攻撃されるのかなど、豊富なデモンストレーションを交えながら実践的に解説される。1日のトレーニング受講で、安全なプログラミングに必要なすべてを身に付けようというのは虫がよすぎるが、そのための手軽な第一歩とすることはできるだろう。
|
|