Skip to content

Merge release/0.6.3 (and 0.6.2) into next - #1566

Merged
kvinwang merged 7 commits into
nextfrom
chore/merge-0.6.2-0.6.3
Nov 12, 2026
Merged

kvinwang merged 7 commits into
nextfrom
chore/merge-0.6.2-0.6.3

Conversation

@kvinwang

Copy link
Copy Markdown
Collaborator

Brings the guest OS hardening for GHSA-c79w-3x5w-gmm5 from the 0.6.2 and 0.6.3 releases into next.

release/0.6.3 (c5df598f5b) already contains release/0.6.2 (0a210869d7). Both commits are the exact revisions the published OS images were built from, so this must be merged with a merge commit (no squash/rebase) to keep them in next's history.

…dentials

systemd-gpt-auto-generator reads the root disk's GPT and mounts or
activates the partitions it finds. The partition table is host-controlled
and outside the TDX/SEV measurements, so a partition the host appends
(swap, /var, /home, ...) is acted on inside the guest. Reproduced on
mkosi-os-v0.6.1: a host-appended swap partition is activated ~2s into boot
under the generator's "Swap Partition" unit.

Disable it with systemd.gpt_auto=0 on the measured kernel command line
(parsed identically by every systemd since v252, unlike image_policy=) and
remove the generator binary from the prod image, mirroring the deletion the
Yocto backend did and the mkosi rewrite dropped.

Reviewing the same class of mechanism, also set systemd.import_credentials=no
so PID1 stops importing system credentials from SMBIOS and qemu fw_cfg (both
host-controlled and unmeasured; consumed by sysusers, tmpfiles, udev rules,
networkd, ...), and remove the hibernate-resume, bless-boot, system-update,
sysv and rc-local generators, which are unreachable in this image or act on
host-influenced input.

Refs: GHSA-c79w-3x5w-gmm5
Signed-off-by: Kevin Wang <wy721@qq.com>
The Yocto parity spec was derived from the image recipe's package list, so
it checked that required files exist but never that what Yocto stripped
stays stripped: deletions in bbappends and PACKAGECONFIG removals were not
covered, which is how gpt-auto survived the mkosi rewrite. The only
inverse check was a hand-kept denylist that grew after each incident.

- check-parity.py pins the exact set of system generators prod may ship,
  so a package upgrade that adds one fails the build.
- acceptance.sh asserts the measured command line keeps
  systemd.gpt_auto=0 and systemd.import_credentials=no.
- The kernel fragment states DMI_SYSFS, FW_CFG_SYSFS and PSTORE off, so
  check-kernel-config.sh guards them like the other hardening symbols;
  all three are already off, so the built kernel is unchanged.
- Prod also drops the ssh generator (no sshd in prod) and the hibernate
  resume/clear binary and units the removed generator left behind.

Signed-off-by: Kevin Wang <wy721@qq.com>
Signed-off-by: Kevin Wang <wy721@qq.com>
Signed-off-by: Kevin Wang <wy721@qq.com>
Signed-off-by: Kevin Wang <wy721@qq.com>
Signed-off-by: Kevin Wang <wy721@qq.com>
@kvinwang
kvinwang merged commit 547c83c into next Nov 12, 2026
14 checks passed
@kvinwang
kvinwang deleted the chore/merge-0.6.2-0.6.3 branch November 12, 2026 07:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant