QubesOS のコピートーエビョールポートリングバックチャンネルによる任意コード実行

2026/08/30 17:51

QubesOS のコピートーエビョールポートリングバックチャンネルによる任意コード実行

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

中央の Dom0 システムにおいて任意のコード実行を可能にする重大なセキュリティ欠陥について、Qubes セキュリティチームが 2026 年 8 月 28 日に発表した Qubes セキュリティ通告書(QSB)118 に詳述されています。この脆弱性は

qvm-copy-to-vm
ユーティリティ内の問題により発生しており、
sanitize_remote_filename()
が非 ASCII 文字と二重引用符のみを除去するが、
system()
がエラーダイアログコマンドを実行する前にシェルメタ文字をそのまま残すことから、攻撃者が Dom0 から破損した qube へのファイルコピー時に悪意のあるコマンドを注入できる点が原因です。
qvm-copy-to-vm
の VM バリアントは
execlp()
を使用しているため影響はありません。

すべての Qubes OS リリースが影響を受けています。発見へのクレジットは Tim C にあります。対策として、ユーザーは通常通り Dom0 を

qubes-core-dom0-linux
パッケージのバージョン 4.3.22 に更新するべきであり、ホストを最新状態に保つ以上の追加の手動ステップは必要ありません。正当性を確認するには、Marek Marczykowski-Górecki および Simon Gaiser の PGP 署名を使って通告書を検証してください:

  • gpg --verify qsb-118-2026.txt.sig.marmarek qsb-118-2026.txt
  • gpg --verify qsb-118-2026.txt.sig.simon qsb-118-2026.txt

マスター署名キーの指紋(DDFA1A3E36879494)の使用前に、別途チャネルで認証する必要があります。管理者は更新を適用する前に、公式の通告書と署名を参照して正当性を確認してください。

本文

Qubes セキュリティ Bulletin 118:
qvm-copy-to-vm
のエラー報告機能による Dom0 へのコード実行脆弱性

Qubes OS は、

qvm-copy-to-vm
コマンドのエラー処理プロセス中に、攻められた VM からファイル転送を試みた際、Dom0(メイン環境)に対して任意のコードを実行できる重大な脆弱性を発見した

本記事では、このセキュリティ Bulletin(QSB)の内容を整理し、影響範囲、技術的な詳細、対策手順および PGP 署名の検証方法を解説します。


🔴 ユーザーへの対応

【重要】今すぐ必要なこと

  • 特別なアクションは不要です。通常通りシステムを更新を行ってください。
  • 以下の「パッチ適用」セクションに記載されているアップデートを適用してください。
  • この脆弱性を解消するセキュリティアップデートが公開されています。

📌 概要

脆弱性の説明

  • 悪意のある VM(qube)からファイルを受信中にエラーが発生した場合、そのエラー処理プロセスで攻撃者がDom0 を制御できてしまいます。
  • qvm-copy-to-vm
    コマンドを使用する際、ターゲット VM がすでに侵害されている状態でファイルをコピーすると、攻撃者は Dom0 に任意のコマンドを実行できます。

影響範囲

  • 対象: すべての Qubes OS リリース
  • 被害: 攻められた VM からのファイル転送要求に対し、攻撃者が Dom0 を乗っ取って Qubes OS 全体の制御権を奪うことが可能です。

⚙️ 技術的な詳細

1. 脆弱性のメカニズム

qvm-copy-to-vm
ツールは「qfile」プロトコルを使用し、ファイル転送完了時にターゲットから確認メッセージを送り返します。このメッセージに含まれるファイル名の処理に問題があります。

問題点:不正な入力フィルタリングの不完全さ

  • 整形化(Sanitization)の不備:

    sanitize_remote_filename()
    関数は、非 ASCII 文字やダブルクォート記号 (
    "
    ) のみを除去しています。 しかし、シェルのメタ文字(特殊文字)はそのまま残っています

    // linux-utils/qrexec-lib/pack.c
    static void sanitize_remote_filename(char *untrusted_filename) {
        for (; *untrusted_filename; ++untrusted_filename) {
            if (*untrusted_filename < ' ' ||
                *untrusted_filename > '~' ||
                *untrusted_filename == '"')
                *untrusted_filename = '_';
        }
    }
    
  • シェルインジェクション: エラー報告関数

    call_error_handler()
    が Dom0 で表示ダイアログを生成するために
    system()
    を使用しています。

    // core-admin-linux/file-copy-vm/qfile-dom0-agent.c
    void display_error(const char *fmt, va_list args) {
        ...
        // エラーメッセージを構築
        asprintf(&dialog_cmd, "%s '%s: %s (error type: %s)'", ...) < 0) { ... }
        
        // ⚠️ シェル経由でコマンドを実行(脆弱性)
        system(dialog_cmd); 
    }
    
  • 結果: 攻撃者が制御可能なファイル名を介して、シェルインジェクション攻撃が成功し、Dom0 に任意のコマンドが実行されます。

2. なぜ VM 版は影響を受けないのか?

VM 内部のエラー処理関数は、外部コマンドを実行する

system()
を使用していないため安全です。

安全な実装例(VM 版)

  • execlpzenity/kdialog の直接呼び出しを使用するため、シェルパス分割やメタ文字の解釈が防ぎます。
// core-agent-linux/qubes-rpc/gui-fatal.c (影響なし)
static void produce_message(...) {
    if (progress_type && !strcmp(progress_type, "gui")) {
        switch (fork()) {
            case -1: exit(1);
            case 0:
                // setuid で権限降格を試みる
                fix_display();
                
                // ⚠️ シェル(system)を使わず、直接実行
                execlp("/usr/bin/zenity", "zenity", "--error", "--text", dialog_msg, NULL);
                execlp("/usr/bin/kdialog", "kdialog", "--sorry", dialog_msg, NULL);
                exit(1);
        }
    }
}

🔧 パッチ適用

脆弱性を解消するには、以下のパッケージを更新してください。

対象バージョン

  • Qubes OS: 4.3
  • パッケージ:
    qubes-core-dom0-linux
  • 最小バージョン: 4.3.22

更新手順

  1. コミュニティテスト期間を経て、このパッケージが安定版リポジトリに移行します。
  2. Qubes Update ツールまたはコマンドラインを使用し、通常通りアップデートを適用してください。
    # 例:コマンドラインでの更新(環境により異なります)
    sudo qubes-dom0-update
    

📜 PGP 署名の検証方法

Qubes セキュリティ Bulletin(QSB)の信頼性を保証するため、必ず PGP 署名を検証してください。偽造されたBulletinに従うと、システムへの悪意のある変更が行われる可能性があります。

検証手順

以下のコマンドは

git
gpg
がインストールされている Linux システムを前提としています。

1. Qubes Master Signing Key (QMSK) の取得と認証

まず、信頼できる公開鍵を取得し、オフバンド(別のチャネル)でフィンガープリントを確認して認証してください。

$ gpg --fetch-keys https://keys.qubes-os.org/keys/qubes-master-signing-key.asc

2. キーの信頼レベルを設定

取得したキーを「究極」の信頼(ultimate trust, Level 5)に設定します。

$ gpg --edit-key <KEY_FINGERPRINT>
gpg> trust
gpg> Your decision? 5
gpg> Do you really want to set this key to ultimate trust? (y/N) y
gpg> q

3. リポジトリのクローンと検証(推奨)

qubes-secpack
リポジトリから署名を検証する手順です。

# リポジトリをクローン
$ git clone https://github.com/QubesOS/qubes-secpack.git

# 同梱されている PGP キーをインポート
$ gpg --import qubes-secpack/keys/*/*

# Git タグの署名を検証(例:qsb-118)
$ cd qubes-secpack/
$ git tag -v `git describe`

4. QSB ファイルの直接検証

Bulletin テキストファイルと署名ファイルを指定して検証します。

今回の対象となるコマンドは以下の通りです:

# Marek Marczykowski-Górecki の署名を検証
$ gpg --verify qsb-118-2026.txt.sig.marmarek qsb-118-2026.txt

# Simon Gaiser (HW42) の署名を検証
$ gpg --verify qsb-118-2026.txt.sig.simon qsb-118-2026.txt

確認すべき出力: 各コマンドの最終行に、以下のようなメッセージが表示されることを確認してください。

gpg: Good signature from "..."

これにより、Bulletin が Qubes セキュリティチームによって本物であることを証明されます。

同じ日のほかのニュース

一覧に戻る →

2026/08/30 2:49

おどろおどろしい虫たち

## Japanese Translation: Linux カーネルの公式サイトは、AI モデルの学習に使用する自動スクレーパーから多大な負荷をかけています。これらのボットはプロキシ SDK を利用し、数百万件の住宅 IP やモバイル IP を悪用しています。これらのボットは日間のトラフィックのおよそ 33% を消費し、利用可能な CPU コアを約半数(5 つの地理的に分散されたノードを通じて 90 のコアのうち 14〜16 コア)に占有しており、主にレポジトリをクローンするのではなく git コミットを HTML としてレンダリングすることによってこれを行っています。この手法はプロジェクトの著者が「スクレーパーがデータを使用する最も愚かな方法」と呼んでいます。Anubis がアクセス前に SHA256 パズルを要求しているにもかかわらず、ボットが低い難易度を解いた後に難易度がレベル 4 から 5 に引き上げられましたが、これはモバイルユーザーにとってデバイスを温めるという点で依然として不満を生み出しており、人間の行動を模倣する高度な戦術を完全に阻止していません。推定される正当な人間によるトラフィックはわずか約 2% です。スクレーパーは Linux カーネルの履歴が LLM の学習データの豊富な源泉であるためこれを標的としています。また、浅いクローンを使用している脆弱な CI システムは、さらなる即時的過負荷リスクをもたらします。緩和策としては特定の機能を無効化し、匿名ユーザーのアクションをゲートリングするなどの措置が講じられていますが、すべてのデータは引き続きダウンロード可能です。簡単な解決策はありません:新しい AI モデル企業は引き続き無料の学習データを求めており、アプリ開発者は家庭用デバイスを攻撃ベクトルに変え続けており、その結果、サイトはスクレーパーによる負荷から「背景放射線」のような状態に常時置かれています。

2026/08/31 5:00

宇宙のコア:1980年のスペースシャトル搭載のSpacelabコンピュータから復元されたコアメモリモジュール

## Japanese Translation: Spacelab は、スペースシャトルの貨物コンパートメントに搭載された再利用可能な欧州製実験室であり、標準的な IBM AP-101 システムではなく、フランス製 Mitra 125 MS ミニコンピュータを 3 台採用していた。これら 3 台のうち 1 台は実験室を、もう 1 台は実験を担当し、残りの 1 台が予備として機能した。各コンピュータのメモリシステムは 1980 年頃製作され、シリコンではなくフェライトリングを使用した磁性コアメモリを採用しており、「2½D」アーキテクチャにより抑制線を廃止するため、各ビットに独立した X ドライバ回路を設け、位相反転技術を用いることで垂直ドライバの数を半減させていた(U 字形の配線ループを使用)。メモリスタックは 7 ボードで構成され、ドライバボード、4 つのコアプレーンボード、第 2 のドライバボード、およびインターフェースボードからなっていた。各コアプレーンは 1024 本の垂直 Y ワイヤーと 288 本の水平 X ワイヤーで支えられ、16K の 18 ビット語(32 KB)を保持し、総計で 294,912 個のリチウムフェライトコアを有していた。ノイズキャンセレーションにはねじれペアセンスワイヤと「蝶結び」状のクロス構成が用いられ、ダイオードマトリクスはプリント基板間にコードウッド構造を採用しており、各ダイオードチップには 8 コアラインに対応する 16 個のダイオードが含まれていた。1991 年、IBM AP-101S のアップグレードにより、AP-101SL モディフィケーションを通じて磁性コアを半導体メモリに置き換えられながら、フェライトコアメモリが廃棄される直前まで Spacelab システムとの互換性を維持した。 ## Text to translate: Spacelab was a reusable European laboratory carried in the Space Shuttle's cargo bay that employed three French-built Mitra 125 MS minicomputers—rather than standard IBM AP-101 systems—with one managing the laboratory, one managing experiments, and one as a backup. Each computer's memory system, built around 1980, used magnetic core memory with ferrite rings (not silicon) in a "2½D" architecture that eliminated inhibit lines by using separate X driver circuitry for each bit; phase reversal techniques halved the number of vertical drivers via U-shaped wiring loops. The memory stack comprised seven boards: a driver board, four core plane boards, a second driver board, and an interface board. Each core plane held 16K of 18-bit words (32 KB) supported by 1024 vertical Y wires and 288 horizontal X wires, totaling 294,912 lithium ferrite cores. Noise cancellation was achieved through twisted pair sense wires and a "bow tie" crossing configuration, while diode matrices used cordwood construction between printed circuit boards (each diode chip containing 16 diodes for 8 core lines). In 1991, IBM AP-101S upgrades replaced the original magnetic cores with semiconductor memory via the AP-101SL modification, maintaining compatibility with the Spacelab system before ferrite core memory became obsolete.

2026/08/31 1:01

Haiku R1/beta6 がリリースされました

## Japanese Translation: 2026 年 8 月 26 日(水曜日)に、R1/beta6 のリリースをもって Haiku は創業 25 周年を迎えます。これは記念日から約 1 ヶ月後、そして前回から約 2 年後の発表です。この大きなアップデートは開発の一時停止を経て実現され、ユーザーに待ち望まれていた機能向上を提供します。ファンは提供されたダウンロードポータルを通じてすぐにアップグレードを行うか、詳細なリリースノートを確認するか、またはお問い合わせにはプレスコンタクトまでご連絡ください。この発売は Haiku の遺産を称えつつ、オープンソース OS が専用コミュニティと共に進化し続ける中、個々のユーザーならびにテクノロジー企業双方がアクセス可能な導入と継続的なフィードバックへと導く重要な瞬間を象徴します。