Gartner Column:第20回 マイクロソフトのセキュリティに対する考え方は根本的に間違っていないか?

【国内記事】 2001.10.29

 相次ぐセキュリティ・ホールの発覚により,Windows NT/2000環境のセキュリティに関して不安を抱いている人は多いはずだ。マイクロソフトがセキュリティに対する考え方を根本的に変えない限り,この不安は払拭されないと思う。

 およそ7年の歴史の後,Windowsサーバ(ここでは,NTと2000を総称してこう呼ぶ)のスケーラビリティと信頼性は,ほぼ合格点に達したと言えそうだ。SAP R/3などのエンタープライズアプリケーションの展開では,1000同時並行ユーザーをサポートできる大規模な事例が出てきている。また,信頼性の点でも,依然としてUNIXサーバとのギャップはあるものの,Windows 2000の登場からは,ユーザーの満足度もかなり向上しているようだ。

「マイクロソフト製品はバージョン3になって初めて使い物になる」とよく言われるが,これは,Windowsサーバについても当てはまるだろう(Windows 2000=NTバージョン5なのだが,何故かNTはバージョン3.1から始まっているため,Windows 2000が3番目のメジャーバージョンになる)。

 しかし,セキュリティに関して,Windowsサーバの成績は,時と共に下降しているとしか思えない。既にご存じのように,Code RedやNimdaなどWindowsサーバ+IIS環境のセキュリティホールを突いたワームやウィルスが次から次へと登場している。今は,単にサービス妨害に過ぎない被害も,情報の盗難や改ざんなど,より深刻なものになる可能性もある。

「Windowsサーバが最も売れているプラットフォームであるから特に攻撃されやすい」というマイクロソフト側の反論は詭弁に過ぎない。Webサーバとして,Windowsの2倍以上普及しているApacheの環境では,セキュリティ問題は皆無というわけではないにせよ,これほどひどくはないからである。

 このようなマイクロソフト製品のセキュリティ問題は,同社のカルチャーから生じているような気がしてならない。

 10年以上も前の話だが,ビル・ゲイツ氏は講演の中でこう述べた。

「本当の良質なソフトは,少人数で作らなければならない。実際,Excelのプログラマーは10人以下だ」

 Windows 3.1も登場する前,Excelがマッキントッシュ専用アプリケーションだったころの話である。

 今,Windows 2000やIISを数人のプログラマーで開発していることはないが,マイクロソフトの開発に対するこの基本的スタンスは変わってないように思える。つまり,比較的少数の開発者と数多くのテスターを使ったテスト重視型の開発ということだ。

 このような開発方法は,機能の豊富なソフトウェアを迅速に開発するには効果が高いだろう。ソフトウェア開発の最大のボトルネックとなりがちな要員間のコミュニケーションを最小化できるからだ。また,性能向上のためのチューニングにおいても有利だろう。チューニング作業の成功は少数のスーパープログラマーの技量に負うことが多いからだ。

 しかし,セキュリティを向上させるためにはこのような開発体制は向いているとは言えない。セキュリティ向上のためには,厳密な設計レビューやコードインスペクションなどのプロセスが必須となるからである。

 手早く作ってテストする,問題があればまた手早く直すという発想では,セキュリティを向上させることは難しい。セキュリティとはソフトウェアの基本設計の時点で組み込んでおくべき要素であり,後の開発行程で付け加えるべきものではないからだ。

 そもそも,文書やメールを開いただけで自動的にマクロが実行されてしまう,Webページの閲覧によりバイナリーコードがダウンロードされ実行されてしまう(邪悪なコードを防ぐのはひとつのダイアログだけであり,多くのPC初心者は深く考えもせずにOKを押してしまうだろう)というような設計は,PCが「パーソナル」であった時代には便利であっても,悪意もありスキルもある人々が少なからず接続されているインターネットにおいては適切な設計とは言えないだろう。

 そして,これもご存知のように,マイクロソフトは同社のWebサイトにおいてセキュリティ・ホールを悪用するコードの公開を止めるよう求めている。このように,セキュリティホールの詳細を隠すことでセキュリティを高めようとする方法を「security through obscurity」と呼ぶが,これはソフトウェアの世界のセキュリティ確保の方法としては適切とは言えない。

 悪意とスキルを持ったユーザーは,結局セキュリティホールを見つけ出してしまい,情報の隠蔽によって,リスクに気付かず被害を被るのは一般のユーザーになってしまうからだ。例え内部情報が100%知られていたとしても,堅牢なコードを作ることがソフトウェアベンダーの使命である。

 LinuxやApacheなどのオープンソースソフトウェア(OSS)は,ソースが公開されている。このため,セキュリティホールが存在した場合には,それが不特定多数の目に触れることになってしまうが,そのせいでセキュリティは悪化したかと言えば,事実は全く逆である。OSS環境では,多くの人がコードを精査できる結果,セキュリティホールが早期に修正されることが多いのである。

 これらの状況を鑑み,ガートナーはマイクロソフトがセキュリティの課題を克服するためには時間を要すると判断し,クライアントに対してIISからApacheやiPlanetなど,ほかのWebサーバソフトウェアへの移行を検討するよう勧告するレポートを発行した。

 これを扱った記事によると,あたかもガートナーが無条件にIISから他のWebサーバへの移行を推奨しているかのように見えるが,これは正確ではない。実際には,パッチを当て続けるための人的負荷,IISと他のマイクロソフト製品群との統合状況などを見て,TCOに優位性があるのならば切り替えを行うべきと言っているのである。

 なお,ここで言っているのはIISからほかのWebサーバへの切り替えであり,WindowsサーバからUNIX/Linuxへの切り替えを奨励しているわけではない。

 もちろん,ユーザーは,ApacheやiPlanetに切り替えれば,それだけでセキュリティ上の脅威から解放されるわけではない。セキュリティ情報に目を光らせ,必要なパッチ当て作業を行っていかなければならないのは,どのプラットフォームを使用していても同じである。セキュリティの確保は,ベンダーとユーザーが共に痛みを分かちあって行うべきものなのだ。

 ただし,マイクロソフトの場合には,ユーザーにより多くの痛みを強制している。ここが問題だとガートナーは言いたいのだ。

[栗原潔ガートナージャパン]