自分が読んだ本にあった話を紹介。長文です(苦笑)。 [[[[[[[ RobinとTuck ]]]]]]] 1970年代の中頃、モトローラ社の何人かのシステムサポート担当者が、 Xerox CP-Vタイムシェアリングシステムののシステムセキュリティの裏をかく 比較的単純な方法を発見した。簡単なプログラミングテクニックを駆使す れば、ユーザープログラムがシステムをだましてプログラムの一部を「マス ターモード」(スーパーバイザー状態)で実行できるようになるのだ。このモー ドでは、メモリ保護が適用されないので、「特権レベル」バイト(普通は書き込 み保護されている)に大きな値を設定できるようになり、その結果、ファイ ル管理システム内のすべてのレベルのセキュリティをバイパスし、システム モニタにパッチを当てたりいろいろ面白いことができるようになる。つまり、 納屋の扉が大きく開いてしまうのだ。当然、モトローラ社はこの問題を、公 式の「レベル1 SIDR」(「昨日直す必要がある」ほどの緊急性を示すバグレ ポート)によって Xeroxに報告した。個々のSIDRのテキストは多くの人間 の目に触れるおそれのあるデータベースに入れられるので、モトローラ社は 望ましい手順にしたがった。この問題を「セキュリティSIDR」としてだけ報 告し、必要な資料と再現方法などをすべて別に添付したのだ。 ところが Xeroxの CP-Vの担当は何もしなかった。問題の深刻さを理解 しなかったのかも知れないし、正式なパッチを開発して配布するのに必要な オペレーティングシステム要員を確保できなかったのかも知れない。 数ヶ月が過ぎた。モトローラ社の連中は Xeroxのフィールドサポート担当 者をさんざんつついたが、なしのつぶてだった。そこで彼らはとうとう直接 行動に出ることにし、システムを破るのがどれほど簡単で、セキュリティ機 構をどれほど徹底的に出し抜けるかを Xeroxの連中に見せつけてやること にしたのだ。 彼らはオペレーティングシステムのコードを解析し、極めて邪悪なパッチを 書き上げた。そしてこのパッチを "Robin Hood" と"Friar Tuck"という名 前の1組のプログラムを組み込んだ。Robin Hoodと Friar Tuckは「ゴー ストジョブ」( Unix用語でいうデーモン)として動くように設計されてお り、例の抜け道によってシステムセキュリティの裏をかいて必要なパッチを 施すと、システムオペレータ(要するにスーパーユーザー)が自分たちを終 了させないようにするために、お互いの状態を監視するようになっている。 あるうららかな日に、El Segundoにあるメイン CP-Vソフトウェア開発 システムのシステムオペレータは数々の怪奇現象に度肝を抜かれた。次のよ うな現象が起こったのだ。 ●テープドライブが作業の途中でテープを巻き戻し、ディスマウントしてし まう。 ●ディスクドライブが床の上を歩き出しそうなくらいに激しく前後にシーク する。 ●パンチカード出力装置がときどき勝手に動き始めてレースカード(lace card)を打ち出す。たいていこれでパンチが詰まってしまう。 ●コンソールに、Robin Hoodから Friar Tuckへの(あるいはその逆の) 悪口雑言が表示される。 ●Xeroxのカードリーダには出力スタッカーが2つあり、スタッカーAに 排出するかBに排出するか指示できるし、あるいはAに排出し、読み 取れなかったカードはBに排出するようにも指示できる。しかし、ゴースト 当てられたパッチのせいで、カードリーダのドライバにコードが追加され、 カードを読んだら2つのスタッカーに交互にはじき出すようにされてしまっ た。その結果、カードの束は読まれてから半分ずつの山に吐き出され、オ ペレータが手で並べ直さなければならない羽目になった。 当然、オペレータはオペレーティングシステム開発者に助けを求めた。彼らは 悪さをするゴーストジョブが動いているのを発見すると、そいつらを殺した…… つもりだったのだが、そこでまた仰天する事態が起こる。Robin Hoodを殺すと、 次のようなイベントが発生したのだ。 !X id1 id1: Friar Tuck... I am under attack! Pray save me! (修道士タックよ... やられそうだ! お助けを!) id1: Off (aborted) id2: Fear not, friend Robin! I shall rout the Sheriff of Nottingham's man! (心配するなロビン! ノッティンガムの代官の手下どもなぞ打ち倒してく れる!) id1: Thank you, my good fellow! (感謝するよ、タック!) どちらのゴーストジョブも相手が殺されたのを感知して、殺されたプログラム の新しいコピーを数ミリ秒以内で起動するのだ。ゴーストを両方ともやっつける には、同時に殺す(これは非常に難しい)か、システムをわざとクラッシュさせ るしかない。 結局システムプログラマは後者の手段を選んだ−−ところがシステムをリブー トすると、あの悪党どもがまた出てくるではないか。やがて、この2つのプログ ラムはブート時OSイメージ(UNIXでいうカーネルファイル)にパッチを当て ており、ブート時に起動されるプログラムのリストに自分自身を加えているのが 判明した。Robin Hoodと Friar Tuckのゴーストは、システム担当者がシステ ムをきれいなブートテープからリブートし、モニタをインストールし直してやっ と退治できた。その後間もなく、Xeroxはこの問題に対処するパッチをリリース したのだった。 Xeroxはモトローラ社のお偉い方に対し、2人の社員のいたずらについて正式に 抗議したらしい。だが、どちらの社員も重い処分が下されたという記録はない。 Fin.