世界を動かす技術を、日本語で。

StarDictがX11クリップボードをリモートサーバーに送信する

概要

  • StarDict はクロスプラットフォームの辞書アプリで、セキュリティ問題が指摘された。
  • デフォルト設定でユーザーのテキスト選択が 暗号化されずに外部送信 される仕様。
  • Wayland ではこの問題が発生しないが、X11環境ではリスクが残存。
  • プラグインと機能のデフォルト有効化が プライバシー懸念 の主因。
  • オープンソースのセキュリティ維持には 開発者・保守者の意識 が不可欠。

StarDictのセキュリティ問題とDebianでの対応

  • StarDictGPLv3ライセンス の辞書アプリケーション。
  • 多言語辞書と 豊富なプラグインエコシステム を搭載。
  • デフォルト設定で ユーザーのテキスト選択暗号化されていないHTTPdict.youdao.com および dict.cn に送信される仕様。
    • X11環境 のDebianで特に問題化。
  • 問題は Vincent Lefevre がDebian 13("trixie")リリース前に検出、oss-securityメーリングリストとDebianバグトラッカーに報告。
  • StarDict をインストールすると stardict-plugin パッケージも推奨で自動インストール。
    • YouDaoプラグインdict.cnプラグイン を含む構成。
  • スキャン機能 がデフォルトで有効化されており、マウスで選択したテキストが自動で翻訳されるポップアップ機能。
    • この機能により、 選択テキストが自動で外部送信 される挙動。

プライバシーとセキュリティの懸念

  • Wayland環境 ではアプリケーション間のテキスト取得が制限されるため、同様の問題は発生しない。
    • ただし、Waylandではスキャン機能自体が動作しない制約。
  • Debianパッケージメンテナの Xiao Sheng Wen は「機能は無効化可能」と主張。
    • Lefevreは「 プライバシーに関わる機能はデフォルトで無効にすべき」と反論。
  • パッケージ説明にスキャン機能の記載はあるが、「 オンラインサービス利用」の明示はなかった。
  • Xiaoはネットワーク辞書プラグインの分離も提案したが、必要性に懐疑的。

過去の同様事例と対応

  • 2009年と2015年にも 同様の問題 が報告。
    • 2009年はデフォルト設定変更で一時対処。
    • 2015年は stardict_dictdotcn.so プラグイン削除で対処、YouDaoプラグインには未対応。
  • Xiaoは2015年当時のメンテナではなかったが、2021年には問題を認識していた。

利用者数と影響

  • Debianのパッケージ統計では StarDict利用者は178人 (2009~2015年は約1000人)。
  • 統計に参加していないユーザーもいるが、 数年間にわたり選択テキストが送信 されていた可能性。
    • パスワードや機密文書の一部が意図せず送信されるリスク。

オープンソースとセキュリティ文化

  • Debianは多数のパッケージを保持し、安定性重視で 古いソフトウェアも多い
  • Linusの法則」は実際には「十分な監視と対応意識」がなければ成立しない現実。
  • Wayland移行 の一因はアプリ間スパイ行為の防止。
  • 深刻なセキュリティ問題が 報告後も未修正 のまま残る現状への警鐘。
  • Linuxのセキュリティ評価維持には 開発者・保守者・ユーザー全体の問題意識 が不可欠。

Hackerたちの意見

こういうことになると、悪意を疑わないのは難しいよね。メンテナーからのコメント: 「stardictには「スキャン」機能があって、ユーザーがこの機能を有効にすると、テキストを選択した後にstardictがその選択したテキストを翻訳するんだ… なんでユーザーが機密データを選んで辞書を問い合わせるの?」

外国語のテキストが機密だって気づかないなんて面白いよね…もしかしたら「秘密」ってスタンプ押されてるかも。「おい、敵の翻訳サーバーにエラーが出てるって情報が入ったぞ。」

各クリップボードでローカル辞書を問い合わせるのはまあいいと思う。リモート辞書をリクエストする機能も悪くないし、両方を簡単に組み合わせるのは微妙だけど理解できる(特別なフラグにした方が良いかも)。でもデフォルトで組み合わせるのは、ちょっと悪意を感じる。

もちろん辞書プログラムには辞書を提供するウェブサイトと通信するコードが含まれるよね。それが当たり前だとは言えないけど、もしapt-getで辞書をインストールしたら、全部自分のマシンに入ってると思うかも。何世紀も前から物理的な本の辞書があったわけだし… stardictはオンラインのものっぽいけど、正当な理由があるのかもしれないけど、全体的に罠に見える。

バカな質問かもしれないけど… チェックしてる単語を実際に開示せずにオンラインスペルチェックをするために、単語ごとのブルームフィルターを使うことはできないの?

たとえ「正当」だとしても、暗号化されてないHTTPを使うべきじゃないよね。

これは世代の問題だと思う。アプリが自分のところに連絡することを期待している人は、ローカルにインストールされたソフトウェアが何とも話さない世界を知らない若い人だと思う。著者のプロフィールを調べると、これが当てはまるみたい。彼らはしっかりしたCSのバックグラウンドを持っていて、オフライン辞書を持つ翻訳ポップアップのような辞書プログラムを知っているはずだ。でも、彼らはその時代の人で、特有の「もちろん」があるんだ。今の時代、ローカルにインストールされてオフラインデータで動くアプリは、残り少ないコンピュータのドン・キホーテたちが広めるような、ちょっと古風な騎士道の声明みたいだ。悲しいことに、これを言うのは。だから、この比喩にはあまり楽しさを感じない。

ある時から、ネットアクセスなしでGUIアプリを動かすようになったんだ。最初はfirejail、次にbubblewrapを使って。それがflatpakが出る前の話。今でも、アプリをサンドボックスで動かすために、時間をかけて集めたbashスクリプトのコレクションを使ってるよ。

それ、私も気になった。人々が簡単な機能すらライブサービスだと期待するなんて、悲しい世界だよね。

~> wc -cl /usr/share/dict/words 235976 2493885 /usr/share/dict/words 一般的なUnixのプリインストール辞書を使うプログラムがあってもおかしくないよね。

こんなクソみたいなことがあるから、俺はずっと雇われる自信があるよ。最新のトレンドにはついていけてないかもしれないけど、少なくともコンピュータがどう動くか、何ができるかは理解してるからね。

古き良きdingはローカル辞書とうまく連携してるよね。Debianにもパッケージされてるし。 https://www-user.tu-chemnitz.de/~fri/ding/

こんなことを読むと、すごく怒りが湧いてくるのは俺だけ?これはどのレベルでも受け入れられない。

あなたは一人じゃないよ。あの人にはビル・ゲイツスタイルで顔にパイをぶつける必要があるね。

Debianにかけられている努力にはすごく敬意を表してるけど、パッケージマネージャーのこういう「最大主義」はずっと嫌いだった。ああ、ユーザーが「foo」を欲しいって?じゃあ、fooと組み合わせて何かしら役に立ちそうなソフトを全部インストールしよう!あ、ネットワークデーモンも入ってる?最高、すぐに起動しよう!「推奨」パッケージのインストールを無効にするフラグがあるのは知ってるけど、デフォルトがこれじゃあサービスになってないと思う。

俺にとっては、最も使う超長いコマンドラインフラグだよ。一瞬だけ --break-system-packages がそれを上回ったけど、pip が省略フラグを受け付けることを発見したから --br で十分だし、なんか「bruh」って感じ。

丁寧に反対させてもらうね。まず、「Recommends」は、インストールしているパッケージの機能を強化するためのパッケージに使われる。これがなくてもパッケージは壊れないけど、非常に便利な機能が無効になるかもしれない。君が話しているパッケージクラスは「suggests」、つまり「これらのパッケージも君に役立つかもしれない、見てみる?」っていうセクションだ。これらはデフォルトではインストールされていない。一方で、aptやaptitudeは何かをする前にプレビューを提供するよ。受け入れる必要はないし、aptitudeの場合は最終的なコミットの前に微調整もできる。ミニマリズムとユーザーの利便性の間には緊張がある。Debian 13のリリースコメントで「Debianは決してエンドユーザーフレンドリーなディストロにはならない」と言われたことがある。今、君はパッケージがデフォルトでrecommendsをインストールすべきではないと言っている。Debianはどうあるべきなんだ?「IKEA風のDIYディストロ」か、「もっとユーザーフレンドリーで、非常に安定したバニラディストロ」か。個人的には後者に投票するよ。それに、前にも言ったけど、上級ユーザーは自分が変更したいものを自由に使える。デフォルトを変更したいなら、設定ファイルは/etc/apt/conf.d/にあるよ。一度だけ機能を無効にしたいなら、--no-install-recommendsを使えばいい。

期待される機能がオプションだから欠けてるっていう極端なケースも、あまり良くないよね。問題は、推奨される依存関係がデフォルトでインストールされることじゃなくて、パッケージの推奨がもう少し保守的であるべきってことかも。Debianはすでに、推奨される依存関係(ほとんどのユーザーが必要とするもの)と、提案される依存関係(全てのユーザーに関係ない機能や拡張)を区別していることに注意してね。

これは便利さとセキュリティの間の古典的な緊張関係だね。Debianの「推奨」デフォルトは、ネットワーク接続が当たり前じゃなかったプレクラウド時代に設計されたもので、ローカル機能が潜在的なセキュリティ境界よりも優先されてたんだ。

それに対して、Xiaoはパッケージの説明はソフトウェアをインストールするユーザーなら誰でも読めるし、スキャン機能についても触れていると指摘した。バグレポートに対して「すべてのパッケージの説明(大半は依存関係としてインストールされる)を読んでおくべきだ」と言ったDebianのメンテイナーが初めてでも最後でもないだろう。数日前にTrixieがリリースされたときに、すべてのパッケージの説明やREADMEを読み始めたら、まだ読み続けているだろうね。

そういう反応は、悪意がある証拠だと思う。

「RTFM!」というコメントにはいろんなバリエーションがあって、ニュアンスもある。この場合、別のコメント者が指摘したように、答えが怪しい。私は「RTFM!」と言われたことが何度もあるけど、その中には文脈的に正しい答えもあったし、後から考えるとそうだったこともある。中にはこんな風に反応するものもあった。Debianの議論文化は時々ちょっと尖っているかもしれないけど、これはDebianとは関係ない。

最近はLLMを使って要約を提供することもできるよね。

「計画と解体命令は、あなたたちの地球の50年もの間、アルファ・ケンタウリの地元の計画事務所に掲示されている。地元の問題に興味を持つ気がないなら…」 https://www.youtube.com/watch?v=Z1Ba4BbH0oY

それ、問題に全然触れてないじゃん!パッケージの説明にはスキャン機能については書いてあるけど、プレーンテキストでサーバーに自動送信する機能については触れてないよね。確かに、説明やプラグインのリストを読んで、このプラグインがどう実装されてるかを正しく推測できれば、いくつかのことは推測できるけどさ。

君の言ってることには同意だよ。特にその人が管理してるパッケージが予想外の動作をするのはこれが初めてじゃないからね。 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1010165 (不適切なパッケージ、他のパッケージの(conf)ファイルを変更するので、アーカイブから削除すべきだね)。

Wayland上のStarDictはこの問題を抱えていない。Waylandはデフォルトでアプリが他のアプリからテキストをキャプチャすることを防ぐから。Wayland上のStarDictは別の問題があって、セグメンテーションフォルトを引き起こす。2025年8月2日: Bug#1003710: gnomeでのstardictのクラッシュ、メッセージは「セグメンテーションフォルト」 https://www.mail-archive.com/debian-bugs-dist@lists.debian.o...

それに、他のアプリからテキストをキャプチャすることは、さまざまなユーティリティには非常に必要なんだ。Waylandにおけるセキュリティ機能としては、コンピュータをシャットダウンして二度と電源を入れないのと同じくらい重要だよ。

うーん、Waylandについてはあまり詳しくないけど…それは正しくない気がするな。Waylandにはコピー&ペーストのプロトコルがあって、5分間のウェブ検索によると、X11のコピー&ペーストプロトコルと似たような感じで動作するみたい。各アプリがペースト時に何を送るかを管理して、別のアプリがペーストをリクエストすると、ディスプレイサーバーが二つを接続してフォーマットを交渉して、「コピーされた」データが流れるってこと。つまり、Waylandアプリは他のアプリからテキストをキャプチャできるってことだよね。もし記事がWaylandアプリがコピー&ペーストプロトコル以外のメカニズムで任意のテキストをキャプチャできないって言いたかったなら、それは理解できるけど、問題のアプリは普通のX11コピー&ペーストプロトコルを使ってるみたいだから、その発言がどう関連してるのか分からないな。

ちょっと関連するけど、サムスンのスマホがクリップボードの内容を他のサムスンデバイスと全部共有してるって知ったときはかなり驚いたよ。パスワードもコピーしたら共有されて、履歴まで保存されてるし。共有がデフォルトで有効だったのか、うっかりオプトインしたのかは覚えてないけど、他のデバイスに届くためにサーバーを通ってるんだろうな。共有は無効にできたけど、クリップボードの履歴はオフにできなくて、別のキーボードに切り替えても、サムスンのキーボードがクリップボードをキャプチャして履歴を保存し続けるんだ。サムスンのキーボードに戻すと、全部そこにあるし…次のスマホはサムスンじゃないかも。

最後のWaylandのフレーミングはちょっと誤解を招く気がするな。これが正確に言ってるよね:> もしかしたらStarDictはWaylandで動作するために特別な権限を求め始めて、ユーザーは今のようにそのデフォルトを受け入れたかもしれない。そう、それが実際に起こることだよ。インストーラーはユーザーの介入なしにその特別な権限を自動的に設定するかもしれないし。マルウェアはマルウェアだし。Waylandは一部のことに対して防御を助けるかもしれないけど、ディストリビューションの一部としてインストールされたパッケージに対しては防御しないよ。

Debianのパッケージ人気コンテストの統計によると、StarDictをインストールしているのは178人だけだって。178人にとっては問題だね…でも、世界的に見ればあんまり心配することじゃないよ。