2. X ウィンドウはどのように動作するのか

グラフィカルユーザインターフェースが潜在的にセキュリティ上の深刻な 脆弱さを持つと言うと奇妙に思われるかもしれません。だから手始めに、 X ウィンドウがどのように動作しているかを観察し、どのような問題があ るかを検証していきましょう。

X ウィンドウの最下層レベルは、実は、通信プロトコルなのです。これは X プロトコルという分かり易い名前で呼ばれています。このプロトコルは、 一台のコンピュータの内部で使用されることもあれば、ネットワークを通 じて複数のコンピュータで使用されることもあります。それは、特定のオ ペレーティングシステムに縛られたものではなく、様々なプラットフォー ムで利用できます。また、X ウィンドウは、ネットワーク通信モデルとし てクライアント・サーバモデルを使っています。このモデルを使うことで、 ユーザは、ある場所でプログラムを実行しつつ、それを別の場所から制御 するということが可能になります。

一般的なクライアント・サーバの慣習とは違い、ユーザは、実際には、X サーバ上で直に作業をしています。スクリーン・キーボード・マウスの機 能を提供しているのは、X サーバなのです。この場合にもそれをサーバと 呼ぶのは、X サーバがクライアントに対するインプットを生成し、クライ アントからのアウトプットを管理するものだからです。ここで X クライ アントとは、xterm や emacs, xclock といったア プリケーションのことです。これらが X サーバからのインプットを受け 取って処理した上で、アウトプットを X サーバに戻しています。

[訳注:文章だけでは分かりにくいので、絵を書きました。

   ___________
  /__________/|
  |;--------;||             +-----------+ インプット +--------------+
  ||スク    |||       <-管- |           | ---------> |              |
  ||  リーン|||             |           |            |              |
  ||________|||       <-  - | X サーバ  |            |X クライアント|
  [___ooo____]/             |           |アウトプット|              |
                _%_   <-理- |           | <--------- |              |
  _____%_____  ////         +-----------+            +--------------+
 /::::::::::/ /__/                             xterm, emacs, xclock 等
*----------*  マウス
 キーボード
 
  物理的なデバイス <--- | ---> プロセス

]

ほとんどの場合、サーバとクライアントは同じコンピュータ (ホスト) 上 で動作します。しかし X プロトコルは柔軟性に富んだもので、多くの異 なる構成が可能です。実際に、X 端末はスクリーン・キーボード・マウス から成り、コンピュータらしい能力はありません。これは、他のシステム 上で動作しているクライアントから来る X プロトコルのメッセージを処 理することしかできません。サーバがあるホスト上で現在稼働している場 合であっても、クライアントはそれとは離れたホスト - たとえそのホス トが別のビルや州に置かれていたとしても - の上で実行するのが望まし いことがあるからです。

それで、これがコンピュータのセキュリティとどういう関係があるのでしょ うか?サーバ上で実行が可能なクライアントというのは、注意深く制御さ れるべきです。複数のクライアントが同じサーバ上で動作しているわけな ので、それらクライアント間通信には、注意深い制御が不可欠です。ある クライアントが別のクライアントに情報を送れたり、あるクライアントが 別のクライアントの大事な情報を捕捉できるなら、そのシステムは脆弱な 可能性があります。