ソースコードをめぐる戦い(2/3 ページ)

» 2005年07月04日 23時03分 公開
[IDG Japan]
IDG

 オープンソースソフトウェアの支持者の中には、オープンソースは元来、クローズドソースのプロプライエタリソフトウェアよりもセキュアだと主張する人もいる。その根拠となるのが「Many Eyes」理論だ。これは、多くの目(Many Eyes)がコードを監視しているため、脆弱性を素早く発見・修正し、その修正を配布することができるという考え方だ。

 この理論が当てはまることもあるが、そうでない場合のほうが多い。ソースコードを容易に入手できても、監視が行われていないこともある。監視している人がきちんとした訓練を受けていないこともある。それに、敵の目もコードを監視しているのだ。

Many Eyes理論の欠陥

 Many Eyes理論の最大の欠陥の1つが1996年2月に明らかになった。パーデュー大学の研究者らが、Kerberosバージョン4の乱数発生機能に深刻なバグを発見した。

 Kerberos V4システムはMIT(マサチューセッツ工科大学)で開発され、ソースコードの形で数十社の企業に配布された。これらの企業はいずれも、コードの内容を見もしないでそれを自社製品に組み込んでいた。

 同大学の研究者たちは、プログラムにバグが含まれてから10年近くたって発見された脆弱性を利用して、わずか数秒でKerberosキーを作り出し、Kerberosで保護されたシステムに侵入することができたという。パッチは早急に作成・配布された――オープンソースのアドバンテージの1つは、クローズドプログラム用のフィックスと比べてセキュリティフィックスを配布・インストールしやすいということだ。

 しかし10年近くにわたり、このセキュリティの欠陥を知っていた人ならだれでも、Kerberosで保護されたシステムにインターネット経由で侵入することができたのだ。

 Kerberosの脆弱性は偶然によるものだった。しかしIT戦士たちは、悪い奴がLinuxやApacheの開発チームに加わり、巧妙な欠陥(それに付け込むノウハウを持った人間だけが利用できる欠陥)が含まれるソフトウェアを寄贈するのではないかと心配している。

 冒頭のLinuxへの侵入の場合、悪意を持った攻撃者ではなく、Linux開発チームの中で信頼されているメンバーによってソースコードの中にひそかに仕込まれたコードであったとしたら、それが発見されたかどうか疑問だ。

 だがオープンソースソフトウェアをお払い箱にする必要はない。Microsoft Windowsを使っている人ならだれでも知っているように、遙かに深刻なセキュリティ問題は、商用ソフトウェア製品で起きているのだ。

 それだけでなく、驚くほど多数のいわゆる「イースターエッグ」(訳注:隠れコマンドの一種)が商用プログラムの中にひそかに埋め込まれている。これは、Microsoftのプログラムマネジャーでさえも、プログラマーたちを完全に掌握できていないことを示している。

 例えば、「Microsoft Excel 2000」では、プログラムの内部にビデオゲームが丸ごと隠されているのだ。Googleで検索すれば、このゲームの遊び方を説明したページが見つかるはずだ。

オープンソースのセキュリティを高めるツール

 オープンソースソフトウェアのセキュリティを高めるツールとしては、バージニア州マクリーンにあるSecure Softwareが開発した「CodeAssure」や、マサチューセッツ州ウォルサムにあるOunce Labsの「Prexis」などがある。どちらのツールも、C/C++またはJavaで記述された大規模アプリケーションを解析し、理論上、ハッカーが利用できる可能性のある広範なバグを検出する機能を備えている。

 こういったバグの多くは、単純なコーディングミスに起因する。設計上の決定に起因するバグもある。また、意図的に仕込まれたバグもある。

 結局、悪意を持った人間がプログラムにバックドアを仕込もうとする場合、意図的な攻撃ではなくプログラム上のミスであるかのように、そのコードを見せかけるのが最も安全な方法なのだ。特に、その悪党がプログラミングチームの一員である場合はなおさらそうだ。

Copyright(C) IDG Japan, Inc. All Rights Reserved.

注目のテーマ