脆弱性の概要
| 項目 | 内容 |
|---|---|
| CVE | CVE-2026-77159 |
| 影響を受ける製品 | libvirt |
| 関連コンポーネント | QEMU / swtpm |
| 脆弱性の種類 | シンボリックリンク追跡による不適切な所有権変更 |
| 影響を受ける関数 | qemuTPMEmulatorPrepareHost() |
| CVSS v3.1 | 7.8(High) |
| 主な影響 | ローカル権限昇格、機密性・完全性・可用性への影響 |
| 修正 | シンボリックリンクを追跡しないファイル操作へ変更 |
libvirtとは
libvirtは、仮想マシンや仮想化環境を管理するためのオープンソースソフトウェアです。
QEMU/KVMをはじめとする複数のハイパーバイザーに対応しており、仮想マシンの作成、起動、停止、ネットワーク設定、ストレージ管理などを統一的なAPIで管理できます。
Linuxを利用したサーバー仮想化基盤やクラウド基盤などで広く利用されています。
また、libvirtでは仮想マシンへTPM機能を提供するため、ソフトウェアTPMエミュレーターであるswtpmと連携することがあります。
swtpmとは
swtpmは、ソフトウェア上でTrusted Platform Module(TPM)を実装するオープンソースソフトウェアです。
物理TPMを搭載していない仮想マシンに対して仮想TPM(vTPM)を提供でき、BitLockerなどのディスク暗号化、セキュアブート、暗号鍵保護などのセキュリティ機能で使用されることがあります。
libvirtとQEMUを組み合わせた仮想化環境では、仮想マシンへTPMを提供するためにswtpmが利用される場合があります。
脆弱性の詳細
本脆弱性は、libvirtの以下の処理に存在します。
qemuTPMEmulatorPrepareHost()
仮想マシンにswtpmデバイスが設定されている場合、libvirtは仮想マシン起動前の準備処理として、swtpmが利用するログファイルを作成し、その所有者をswtpmプロセスの実行ユーザーへ変更します。
脆弱な処理では、ログファイルが存在しない場合にファイルを作成した後、パス名を使用して chown() を実行していました。
概念的には以下のような処理です。
chown(tpm->data.emulator.logfile, swtpm_user, swtpm_group);
chown() は通常、指定されたパスがシンボリックリンクである場合、そのリンク先を追跡して処理します。
一方、検証された環境ではswtpmログディレクトリを低権限のswtpmユーザーが書き換えることができました。
そのため、攻撃者がswtpmユーザーの権限を取得している場合、正規のログファイルを削除し、任意のホストファイルを指すシンボリックリンクへ置き換えることが可能となります。
その後、swtpmを利用する仮想マシンを起動すると、root権限で動作するlibvirtがそのシンボリックリンクを追跡し、リンク先ファイルの所有者をswtpmユーザーへ変更します。
この結果、本来swtpmユーザーが所有できないホスト上のファイルについて、所有権を取得できる可能性があります。
脆弱性が成立する条件
本脆弱性は、単にシンボリックリンクが利用できることだけで成立するものではありません。
主に以下の条件が組み合わさることで問題が発生します。
- root権限で動作するlibvirtがファイルの所有権を変更する
- swtpmユーザーがログファイルを格納するディレクトリを書き換えられる
- 所有権変更処理がパスベースで行われ、シンボリックリンクを追跡する
これらの条件が揃うことで、低権限ユーザーの制御下にあるファイルパスと、root権限で動作するlibvirtのファイル操作との間に信頼境界上の問題が生じます。
攻撃の流れ
本脆弱性が悪用された場合、概念的には以下の流れとなります。
- swtpmを利用する仮想マシンが構成される
- libvirtによってswtpm用ログディレクトリおよびログファイルが作成される
- swtpmユーザーが正規のログファイルを削除する
- 攻撃対象となるホスト上のファイルを指すシンボリックリンクを作成する
- swtpmを利用する仮想マシンを起動する
- root権限で動作するlibvirtがログファイルへ
chown()を実行する - シンボリックリンクのリンク先ファイルの所有権がswtpmユーザーへ変更される
重要なのは、攻撃者自身がroot権限で chown() を実行する必要がない点です。
root権限を持つlibvirtデーモンに処理させることで、低権限ユーザーの権限境界を越えたファイル操作が発生します。
検証環境
本脆弱性は以下の環境で検証されています。
| 項目 | 環境 |
|---|---|
| OS | Ubuntu 24.04 LTS(Noble) |
| アーキテクチャ | aarch64 |
| Kernel | 6.8.0-137-generic |
| libvirt | 10.0.0-2ubuntu8.15 |
| QEMU | 8.2.2 |
検証では、機密性の高いシステムファイルではなく、/tmp 配下に作成した無害な検証用ファイルを利用しています。
検証用ファイルをroot所有として作成した後、swtpmログファイルを当該ファイルへのシンボリックリンクへ置き換え、TPMを設定した仮想マシンを起動しました。
その結果、仮想マシン起動処理中にlibvirtによってリンク先ファイルの所有者がrootからswtpmへ変更されることを確認しています。
なお、脆弱性の再現や検証は、必ず自身が管理するシステムまたは明示的な許可を得た環境で実施してください。第三者が管理するシステムへの無断検証は行わないでください。
想定される影響
本脆弱性が悪用された場合、対象となるファイルやシステム構成によって、複数の影響が発生する可能性があります。
ローカル権限昇格
攻撃者は、本来アクセスできないホスト上のファイルの所有権をswtpmユーザーへ変更できる可能性があります。
所有権を取得したファイルがシステムの動作や認証、権限管理に関係するものであった場合、さらなる権限昇格につながる可能性があります。
機密情報へのアクセス
所有者のみが読み取り可能なファイルについて所有権が変更された場合、swtpmユーザーから当該ファイルの内容へアクセスできる可能性があります。
対象となるファイルによっては、機密情報の漏えいにつながる可能性があります。
ファイルの改ざん
所有権が変更されたファイルのパーミッションなどの条件によっては、攻撃者が内容を変更できる可能性があります。
システム設定ファイルなどが対象となった場合、システムの完全性に影響を及ぼす可能性があります。
サービス拒否
システムが必要とするファイルの所有者が意図せず変更された場合、サービスやシステムコンポーネントが正常に動作できなくなる可能性があります。
その結果、サービス停止などの可用性への影響が発生する可能性があります。
攻撃成立に必要な権限
本脆弱性は、インターネットから直接認証なしで悪用できるタイプの脆弱性ではありません。
CVSSではAttack Vectorが「Local」、Privileges Requiredが「Low」と評価されています。
攻撃者は、少なくともswtpmユーザーまたは関連するログディレクトリを操作できる低権限アクセスを取得している必要があります。
そのため、本脆弱性は既存の侵害後に、権限昇格やサンドボックス境界の突破を目的として利用される可能性がある脆弱性と考えられます。
修正内容
本脆弱性への修正では、パス名を直接使用して所有権を変更する方式が見直されました。
修正版では、ログファイルを開く際に O_NOFOLLOW フラグを指定することで、最終パスコンポーネントがシンボリックリンクである場合に処理を拒否します。
そのうえで、検証済みのファイルディスクリプタに対して fchown() を実行します。
概念的には以下のような処理となります。
open(..., O_NOFOLLOW | ...)
fchown(logfd, swtpm_user, swtpm_group)
これにより、攻撃者がログファイルをシンボリックリンクへ置き換えた場合でも、libvirtがリンク先ファイルへ所有権変更を実行することを防止できます。
本脆弱性の修正は、libvirtのアップストリームコミット 68e03ee0 として2026年8月19日にマージされています。
また、libvirt 12.7.0のセキュリティリリースノートにもCVE-2026-77159として記載されています。
推奨される対策
libvirtおよびswtpmを利用している環境では、以下の対応を推奨します。
1. libvirtを修正版へアップデートする
利用しているLinuxディストリビューションが提供するセキュリティアップデートを確認し、本脆弱性の修正を含むパッケージへ更新してください。
アップストリームでは、CVE-2026-77159の修正がlibvirt 12.7.0のセキュリティ修正として公開されています。
ただし、Linuxディストリビューションでは既存のlibvirtバージョンへ修正パッチをバックポートして提供する場合があります。
そのため、単純にバージョン番号のみで判断せず、利用しているOSベンダーのセキュリティアドバイザリを確認してください。
2. swtpmログディレクトリの権限を確認する
swtpmユーザーなどの低権限サービスアカウントが、必要以上にログディレクトリ内のファイルを作成・削除・置換できない構成となっているか確認してください。
サービスアカウントへ付与するファイルシステム権限は必要最小限とすることが重要です。
3. サービスアカウントの権限を最小化する
swtpmをはじめとする仮想化基盤のサービスアカウントについて、不要なログイン権限やファイルアクセス権が付与されていないか確認してください。
低権限アカウントが侵害された場合でも、ホストシステム全体への影響を抑えられる構成とすることが重要です。
4. 不審な所有権変更を監視する
ホスト上の重要なシステムファイルについて、意図しない所有者変更が発生していないか監視してください。
特に、仮想化ホスト上でroot所有のファイルがswtpmなどのサービスアカウント所有へ変更されている場合には、原因を確認することが推奨されます。
SUSE製品への影響
SUSEはCVE-2026-77159を Important と評価し、CVSS v3.1の基本スコアを 7.8(High) としています。
CVSS v4.0では 8.5 と評価されています。
SUSE Linux Enterpriseなど、libvirtを含む複数の製品について修正パッケージが提供されています。
SUSE製品を利用している場合には、SUSEが提供するCVE情報および各製品向けのセキュリティアップデートを確認してください。
まとめ
CVE-2026-77159は、libvirtによるswtpmログファイルの所有権変更処理において、シンボリックリンクを追跡してしまうことに起因する脆弱性です。
低権限のswtpmユーザーがログファイルを任意のホストファイルへのシンボリックリンクへ置き換えた状態で仮想マシンを起動すると、root権限で動作するlibvirtがリンク先ファイルの所有権をswtpmユーザーへ変更する可能性があります。
攻撃対象となるファイルやホスト構成によっては、ローカル権限昇格、機密情報へのアクセス、ファイル改ざん、サービス拒否などにつながる可能性があります。
SUSEは本脆弱性を CVSS v3.1 7.8(High)/Important と評価しています。
libvirtおよびswtpmを利用している環境では、利用しているディストリビューションのセキュリティ情報を確認し、修正パッケージを適用するとともに、swtpmログディレクトリやサービスアカウントのアクセス権限を確認することが重要です。
参考情報
■ CVE
CVE-2026-77159
■ libvirt Security Release Notes
https://libvirt.org/news.html
■ SUSE
https://www.suse.com/security/cve/CVE-2026-77159.html
■ Technical Advisory / Research
https://surajhacx.github.io/hacx/cve-2026-77159.html
■ Upstream Fix
libvirt commit 68e03ee0





