(Paul Thurrott)

 2月12日木曜日の朝のことだった。私はMicrosoftにいる友人から,「これ見たか?」という興奮したインスタント・メッセージを受け取った。彼はそれから私に「winver.c 」という名前のファイルを送ってくれた。

私はそれを見た
 伝えられるところによれば,それはWindows 2000のソース・コードの一部である(既報)。Windows NTのものと同様に,Windows 2000のソース・コードがインターネットに漏れていたと彼はいった。私が見たファイルはC言語で書かれた短いプログラムのソース・コードをリストしたものだった。それには「Windows version program」と書かれており,toddlaという名前のだれかが,1989年3月に書いたものだ。ほかにもいくつかの他のC言語のソース・コードのリストが外部に流された。うわさでは,NTの設計者であるDavid Cutlerによって書かれたものもあるという。

オープン・ソースと意味が違う
MSのソース・コード開示

 Microsoftの最高の資産が,公に漏えいされたことに,私はそれほど驚かなかった。同社は,Linuxのオープン・ソースの脅威への対抗策「Shared Sourceプログラム」を通じて,最近は社外の多くの人々にそのソース・コードを公開していたからだ。

 最初にShared Sourceプログラムを発表してから,Microsoftは定期的にそのプログラムの適用範囲を拡張しており,今や多くの政府,法人,教育機関,ハードウエアとソフトウエアの開発パートナ,さらにはNDA(機密保持契約)に署名した個人も,種々のWindowsバージョンのソース・コードに対する一定の権限のアクセスを与えられていた。このソフトウエア界の巨人は,Microsoft Officeについても,そのソース・コードの開示を検討していたことを認めている。

 Microsoftは様々な理由で,他の機関と個人にその貴重なソース・コードを配布している。歴史的には,同社のハードウエアとソフトウエアのパートナが,ソース・コードへのアクセスを認められていた。彼らパートナの開発する製品が,Microsoftのシステムとともにシームレスに作動するよう保証するためのものだ。

 Shared Sourceプログラムでは,その理由はちょっと違うものになった。Microsoftがそのソース・コードをオープンにする理由の1つは,Linuxや他のオープンソース・ソリューションからの挑戦を払いのけるためだ。ましてや,Linuxがユーザーにソース・コードの変更を認めているのとは事情が異なる。Microsoftは,Shared SourceパートナにWindowsのソース・コードを改変させて,パートナ独自の修正版Windowsを作らせるつもりはない。

 その代わりにソース・コードへのアクセスは,疑り深い各国政府に対して,Microsoftがバックドア(特に米国政府が利用できるバックドア)をそのソフトウエアの中に仕掛けていないことを証明するために,必要とする証拠を提供するものだ。同社が最近タイでやったように,必要とされればMicrosoftは特別に調整されたバージョンのWindowsを各国政府に提供するという考えに対しても,「オープンである」(受け入れる)ことを示した。ただし,必要がある場合には,Microsoft社内だけで開発するということだ。

リークは全体の一部に過ぎない
 さて今回のリークについて,これまで分かったことは以下の通りだ。初期の報告とは全く違い,Windows 2000 Service Pack 1(SP1)とNT 4.0のソース・コードのほんの小さな一部だけが漏えいした。どのくらいのコードが漏れたかは,専門家の間でも見解が異なる。私は1%から15%の範囲だと見ている。ともかくそのコードを使って動作可能なWindowsをビルドすることは多分,不可能だろう。流出したWindows 2000のソース・コードを分析して,本物かどうかを確認するために私も入手したが,そもそもNTのソース・コードは見たことはない。私は分析を完了した後でそのソース・コードのコピーは破棄するつもりで,もちろんその主要部分を公開する気はない。

 今回の漏えいはMainsoftというソフトウエア会社が源である可能性が最も高い。つまり漏えいは,Shared Sourceプログラムに関係なかったことになる。Mainsoftは何年間もWindowsのソース・コードへのアクセスを許されていた。『Windows &.NET Magazine UPDATE』(『日経Windowsプロ』の提携誌が発行するメール・マガジン)の昔からの読者は,私の2000年8月のすっぱ抜きのニュースを思い出すかもしれない。Microsoftは,OfficeとInternet Explorer(IE)のLinux版の可能性を調査するために同社を雇ったのだが,その情報を統合ソフトウエア開発の目的に使っている。

 私が見た流出したソース・コードは,とりわけ重要なWindows Explorerシェルのコードを含んでいた。他にも,Microsoftの開発者に対して,以前のIE 4.0 Windowsシェルのコードを当時最新だったIEの統合化シェルに移植する方法を示した面白いドキュメントもあった。

 そのコードは147Mバイトのスペースを占め,ほとんどがCやC++,それにアセンブリのソース・ファイル,さらにCやC++のヘッダー・ファイルである1万2900のファイルからなる。陰謀説が好きな人には申し訳ないが,このコードには,Microsoftが自分のシステムをもっと改良するために,UNIXやLinuxその他のソースからソース・コードを盗んだという証拠は何も含まれていないようだ。オープン・ソース信者たちは,そんな証拠を見つけるためだけに,その週末を費やして,そのコードを徹底的に調べたことだろう。

本当の問題点は,コードが後から修正されていくこと
 技術的に見るとそのソース・コードはきれいでうまくコードされているが,役に立つコメントがかなり欠けている。こういうコメントは,時々罵倒したり悪口をいったりしているだけのこともあるが(大抵はMicrosoft自身の製品を指している),いくつかの点ではとても率直でもある。しかし,本当に浮かび上がるのは,Microsoftが1つのアプリケーションの特性に配慮するために,どのくらい頻繁にマイナーなコーディングの変更を追加しなければならないかということである。

 このようなマイナーなプログラム変更は,漏えいされたコードのコメントの中で「ハック」と呼ばれている。大抵はサード・パーティのアプリケーション向けのものだ。例えば,バグや古い機能が削除された後に,それに依存していたサード・パーティ製アプリケーションが,削除後も動作するように施したものだ。これはつまり,パートナの製品がWindowsと一緒に動作することを保証するために,Microsoftが自分のやり方から逸脱したよい例だ。同社はこのような作業によって,決して大きな信頼を受けたわけではない。

 ソース・コードの漏えいが最初に報告された時,セキュリティの専門家たちはそれがMicrosoftへの信頼が下がり,ハッカーがそのWindowsのソース・コードを見て発見した知識を利用して,新しいソフト破りの手口を作り出すことになりかねないといった。しかし,私が調べた範囲では,漏えいされたソースの中には,ネットワーク処理やセキュリティに関するコードはほとんど含まれていない。そのコードはソース・コード・ベース全体のほんの小さな一部だけだったので,そこから完全なOSを作り上げたり,系統だった欠陥を見つけたり,複雑なインターネット処理を探し出したりするのは不可能だろう。

Windows 2000よりもWindows 2003/XPがよい
 私が思うに技術的な見地からは,少なくともしばらくは,Windowsのソース・コードの漏えいが,同社のソース・コード開示の方針に影響を与えることはないだろう。議論はあるけれども読者の方々は,今回の一件とは直接の関係はないが,Windows 2000よりもWindows Server 2003やWindows XPを使うほうがずっとよいだろう。

 実際のところ,Microsoftは最近Windows Server 2003とWindows XPを,セキュリティ上の理由でアップグレードすると強調しているので,Windows 2000を将来十分にサポートする同社の計画には疑問が残った。例えば,2004年後半に予定しているサービス・パックのアップデートで,さらに強化された「Windows Firewall」を搭載する予定だ。そして,Windows Server 2003は役割ベースの「Security Configuration Wizard」を搭載する。

Windows 2000向けにもセキュリティ強化策が練られている
 Windows 2000ユーザーに対して,こうした機能強化を提供する件について,Microsoftは多くを語っていない。同社は年内導入予定のWindows 2000向けの様々なセキュリティ改善策を,まもなく明らかにすると,私は聞いている。

 私はこれまで一般大衆が沈黙していることに少し不安を覚える。さらに,Windows 2000のソース・コードの漏えいが,Windows 2000のセキュリティ強化策にどんな影響を与えることになるかが心配である。Microsoftは数年前からそうすべきだったのだが,「Windows 2000を重視しないという方針」を正当化するために,今回の話を利用するのを見る羽目になるのはつらいことだ。