迷いの森の亡霊

9.ギリシャ人の贈り物


 「こんばんわっ。お待たせしましたぁ。」

勢い良くドアが開いて、入ってきたのは坂井紀子である。

「待ってたよ。で、どうだった。例のプログラム。」

と、最初に反応したのは本田だった。

「まだ、全部解析したわけじゃないんですけど、 面白い事がわかったんで、飛んで来たんですよ。」

「面白い?。」

と、今度は健が聞き返した。

「ええ、ま、面白がってちゃ、叱られるかもしれないけど、 かなりの曲者なんですよね。このプログラム。」

「もったいぶらずに教えてくれよ。」

「このプログラム自体は、大きさが16メガバイトほどあるんですけど、 たかだか、ゴキブリ一匹出すにしては大きすぎるんで、 不思議に思ってたんです。」

「それで、OSからのエントリポイントから、順にコードを追っていったら、 どうしても実行されないコードが大半だってことが分かったんです。 大半の命令コードには入り口がないんです。 つまり、コンピュータは実行しようがない処理なんですよ。」

コンピュータのハードウエアを制御して、 各種のソフトウエアが動作するための環境を作ったり、実行を管理するのが、 いわゆるOS、つまりオペレーティングシステムと呼ばれる基本的なソフトウエアである。 OSの上で動作するプログラムは、 OSによって記憶装置(メモリ)の上に読み出され、 エントリポイントと呼ばれる位置から実行を開始させられるのである。 紀子は、その実行開始点を見つけて、 そこから丹念に機械にしか理解できない暗号のような命令コードを調べていったのだった。

「間接ジャンプじゃないのか。」

と健が聞き返す。コンピュータの機械語のコードの中には、 効率よく実行させるためにいくつかのプログラムの分岐先を表にしておき、 計算でその番地を見つけてジャンプするような機構が組み込まれていることがある。 この間接ジャンプと呼ばれる機構があると、 それぞれの処理の分岐先は計算によってはじめて導き出されるため、 プログラムのコード上にはその番地が書き込まれていないのだ。

「私も最初はそう思って、テーブルがないか調べたんです。 たしかに、テーブルはあったんですが、 それを参照している部分のプログラム自体も入り口が見つからないんです。 つまり、テーブルを参照して、処理を受け渡すことが出来ないんですよ。」

「そんなバカな。」 と健。

「ほんと、そんな馬鹿なって、私も叫んじゃいましたよ。 で、困ってたら、ゼミの先生のとこの大学院生がヒントをくれたんです。 ウイルスじゃないのって。」

1980年代後半以降、パソコンが普及するに伴って、 ウイルスと呼ばれるソフトが蔓延するようになった。 パソコンで動作するソフトの一部に、 そのパソコンのOSの中に自分の処理コードを組み込むプログラムをもぐり込ませて、 どこかのパソコンで実行させたとする。 ウイルスを組み込まれたソフトは、そのパソコンのOSにとりつき、 自分を組み込んでしまう。 そして、その後、そのOSの上で別のプログラムが動くと、 今度はそのプログラムに自分自身を伝染させる。 そうして、ウイルスの複製だらけになったパソコンにあったソフトを誰かが別のパソコンに持ち込むと、 あっという間にそのパソコンもウイルスの餌食になってしまうのである。 最近でこそ、下火になったが、一時は社会問題にまでなった代物だ。

「ウイルスか、しかし、それにしても変じゃないか。 なんで、そんな無駄なコードをいっぱいぶら下げてるんだ。」

「で、そのテーブルを扱ってる部分のプログラムを追ってみたら、びっくり仰天。」

「このプログラムは、いくつかのまったく違う機能を持ったプログラムの集合体なんです。 で、そのときどきの状況によって、必要な機能をはたすプログラムに変身しちゃうんですよ。」

「なんだって。」

「エントリポイントの直後に、実際の処理プログラムに飛ぶためのジャンプ命令がおいてあるんだけど、 このプログラムは、ディスク上の自分自身のこの部分の番地を、 違う番地に書き換える機能を持ってます。 つまり、無駄に見える大半のプログラムは、実は意味のあるもので、 なんらかの条件を満たすと、プログラム自身がここを書き換えて、 まったく違うプログラムに変身してしまうんです。 だから、ゴキブリ君は、このプログラムの、 ごく一部に過ぎないんですよね。」

「なんてことだ、まさしくDNAと同じってわけか。 人間の遺伝子だって、常時働いているのはごく一部だって言うからな。」

「で、ゴキブリ以外の部分は何をしてるんだ。」

「まだ、ごく一部しか見てないんですが、 ネットワークを経由したファイル転送機能なんかも組み込まれてるみたい。」

「ファイル転送だって。いったい、何を転送しようとしてたんだ。」

「私が見つけたのは、ftp と呼ばれる手順を実行する部分だけで、 実際、何を転送しようとしているのかは、まだわかりません。」

「しかし、そんな機能まで持っているとすれば、一度、内部に入り込まれたら、 情報が外部に筒抜けになってしまう危険もあるわけだな。 で、実際それと疑わしい事態も起きているし。」

「そうですね、ファイアウォールは、外部からの攻撃には強いですが、 内部から外部へのアクセスにはきわめて寛大ですからね。」

「トロイの木馬、って大学院生が言ってました。」

トロイの木馬、古代ギリシャとトロイの戦争で、 鉄壁の城に手を焼いたギリシャ軍が、和平の贈り物と称して用意した大きな木馬。 ところが、城の中に引き入れられた木馬の腹の中には、 ギリシャの兵士が隠れていて、まんまと内側から城を攻略できたという話は聞いたことがあろう。 これと同じで、外部からのアクセスに対してチェックが厳しいコンピュータシステムに、 別のプログラムを偽装して入り込み、 内側からセキュリティーを崩壊させるようなプログラムのことを「トロイの木馬」と呼ぶのである。

「いちばん、タチの悪いウイルスだな。」

「いや、ウイルスと言うよりはワームと呼ぶべきだろう。 OSには感染せず、自分だけで増殖していくみたいだから。」

ワーム(虫)と呼ばれるプログラムはウイルス同様にコンピュータからコンピュータへと感染していくプログラムなのだが、 ウイルスと違って、他のプログラムを宿主とせず、 自分自身で増殖、感染していくものである。 80年代後半に、米国のインターネットで、 一人の大学院生が興味本位で作ったワームが大増殖し、 全米の大学や研究機関をパニックに陥れた事件は有名である。

「いずれにせよ、そんなものがうちの中で見つかったということは、 これが今回の事件にも少なからぬ関係を持つと見た方が自然だろう。」

「いったい、このプログラムはどこと通信するんだろう。 直接、プログラムを書き換えて動かしてみたら。」

「そう思ったんだけど、完全に解析出来ない限り、 学校のネットワークの中で動かすのは危険だと思ったから、まだやってないのよね。」

「ネットワークシステム部だったら大丈夫じゃないか。」

「そうですね、あそこなら実験用のネットワークや測定器を持ってますから。」

「よし、これから常務に話をして、あっちのシステムを借りられるようにしてもらおう。 お前は、このプログラムが他のシステムに残ってないか調べてくれ。 なに、大丈夫だ、俺が責任を持つ。田口君のマシンのディスクの中もな。」

本田は、そう言い残すと、慌ただしく外に 飛び出して行った。


常務以下、調査委員会の役員から承認が下りるのに、 それほどの時間は必要としなかった。 あの佐伯ですら、あっさりとこの件の調査を了承したのである。 誰しも、自分の会社から犯人が出て欲しくないという気持ちは共通していたようだ。

本田が根回しに奔走している間、健と紀子は田口のコンピュータを引っかきまわしていた。 プログラムは普通、コンピュータのハードディスク上にデータとして格納されている。 この種のプログラムは自分が存在していた痕跡を消すために、 自分自身のファイルを自ら消してしまうことが多い。 ところが、消したと言っても見かけ上のことで、 データ自体はしばらくディスク上に残っている。 ディスク内のデータを管理するのはOSだが、 OSはディスクの中のどの場所にどんなデータが格納されていて、 また、どの場所が空いているかを覚えているのである。 データが消されるとOSは、 それまでそのファイルがあると扱われていた場所に「空いている」という印をつけるだけで、 データそのものは消去しない。なぜなら、空きである以上、 いずれ、新しいデータがそこに入って、古いデータは消えてしまうので、 敢えて消すだけ無駄な処理が増えるからである。 つまり、データを消しても、しばらくの間は、 ディスク上には物理的にはデータの痕跡が残っている可能性があるのだ。 健と紀子は、ハードディスクの保守用のプログラムを使って、 直接、残っているデータを読み出していた。 たとえ、断片でも健のコンピュータで見つかったものと同じプログラムの一部が見つかれば、 田口のコンピュータにも同じプログラムが感染していたことの証明になる。

「あった、これ。」   紀子が叫んだ。

「この、ブロックのデータのパターンは、例のプログラムの一部に一致するわ。 その次のブロックも。」

「本当だ。間違いないな。」

「でも、こんなことを思いつくなんて、さすがオタクな健さん。」

「オタクは余計だ。君に言われたくはないもんだ。」

確かに、最近の技術者でこんなことを考えつくような輩はオタクと呼ばれてもしかたがないかもしれない。 それほど、ソフトウエア技術者の多くは、OSや、 与えられるインフラを盲信して仕事をしているのである。 彼ら、「普通の」エンジニアにとって、ディスクからデータを直接読み出したり、 機械語を読みとったりする人間は理解し難い存在であり、 ともすれば異教徒、背信者というような目つきで見られてしまうのである。 その茶化した表現が、いわゆる偏執的なマニアを意味する「オタク」なのだ。

「お互いさまかな。でも、健さんの影響が強いような気がするな、私の場合。」

「ともあれ、こいつにも、あれがいたことは確実だな。 となると、心配なのはサーバーだが、 データの出入りが激しいサーバーのディスクでこの方法は使えないな。 既に、他のデータで上書きされて消えてしまってるだろう。」

「でも、とりあえず、実物がいないことだけ確認できれば、 これ以上の被害はないわけだからいいんじゃないですか。」

「それもそうだな。とりあえず、調べておこう。」

サーバーのディスクには、既に痕跡は残ってはいなかった。 健は、部屋に戻った本田に状況を報告した。

「そうか、とりあえず主だった部署に、例のプログラムの情報を流しておいてくれ。 他の部署のコンピュータにも入り込んでいると大変だからな。」

「わかりました。メールで流しておきます。」

「ネットワークシステム部の協力が得られることになった。 今日は急ぎのテストがあるので、明日一日、空けてくれるそうだ。」

「そうですか。そりゃよかった。」

「今日は、もうこれくらいにして帰りたまえ。 お嬢さんも遅くなると大変だろう。」

「もう、こんな時間ですか。 ま、こいつは夜遊びが得意そうだから親もあきらめてるって噂ですけどね。」

口を尖らせる紀子を横目に健は時計を見た。 今日は早く帰るつもりが、また最終か。時計は11時を過ぎていた。 明日もまた大騒ぎだな、と健は思った。


* 続編をお楽しみに

INDEX ページへ

10.箱庭の中で

私のホームページへ


Copyright(C) 1995-96 M.Futagi All right reserved.

無断転載、引用、いかなる改編も禁じます。