2013-08-23

text VTを使っているのならば、XMirは絶対同時に実行するな。

mjg59 | If you ever use text VTs, don't run XMir right now

XMirはVT切り替えも入力を取り続けるので、XMirを起動したままtext VTに切り替えてログインすると、キーボード入力がXMirを通してダダ漏れになるという問題がある。

Mirベースの世界では、Mirサーバーが入力イベントを受け取って、Mirクライアントに渡すことになるだろう。実際、XMirは標準のXorg入力ドライバーを使っているので、全入力イベントを直接受け取っている。このため、XMirの初期のバージョンで見られたようなマウスポインターの重複があった。XMirで描画されたマウスポインターと、Mirで描画されたマウスポインターがあったのだ。

もっと重大な問題がある。Mirは最近、とても単純なVT切り替えの実装を得た。単に入力イベントから、CtrlとAltとファンクションキーが同時押しされたのを見張るだけだ[1]。そして、/dev/consoleに適切なioctlを発行して、カーネルにVTを切り替えさせる。ここでの問題は、MirはXMirにそのことを伝えていないという事だ。そのため、XMirは依然として入力デバイスを開きっぱなしで、入力イベントを見張り続けている。

これはとても簡単に再現できる。XMir上でターミナルとかテキストエディターを開いて、フォーカスを当てる。Ctrl+Alt+F1を押して、ログインする。Ctrl+Alt+F7を押す。ユーザー名とパスワードがウインドウに表示されているだろう。

これは6月20日に報告されたLaunchpadバグ1192843だ。一ヶ月半後、MirはmainのUbuntuレポジトリに追加された。その下に、「XMirは常にキーボードを見張っていて、パスワードが他のXセッションに現れることがある」と注意書きされている。これは誤解しやすい書き方だ。何故ならば、「他のXセッション」という記述から、複数のXセッションを実行しなければ起こらない問題のように読めるからだ。とにかく、これは既知のバグであり、ユーザーのパスワードを漏らす恐れがある。

これが唯一の注意で、「VESAじゃ動かない」とかの議論の下に埋もれているのは不思議だ。インストールガイドのリンクをたどるとこのページに行き着くが、この問題については記されていない。まあ、Mirのその他の問題についても記されてはいないのだが、他の問題は、単に動かないといったもので、パスワードがIRCに流されるというたぐいの問題ではない。

これが開発途中のソフトウェアだからだというのは言い訳にならない。CanonicalゆえにMirはかなりの知名度があり、いずれテストされるだろう。明確で明示的な警告がないのは弁護の余地がない。この問題が修正されるまで、このようなパッケージがアーカイブに含まれてはならないのだ。これはCanonicalのありないほど無責任な行動である。

そういうわけで、text VTに切り替えるといったことをしているのならば、切替時にはXMirを実行しないようにするか、Xから離れる時、すべてのネットワーククライアントからフォーカスを外すようにしておけ。すでに問題を犯していないかどうか、既存のIRCやIMのログを確認するのも忘れずに。

[1] Xのあまり知られていない機能としては、VT切り替えイベントは、keymapで設定されているということだ。Ctrl+Alt+F1はデフォルトでVT1に切り替える。任意のキーの組み合わせで任意のVTに切り替えるよう設定することもできる。でも、XMirだとキーストロークを直接扱うので、そういう設定はできないがね。

No comments: