SJ blog
Qubes OS
Z

信頼度ランク

S 公式ソース確認済み
A 成功実績多数・失敗例少数
B 賛否両論
C 動作未確認・セキュリティリスク高
Z 個人所感

Qubes OS のクリップボードを安全に使いこなす

Qubes OS のグローバルクリップボードの仕組み、Ctrl+Shift+C/Vのショートカット、クリップボードを使ったデータ漏洩リスクと対策を解説します。

一言結論

Qubes OSのクリップボードはCtrl+Shift+C/Vによるグローバルクリップボードへの明示的な操作なしにVM間でデータは共有されず、この一手間がクリップボード経由の意図しないデータ漏洩を防ぐ設計になっている。

Qubes OS のクリップボードの仕組み

通常のOSでは、クリップボードは全アプリで共有されます。Qubes OS ではVMごとにクリップボードが独立しており、意図した操作なしにVM間でデータが漏れません。

VM A のクリップボード(独立)
VM B のクリップボード(独立)
      ↓ 明示的な操作
グローバルクリップボード(一時的な中継地点)
      ↓ 明示的な操作
VM B のクリップボードに転送

基本的な操作手順

VM から VM にテキストをコピーする

1. コピー元のVM でテキストを選択して Ctrl+C
2. 同じウィンドウで Ctrl+Shift+C(グローバルクリップボードに送信)
3. コピー先VMのウィンドウをクリックしてフォーカスを移す
4. Ctrl+Shift+V(グローバルクリップボードから受信)
5. Ctrl+V で貼り付け

この操作により、意図した方向にだけ データが流れます。

クリップボードの内容を確認する

グローバルクリップボードの内容を dom0 から確認:

# dom0 ターミナルで(セキュリティ上 dom0 でのコマンド実行は最小限に)
qubes-clipd status

クリップボードのサイズ制限

グローバルクリップボードには約 64KB のサイズ制限があります。

大きなテキストはファイル経由で転送する方が確実です:

# 大きなテキストをファイルに保存してコピー
echo "長いテキスト..." > /tmp/data.txt
qvm-copy /tmp/data.txt

セキュリティ上の注意

クリップボードに入れてはいけないもの

注意が必要なのは、untrusted や危険度の高い VM から クリップボード経由でデータを受け取る場合です。

【高リスク操作の例】
untrusted VM(悪意あるサイトを閲覧)
  → Ctrl+Shift+C
グローバルクリップボード
  → Ctrl+Shift+V
work VM(業務環境)

テキストに見えても、コマンドインジェクションのペイロードが含まれている可能性があります。

# 悪意あるクリップボードの例
# 見た目: "Hello World"
# 実際: "Hello\nrm -rf ~\nWorld"  ← 改行の後に危険なコマンドが

ターミナルへの貼り付けは特に注意

ターミナルに貼り付ける場合、改行コードがコマンドとして実行される可能性があります。

# 安全な貼り付け(Ctrl+Shift+Vで受け取った後)
# まずテキストエディタに貼り付けて内容を確認してからターミナルへ

# または xdotool で安全に貼り付け
xdotool type --clearmodifiers "$(xclip -o -selection clipboard)"

ポリシーによるクリップボード制御

/etc/qubes/policy.d/ でクリップボードのポリシーを設定:

# /etc/qubes/policy.d/30-user-clipboard.policy

# untrusted から他のVMへのクリップボード転送を拒否
qubes.ClipboardPaste * untrusted @anyvm deny

# personal から work への転送を自動許可
qubes.ClipboardPaste * personal work allow

# それ以外は確認ダイアログ
qubes.ClipboardPaste * @anyvm @anyvm ask

クリップボードマネージャーを使わない理由

一般的な Linux では CopyQxclip などのクリップボードマネージャーが便利ですが、Qubes OS では:

  • クリップボード履歴がセキュリティリスクになる
  • グローバルクリップボードの仕組みを迂回してしまう

クリップボードマネージャーは 使わない ことが推奨されます。

パスワードのコピー

パスワードをクリップボード経由でコピーする場合:

# KeePassXC(vault VM)でパスワードをコピー
# → Ctrl+Shift+C でグローバルクリップボードへ
# → 使用するVMでCtrl+Shift+V して Ctrl+V で貼り付け

使用後はすぐに別のテキストをコピーしてクリップボードをクリアすることが推奨です。

トラブルシューティング

Ctrl+Shift+C/V が効かない

  • フォーカスが正しいウィンドウにあるか確認
  • qubes-clipd が動いているか確認: pgrep qubes-clipd
  • dom0 のターミナルで qubes-clipd restart

日本語がコピーできない

文字コードの問題の場合、ファイル経由での転送を試みます:

echo "日本語テキスト" > /tmp/text.txt
qvm-copy /tmp/text.txt

まとめ

Qubes OS のクリップボードは「安全のために手順が多い」と感じますが、意図しないデータ漏洩を防ぐための設計です。

操作ショートカット
グローバルへ送信Ctrl+Shift+C
グローバルから受信Ctrl+Shift+V

この2つだけ覚えれば基本は問題ありません。信頼度の低いVMからのデータは内容をよく確認してから受け取りましょう。