1 ポイント 投稿者 GN⁺ 2025-08-13 | 1件のコメント | WhatsAppで共有
  • StarDictで、X11環境においてユーザーが選択したテキストを暗号化されていないHTTPで外部サーバーへ送信する重大なセキュリティ問題が見つかった
  • この問題は、Debianのデフォルト設定でYouDaoおよびdict.cnプラグインが既定で有効になっていることで発生する
  • これは、ユーザーが任意のテキストを選択すると自動的にサーバーへ送信されることを意味し、機密情報漏えいの危険がある
  • パッケージ管理者は機能の無効化やプラグイン分離の提案を検討したが、根本的な解決策の適用は不十分だった
  • この問題は過去にも複数回提起されていたが、完全な対応の欠如とセキュリティ意識の重要性をあらためて浮き彫りにした

StarDictの動作とセキュリティ問題の概要

  • StarDictはGPLv3ライセンスのクロスプラットフォーム辞書プログラムで、多様な言語対応とプラグインエコシステムを備える
  • Debianのデフォルト設定では、StarDict実行時にユーザーが選択したテキストが暗号化されていないHTTPを通じてyoudao.comdict.cnの2つのリモートサーバーへ送信される
  • この問題はoss-securityメーリングリストとDebianのバグトラッカーにも報告されている

問題の詳細

  • StarDictの設計上、辞書ウェブサイトと通信するコード自体は自然な構成だが、「スキャン」機能が既定で有効になっている
    • これは、ユーザーがマウスでテキストを選択すると自動で翻訳ポップアップを表示し、そのテキストが外部サーバーへ自動送信されることを意味する
    • ユーザーがStarDictを常時バックグラウンドで実行している場合、問題は深刻になる

Linux環境ごとの差異

  • Wayland環境では、StarDictは他アプリケーションのテキストを取得できず、スキャン機能も動作しないためセキュリティ問題は発生しない
  • 従来のX11環境でのみこの問題が存在する

DebianおよびStarDict開発者の反応

  • Debianパッケージ管理者のXiao Sheng Wenは、"スキャン機能とYouDaoプラグインは無効化可能"として大きな問題とは認識していない
  • しかし報告者のVincent Lefevreは、「プライバシー関連機能は必ず無効状態をデフォルトにすべきだ」と指摘した
  • パッケージ説明によって機能を知らせることは可能だが、stardict-pluginの説明にはオンライン辞書の利用が記載されていない
  • プラグイン分離などの改善策は提案されているものの、即時の措置は取られていない

機能の利便性とセキュリティ上の懸念

  • スキャン機能は、外国語を読む際に素早く辞書を引きたい場合のStarDictの主要な利点である
  • しかしユーザーが、その通信が暗号化されていないと予想するのは難しい。通信経路上の誰にでも機密テキストが露出する危険がある

過去の類似セキュリティ事故と対応

  • 2009年と2015年にも類似事例が報告されている
    • 2009年: ネットワーク辞書の無効化が一時的に既定値として適用された
    • しかし2016年に追加されたYouDaoプラグインはその設定を無視した
    • 2015年の問題は、2025年になってようやくプラグイン削除という形で解決された
  • このように、問題の再発と対応の遅れ、保守担当者の交代や優先順位付けの不備が繰り返されている

ユーザー規模とセキュリティへの影響

  • Debianの統計では現在およそ178人 בלבדがStarDictをインストールして利用しているが、統計に参加していないシステムなども考慮すると、長年にわたり多くのユーザーがテキスト漏えいの危険にさらされていた可能性がある
  • パスワードのコピー、機密メール、文書編集中に選択したテキストなどがそのまま外部に露出する可能性がある

オープンソースエコシステムとセキュリティ課題

  • Debianのような大規模ディストリビューションは膨大な数のパッケージを管理しており、更新漏れやソフトウェアの老朽化が頻繁に起きる
  • 「十分に多くの人が見ればバグは浅い」というLinusの法則も、実際には誰かがバグを発見し、報告し、さらに保守担当者が問題として認識して修正して初めて成り立つ

X11からWaylandへの変化

  • Waylandの導入は、この種のセキュリティ欠陥、特にアプリケーション間の情報漏えいの可能性そのものを減らすためでもある
  • ただし、それに伴う機能面での不便さ新しい権限処理の方式も課題として残る

結論と示唆

  • 発見され、診断され、報告されたセキュリティ問題が、いまだ未解決のまま残ったり再発したりする現実は懸念を呼ぶ
  • Linuxのセキュリティ評価を維持するには、オープンソース開発者、パッケージ管理担当者、ユーザーによる継続的な問題意識と迅速な対応が不可欠である

1件のコメント

 
GN⁺ 2025-08-13
Hacker Newsのコメント
  • Xiaoが指摘しているように、ソフトウェアをインストールするユーザーはパッケージ説明を読めるし、実際にスキャン機能への言及もある。しかし、Debianメンテナがバグ報告に対してしばしば「すべての(依存関係としてインストールされる何百ものものまで含めた)パッケージ説明をきちんと読むべきだ」といった調子で返すのだが、正直、数日前に公開されたTrixieを基準にすべての説明とREADMEを読み始めたとしても、まだ読み終わっていないはずだ

    • 「計画書と取り壊し命令は、あなたがた地球の時間で50年間、Alpha Centauriの地方事務所に掲示されていた。地域事情に関心を払わないなら……」というくだりがまさにぴったりだと感じる youtube動画リンク
    • こういう返答が出てくるなら、悪意があるとしか思えない
    • 私がDebianリポジトリからプログラムをインストールするのは、利便性と信頼のためだ。メンテナがパッケージの挙動を変えること自体には不満も多いが、クリップボード情報を他者へ送る機能は opt-in、つまり明示的に有効化する形にしてほしかった。その信頼を裏切る行為だ
    • Trixieのリリース時にすべてのパッケージ説明とREADMEを読むのは無理だという意見に同意する。90年代後半〜2000年代初頭にDebianを初めて使ったころは、dselectで必要なパッケージを選んで数時間かければ、すべてのオプションを実機環境に合わせて調整できた(当時は今ほど動的ではなく、ひとつひとつ選ぶ必要があった)。今はパッケージ数も多すぎるし、カーネル設定も過剰に巨大化していて、現実的に全部確認できる時代ではない(まだdselectを使っている人……いるのか?)
    • あなたの言うことに同意する。特にそのパッケージメンテナは、以前の問題のように、他のパッケージの設定ファイルまで書き換える不適切な挙動を何度も起こしてきた。こんなものはリポジトリから削除すべきだ
  • もちろん、辞書プログラムならウェブサイトと通信するコードを含んでいてもおかしくないと思う人はいるだろう。でも apt-get で辞書をインストールしたなら、辞書全体が自分のコンピュータにあると期待してよいはずだ。実際、紙の辞書だって何百年も使われてきたのだから……。Stardictはオンラインベースではあるが、あり得るにしても、どこか罠のように感じる

    • これは世代差だと思う。アプリがインターネットと通信するのが当たり前だと思っているのは、ローカルにインストールして外部と通信しないソフトウェアに慣れていない若い世代だ。開発者の経歴を見てもコンピュータ科学に通じた人で、オフライン辞書が可能だということもよく理解しているはずだが、自分の世代の「当たり前」に従っているように見える。今の世界では、ローカルにインストールしてオフラインデータだけで動くアプリというのは、まるで騎士道精神のように、ごく少数のITドン・キホーテたちが維持している概念になってしまったのが悲しい
    • たとえ正常な挙動だとしても、暗号化されていないHTTPを使うのは絶対に容認できない
    • 古い ding プログラムはローカル辞書を非常によくサポートしている。Debianにも入っている dingリンク
    • 私もそこが目についた。こんな単純な機能すらライブサービスとして期待する時代になってしまったのが悲しい
    • ある時点から、GUIアプリはネットワークアクセスなしで起動するようになった。最初は firejail、その次は bubblewrap、そして時間をかけて作ったbashスクリプトでサンドボックス環境の中でアプリを動かしている。flatpak以前からずっとそうしてきた
  • Samsungのスマホで、すべてのクリップボードデータが自分のSamsungアカウント上の全デバイスに共有され(パスワードまで含めて)、しかも履歴まで残ると知ってかなり驚いた。これがデフォルト設定だったのか、偶然同意してしまったのかは覚えていない。このデータはおそらくSamsungのサーバーを経由して配信されているのだと思う。共有機能はオフにしたが、クリップボード履歴は無効にならず、別のキーボードに切り替えてもSamsungキーボードへ戻すと昔のクリップボード履歴が全部残っている。次のスマホはSamsungを選ばないつもりだ

    • Samsung TVもそうで、視聴履歴や個人情報をマーケティング企業と共有していると理解している。SamsungのプライバシーポリシーはスマホでもTVでも同じだ
    • KDE Connect経由でLinuxからコピーしたパスワードがAndroidのクリップボード履歴に残るのを見たことがある。クリップボード共有全体を切らずに、パスワードだけ選別して送らないようにする方法があるのか気になる
    • Samsung機器を使うなら、Samsungアカウント自体を作成したりログインしたりしないことを勧める。それだけで企業が自分のデータにアクセスする機会をかなり減らせる
  • Waylandについての話は少し誤解を招く気がする。最後の要約は正確だ。「おそらくStarDictはWaylandで動作するために特別な権限を要求しただろうし、ユーザーは今そうしているようにそのデフォルト値をそのまま受け入れただろう」。つまり、その可能性は高く、インストール時点でその権限が自動的に付与されていた可能性もある。マルウェアは常に存在する。Waylandはある種の攻撃を防げるかもしれないが、ディストリビューションの一部としてインストールされたパッケージからは守ってくれない

    • 誤解ではなく、その点ではWaylandはXorgより明らかに優れている。しかし問題の本質はそれよりもっと構造的なところにある。たとえば送信されるデータは暗号化すらされていなかった!StarDictはX11上で、Debianのデフォルト設定だけで、ユーザーが選択したテキストをHTTPで2つのリモートサーバーへ送ってしまう。パッケージ説明やYouDaoプラグインをよく読んでいたとしても、少なくとも通信は暗号化されていると期待するだろう。ところが実際には dict.youdao.comdict.cn に対して、何の保護もないHTTPでデータを送っており、その経路上の誰でもリクエスト内容を見られる
  • クリップボードごとにローカル辞書を引くのは構わない。リモート辞書への問い合わせ機能を追加するのも問題ない。この2つの機能を特別なフラグなどで分離したうえで簡単に組み合わせられるようにしていたなら納得できたが、この2つをデフォルト設定で混ぜて使うのは、ほとんど悪意に近い

    • ここで言うyoudaoは翻訳サービスだ。オフライン翻訳はオンライン翻訳に比べるとかなり劣るので、私はデータがない時にだけ local google offline translation package のようなものを使いたいだけだ。Stardictは使っていないが、単なる単語の意味以上の翻訳をするなら、そうした挙動は十分あり得る。要するにこの記事全体のポイントは、「中国の翻訳プログラムがクリップボードデータを自分のウェブサイトと中国の翻訳サービスへ送り、しかも暗号化なしのHTTPで送っていた」ということだ
  • 「当然、辞書プログラムにはウェブサイトと接続するコードがある」という話について言えば、実際には目的次第だ。私が提供しているフィンランド語辞書(tsk)の最小バージョンは約30MBで、およそ25万語を含み、辞書そのものがバイナリに埋め込まれていて、起動のたびにprefix検索を再構築する。しかし、レンマ化や語源などを含む巨大なデータベースは数十GBまで膨らみ得る。私は完全に即時のキーボード入力単位の探索を目的にしていたので、こういう構造が必要だった。労力も非常にかかったため、後続バージョンからは有料化することに決めた tsk Github 有料版ホームページ(現在はWindows向けコード署名の問題で停止中)。他の大半のユースケースでは、サーバーに問い合わせる方がずっと楽だ。巨大な辞書を丸ごとダウンロードする理由はほとんどないので、混合型の構造(たとえば上位1万語だけローカルにキャッシュし、残りの希少語はサーバーと通信する)もかなり合理的だ

  • こういう件を見ると、悪意があるとしか思えない点が多い。メンテナは「ユーザーが『スキャン』機能を自分で有効にし、テキストを選択すると翻訳動作がトリガーされる……なぜ機密データを翻訳クエリの対象として選ぶのか?」と返答していた

    • もしかするとそのメンテナは、外国語の中に秘密が含まれていることを見分けられないのかもしれない……。たとえば「秘密」と書いてある場合だ。「隊長、敵軍が翻訳サーバーのエラーに遭遇しているとのことです!」
  • Debianに注がれている多大な努力には敬意を払うが、パッケージマネージャのこうした「最大主義」は昔から嫌いだった。たとえば foo をインストールしようとすると、関連しそうなソフトウェアを可能な限り一緒に入れ、ネットワークデーモンまであれば即座に起動してしまう、といった具合だ。「推奨パッケージ」のインストールを防ぐフラグがあるのは知っているが、デフォルト設定のほうがむしろユーザーに不便を強いているように感じる

    • 丁寧に反論する。「推奨(Recommends)」は、インストールしたパッケージの主要機能を拡張するために使われる。これがなくてもパッケージ自体は壊れないが、強力な機能が無効になる。問題になっているパッケージは「推奨」ではなく「提案(Suggests)」に分類されるべきだ。「提案」はデフォルトではインストールされない。aptやaptitudeを使う場合、インストールのプレビューが表示され、ユーザーはそれを選べる。ミニマリズムとユーザーの利便性のあいだには緊張関係がある。Debian 13のリリースでは「Debianは決してユーザーフレンドリーなディストリビューションではない」という意見もあった。個人的には「DIYのためのDIY向けIKEAスタイル」よりも、「安定していて、基本に忠実で、しかもユーザーフレンドリーなディストリビューション」のほうが望ましい。そして上級ユーザーは望めばいつでも変更できる。デフォルト変更が必要なら /etc/apt/conf.d/ でできるし、一時的になら --no-install-recommends を使えばいい
    • これは利便性とセキュリティの間でバランスを取ろうとする古典的なジレンマだ。Debianの「推奨」デフォルトは、ネットワークが常時存在するものではなく、ローカル機能性がセキュリティ境界より重視されていた時代を前提に設計されたものだ
    • もともと APT::Install-Recommends のデフォルトは false で、Debian 6.0 Squeeze(2011-02-06)で true に変わった。当時はDebianやUbuntuで不要なパッケージが大量に入るのが嫌だった。今振り返ると、推奨と提案の区別が曖昧だった面もあり、「推奨」をデフォルトでインストールし、ユーザーが opt-out できるようにしたのは良かったのかもしれない。それでも私が自分で管理しているシステムでは、推奨パッケージの自動インストールは今でも無効にしている
    • --install-recommends がデフォルトなのは問題ない。Recommends は「私たちの大多数はこれを欲しがる」、Suggests は「少数向け機能」という微妙な差を持たせるのは悪くない。しかし私も、個々のメンテナがRecommendsフィールドを乱用するのは問題だと思う。たとえば圧縮ツールを入れるのに特定のinitシステムまで強制されるのはおかしい(file-rollerやgnome関連チームのことを見ている)
    • 逆に、必要な機能が opt-in オプションになっていて見落とされるのも困る。問題は「推奨」パッケージを入れるかどうかより、パッケージの推奨自体がもっと保守的であるべきだという点だ。ちなみにDebianはすでに recommended と suggested で必須性と任意性を分けている
  • なぜこれらすべての機能がオフラインでないのか理解できない。中国語辞書全体でも40万語未満で、1語あたり1KBと見積もっても400MBで足りる。ローカルで十分実装可能なのに、ネットワーク接続に依存するのは単なる設計不足だ

    • その前にcopyleftの辞書が必要になるだろう
  • こういう問題を見ると猛烈に腹が立つ。これは絶対に許容されるべきではない

    • 自分だけじゃないと言いたい。ビル・ゲイツにパイを投げつけた時のように、何か目を覚まさせる出来事が必要だ