GNU Guix の複数の脆弱性 CVE-N/A が FIX:root 権限でのファイル書込みや情報漏洩の恐れ

GNU Guix Vulnerabilities Let Attackers Overwrite Arbitrary Files and Escalate Privileges

2026/07/10 gbhackers — すべての GNU Guix インストール環境に影響する複数の脆弱性について、セキュリティ研究者 Caleb Ristvedt が 2026年7月2日に問題を公表し注意を呼びかけた。特に root 権限で guix-daemon を実行しているシステムは、悪意の代替 (substitute) サーバの展開による攻撃や、中間者攻撃 (Man-in-the-Middle) を仕掛けられる可能性がある。それにより、root がアクセス可能な場所である /etc/passwd などに、任意のファイルが書き込まれるという深刻なリスクが生じる。

GNU Guix の 3 つの脆弱性

1 つ目の最も深刻な脆弱性は、バイナリ substitute を展開するために使用される restore-file に存在する。これまでの Guix は、アーカイブ全体のハッシュが検証される前に、substitute の内容をダウンロード/展開していた。つまり、抽出処理で悪意のアーカイブ・エントリが適切に検証されず、攻撃者が制御する substitute ソースから、guix-daemon のユーザー権限でアクセス可能な任意の場所への、任意のファイル書き込みが可能になる。

攻撃者にとって必要なことは、対象システムによる substitute のダウンロード処理への介入のみである。設定済みの substitute サーバ/自動検出されたサーバ/substitute サービスを装うネットワーク攻撃者を介して、このような状況が発生する可能性がある。また、HTTPS を使用していても、この問題を完全には軽減できない。メタデータの処理過程において、攻撃者がアーカイブのダウンロード段階より以前に、substitute URL を置き換えることが可能であるためだ。

2 つ目の脆弱性は、fetch-narinfos ルーチンに存在し、返されたメタデータと要求されたストア・アイテムとの整合性検証の欠落に起因する。悪意の substitute サーバが別のパッケージ向けの正規の substitute を返し、Guix に古いソフトウェアや脆弱なソフトウェアをインストールさせる可能性がある。

3 つ目の substitute の脆弱性は、信頼できないクライアントが “file:// URI” を substitute URL またはアーカイブの保存場所として指定できるという欠陥である。通常のローカル・ユーザーは guix-daemon のソケットへ接続できるため、デーモン・ユーザー権限を用いることで、アクセス可能なファイルをデーモンに読み込ませることが可能になる。

読み込まれたファイルに不正な形式の narinfo データが含まれている場合に、Guix は例外を引き起こし、ファイルの一部を含むバックトレースを要求元クライアントへ返す可能性がある。この問題により、読み取り可能なファイルに保存されたパスフレーズなどの機密データが漏えいする恐れがある。さらに、シンボリック・リンクの処理や /proc/PID/fd 経由の参照の悪用により、攻撃者が追跡可能なデーモン・ユーザー・プロセスが読み込むファイルに対して干渉が生じ得る。

これとは別に、guix pull と guix time-machine には、チャネル認証キャッシュの処理方法にパス・トラバーサルの問題が存在する。悪意の channels ファイルにおいて、”../../../../newfile” のようなチャネル名が使用されると、コマンドを実行したユーザーによる書き込み可能なファイルの作成/上書きが可能になる。

ただし、出力形式が制限されているため、最も可能性の高い影響はサービス拒否 (DoS) となる。その一方で、”/proc” 内の特殊なファイルを標的とすることで、さらに大きなリスクが生じる可能性があると、研究者たちは警告している。

パッチと緩和策

すでに Guix は、プルリクエスト #9665 に含まれるコミットにより、これらの問題に対処している。ユーザーにとって必要なことは、コミット 897832f374dcdc9eeaf19d01e70b9a92fccfc68c 以降へとアップグレードすることである。

リモートからの攻撃リスクを軽減する暫定措置として、管理者は “–no-substitutes” オプションを使用して substitute を無効化できる。ただし、この対策では、guix-daemon のソケットへのアクセスが可能なローカル攻撃を防げないため、パッチの適用は不可欠である。

Guix System を利用している管理者は、以下のコマンドを実行する必要がある。

guix pull
sudo guix system reconfigure /run/current-system/configuration.scm
sudo herd restart guix-daemon

その他の Linux ディストリビューションを利用しているユーザーは、root 権限で Guix を更新し、guix-daemon サービスを再起動する必要がある。Guix は影響を受けるインストール環境を特定するために、guix repl — guix-substitute-and-pull-vuln-check.scm で実行可能なテスト・スクリプトも提供している。