CVE-2026-121876

Description

A flaw was found in the interaction between systemd-gpt-auto-generator and confidential computing guest VM images in OpenShift Sandboxed Containers (confidential peer pods). systemd-gpt-auto-generator automatically discovers and mounts GPT partitions by type GUID at boot with no user confirmation. In the confidential computing threat model, where the host/hypervisor is the adversary, a malicious host can inject partitions into the guest's virtual disk. Most critically, injecting a swap partition causes the guest kernel to page out TEE-encrypted memory to a host-controlled block device, breaking the confidentiality guarantee of the hardware TEE (AMD SEV-SNP, Intel TDX).

The PodVM images use a GPT-partitioned disk with dm-verity on the root partition. However, the roothash= kernel parameter only disables root auto-discovery — non-root partitions (swap, /home, /var, /srv, /var/tmp) are still auto-discovered and mounted. The generator is shipped unmasked in the RHEL systemd-udev subpackage, and no kernel command line parameter in the measured UKI addon disables it. Additionally, the PodVM measurement script captures PCRs 3, 9, 11, and 12, but not PCR 5 (GPT partition table), so partition table modifications are not detected by remote attestation.

Statement

A vulnerability was found in the interaction between systemd-gpt-auto-generator and confidential computing guest VM images in OpenShift Sandboxed Containers (confidential peer pods). systemd-gpt-auto-generator automatically discovers and mounts GPT partitions by type GUID at boot with no user confirmation.

A malicious host, injecting a swap partition causes the guest kernel to page out TEE-encrypted memory to a host-controlled block device, breaking the confidentiality guarantee of the hardware TEE.

Mitigation

Add systemd.gpt_auto=0 to the measured kernel command line (UKI addon) to completely
disable systemd-gpt-auto-generator. Since the PodVM already uses explicit partition
layout and dm-verity, auto-discovery is unnecessary.

Alternative mitigations:
- Disable swap specifically: add systemd.swap=0 to the kernel command line
- Mask the generator in the guest image:
  ln -sf /dev/null /etc/systemd/system-generators/systemd-gpt-auto-generator
- Include PCR 5 in the PodVM measurement script alongside PCRs 3, 9, 11, 12
- For systemd 254+: set restrictive image policy via systemd.image_policy=root=verity+signed+encrypted+unprotected+absent:swap=absent:home=absent:srv=absent:var=absent:tmp=absent

Common Vulnerability Scoring System (CVSS) Score Details

Info alert:Important note

CVSS scores for open source components depend on vendor-specific factors (e.g. version or build chain). Therefore, Red Hat's score and impact rating can be different from NVD and other vendors. Red Hat remains the authoritative CVE Naming Authority (CNA) source for its products and services (see Red Hat classifications).

The following CVSS metrics and score provided are preliminary and subject to review.

CVSS v3 Score Breakdown

Red HatNVDcve.org
Base Score7.9N/AN/A
Attack VectorLocalN/AN/A
Attack ComplexityLowN/AN/A
Privileges RequiredHighN/AN/A
User InteractionNoneN/AN/A
ScopeChangedN/AN/A
ConfidentialityHighN/AN/A
Integrity ImpactHighN/AN/A
Availability ImpactNoneN/AN/A

Vector

Red Hat: CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:N

Understanding the Weakness (CWE)

Confidentiality

Technical Impact: Read Application Data

Acknowledgements

Red Hat would like to thank Spyros Seimenis (Edgeless Systems) for reporting this issue.

Frequently Asked Questions

Want to get errata notifications? Sign up here.