ニュース
2004/02/25 00:53:00 更新


安全なコーディングを実現する手法は「仕様と設計、レビューのスパイラル」

RSA Conferenceの初日に行われたセッション「Effective Application of Security」では、安全なコーディングを実現するための心構えと注意点が開設された。

 ウイルスやワーム、不正侵入や情報漏えい、ID窃盗やなりすまし……セキュリティをめぐる問題は尽きないどころか、ますます深刻化しているようだ。われわれはIT業界に携わる一員として、企業の一員として、あるいは一エンドユーザーとして、この問題にどう取り組んでいけばいいのだろうか?

 その答えを探るイベントとして、2月23日から28日にかけて、米サンフランシスコのモスコーニセンターを会場に「RSA Conference 2004」が開催されている。今年で13回目を迎えるRSA Coneferenceだが、年々規模は拡大しており、今年は「暗号」「セキュリティビジネス」「ハッカーと脅威」といったテーマごとに、250近いセッションが設けられた。

 24日から始まる展示会(出展者も250社を数える)よりも一足早く、各種チュートリアルが始まっている。23日の開発者向けセッション「Effective Application of Security」では、米RSA Securityの上級エンジニアリングマネジャー、デビッド・フィンケルシュテイン氏が、安全なコーディングを実現するためのコツについて紹介した。

仕様→設計→レビュー→仕様

 企業を取り巻く脅威が日々増大していることは周知のとおりだ。特に、ネットワークが普及し、さらにはワイヤレスネットワークが登場するに従い、悪用を考える人にとっての「チャンス」「入り口」は拡大してきたとフィンケルシュテイン氏は語った。CERT/CCの統計を見ても、報告されたセキュリティインシデントや脆弱性の数はうなぎのぼりだ。

 アプリケーション開発に携わる人々にとって、次の大きなトレンドがWebサービスであることに異論はないだろう。しかしこのWebサービスも、セキュリティの観点から見れば危険極まりない。Webサービスによって「せっかくファイアウォールでふさいでいたインターネットからの攻撃のうち70%が再開されることになる」(同氏)。他にもデータベースに対するセキュリティ侵害の増加、システムの複雑化など、頭痛の種には事欠かない状況だ。

 では、この中で少しでも安全なアプリケーションを構築、開発していくにはどうしたらいいのだろうか?

 フィンケルシュテイン氏の答えは基本的なものだ。「セキュリティ上の目標を定め、それに沿って開発を行い、丹念にレビューを行う」。つまり仕様の策定とデザイン、レビューとそのフィードバックを繰り返すプロセスを通じてセキュアなアプリケーションは実現されるというわけだ。「常に、常にレビューのスパイラルを」(同氏)。ただ、この基本を実行することこそが難しいのだが。

 フィンケルシュテイン氏はまた、他にもいくつか留意すべき点を挙げた。たとえば、開発時に組み込む暗号モジュールやアルゴリズムに脆弱性が指摘されていないかどうかを調査すること、セキュリティ要求仕様を明確にまとめること、プロセスの中ではペネトレーションテストなどを通じて、そのセキュリティ機能の実効性を分析することなどだ。

 コンパイラの警告レベルを適切なものとし、ネットワーク上で入手できるさまざまなツールを活用するのも有効という。エンコーディングや暗号、PKI、SSLやIPSecといった技術やプロトコルについての理解を深めておくことも重要だ。もちろん、これらすべてを満たしたからといって安全なアプリケーションができるわけではないが、安全なアプリケーションを実現するには一連の要素が不可欠だという。

あらゆる可能性を考慮すべき

 フィンケルシュテイン氏はさらに、いくつか典型的な脆弱性を挙げて、それを防ぐためのアプローチを紹介した。その心構えはこうだ。「外部にあるものはすべて悪意を抱いており、“あり得ない”エラーは最悪のタイミングで起こる。とにかく偏執狂的なくらいにこだわり、考え抜くべきだ」(同氏)。

 最も典型的なバッファオーバーフローにしても、構文を若干変え、レビューやテスト繰り返すことによって、問題はかなり回避できる。同様にメモリ管理やパラメータチェック、競合や例外処理、あるいはパスワードに代表される秘密情報の格納場所についても注意が必要だ。

 いずれにしても、安全なコーディングには、コードの見直しをはじめとする「努力が必要だ」(同氏)。しかしそれを実行できれば、アプリケーションをよりセキュアで堅牢なものにすることができる。

 純粋に開発に要するコストだけでなく、運用コストや万一脆弱性が発見されたときの修正、再リリースに要するコスト――“攻撃コスト”までも織り込んで考えれば、その努力は十分に見合うのではないだろうか。

 なお、会場からは「一連の対処を行ったとしてもクロスサイトスクリプティングやhiddenタグの書き換えといった、Webアプリケーションのセキュリティ問題には対応できないのではないか」という質問があった。これに対しフィンケルシュテイン氏は、その指摘はもっともだと述べた上で、「Webアプリケーションの設計者は、ビジネスロジックのエキスパートかもしれないが、必ずしもセキュリティのエキスパートではない」と答えている。一方で、セッションIDの適切な取り扱いなど、Webアプリケーションに起因する問題が認識され始めていることにも触れ、この分野でも安全な開発手法とそれを理解した開発者が必要だと語った。

関連リンク
▼RSA Conference 2004
▼RSA Security

[高橋睦美,ITmedia]

Copyright © ITmedia, Inc. All Rights Reserved.