信頼度ランク
| 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 では CopyQ や xclip などのクリップボードマネージャーが便利ですが、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からのデータは内容をよく確認してから受け取りましょう。