グラフィカルユーザインターフェースが潜在的にセキュリティ上の深刻な 脆弱さを持つと言うと奇妙に思われるかもしれません。だから手始めに、 X ウィンドウがどのように動作しているかを観察し、どのような問題があ るかを検証していきましょう。
X ウィンドウの最下層レベルは、実は、通信プロトコルなのです。これは X プロトコルという分かり易い名前で呼ばれています。このプロトコルは、 一台のコンピュータの内部で使用されることもあれば、ネットワークを通 じて複数のコンピュータで使用されることもあります。それは、特定のオ ペレーティングシステムに縛られたものではなく、様々なプラットフォー ムで利用できます。また、X ウィンドウは、ネットワーク通信モデルとし てクライアント・サーバモデルを使っています。このモデルを使うことで、 ユーザは、ある場所でプログラムを実行しつつ、それを別の場所から制御 するということが可能になります。
一般的なクライアント・サーバの慣習とは違い、ユーザは、実際には、X サーバ上で直に作業をしています。スクリーン・キーボード・マウスの機 能を提供しているのは、X サーバなのです。この場合にもそれをサーバと 呼ぶのは、X サーバがクライアントに対するインプットを生成し、クライ アントからのアウトプットを管理するものだからです。ここで X クライ アントとは、xterm や emacs, xclock といったア プリケーションのことです。これらが X サーバからのインプットを受け 取って処理した上で、アウトプットを X サーバに戻しています。
[訳注:文章だけでは分かりにくいので、絵を書きました。
___________ /__________/| |;--------;|| +-----------+ インプット +--------------+ ||スク ||| <-管- | | ---------> | | || リーン||| | | | | ||________||| <- - | X サーバ | |X クライアント| [___ooo____]/ | |アウトプット| | _%_ <-理- | | <--------- | | _____%_____ //// +-----------+ +--------------+ /::::::::::/ /__/ xterm, emacs, xclock 等 *----------* マウス キーボード 物理的なデバイス <--- | ---> プロセス |
]
ほとんどの場合、サーバとクライアントは同じコンピュータ (ホスト) 上 で動作します。しかし X プロトコルは柔軟性に富んだもので、多くの異 なる構成が可能です。実際に、X 端末はスクリーン・キーボード・マウス から成り、コンピュータらしい能力はありません。これは、他のシステム 上で動作しているクライアントから来る X プロトコルのメッセージを処 理することしかできません。サーバがあるホスト上で現在稼働している場 合であっても、クライアントはそれとは離れたホスト - たとえそのホス トが別のビルや州に置かれていたとしても - の上で実行するのが望まし いことがあるからです。
それで、これがコンピュータのセキュリティとどういう関係があるのでしょ うか?サーバ上で実行が可能なクライアントというのは、注意深く制御さ れるべきです。複数のクライアントが同じサーバ上で動作しているわけな ので、それらクライアント間通信には、注意深い制御が不可欠です。ある クライアントが別のクライアントに情報を送れたり、あるクライアントが 別のクライアントの大事な情報を捕捉できるなら、そのシステムは脆弱な 可能性があります。