security: passphrase only for the disk + no display-manager autologin + chrony/backup in the Surface set + confirmed host names #12

Closed
CanuteTheGreat wants to merge 18 commits from fix/password-separation into main
Owner

Security + owner bug (2026-11-03).

  1. Disk passphrase is only for the disk (secretcheck, shadow_reuse_gate, Surface/gringotts/legacy installers, Surface USB-unplug fixes) - c0759f5.
  2. NO display-manager autologin by default (LightDM/GDM/SDDM/agetty): installer scrubs stale files, opt-in only with a warning; new QEMU gates no_autologin_config_gate + greeter_no_session_gate (Surface XFCE, zfs-enc --desktop, gringotts).
  3. Surface package set gets chrony + horcrux-chrony-nm + horcrux-backup (horcrux-surface-desktop-1-r1); chronyd in the profile services.
  4. Per-machine host name is asked and confirmed (prefilled from PRIV_DIR/hostname, required by the private build); generic names (surface-pro...) refused.
    common/TREE.sha256 changed: Patronus must sync-common. QEMU gate evidence is posted in the PR comments before merge.
Security + owner bug (2026-11-03). 1. Disk passphrase is only for the disk (secretcheck, shadow_reuse_gate, Surface/gringotts/legacy installers, Surface USB-unplug fixes) - c0759f5. 2. NO display-manager autologin by default (LightDM/GDM/SDDM/agetty): installer scrubs stale files, opt-in only with a warning; new QEMU gates `no_autologin_config_gate` + `greeter_no_session_gate` (Surface XFCE, zfs-enc --desktop, gringotts). 3. Surface package set gets chrony + horcrux-chrony-nm + horcrux-backup (horcrux-surface-desktop-1-r1); chronyd in the profile services. 4. Per-machine host name is asked and confirmed (prefilled from PRIV_DIR/hostname, required by the private build); generic names (surface-pro...) refused. common/TREE.sha256 changed: Patronus must sync-common. QEMU gate evidence is posted in the PR comments before merge.
- secretcheck.py: in-memory comparison (plain + crypt hash via libcrypt) of every account password against the disk passphrase; root vs user
- validate_config + Installer.go refuse reuse before the disk is touched; guided stages (root/user/disk) reject it; root optional/locked on user machines
- horcrux-surface-auto: asks the login password separately (refuses == passphrase), root locked; target checked closed before the prompt; restart via sysrq (no stick access)
- gringotts-install: no 'Enter = same as passphrase'; sysrq restart
- legacy horcrux-installer.sh: no root:horcrux default (one-time expired password), live horcrux account locked, root != user
- gates: qt.shadow_reuse_gate (shadow hashes vs the test passphrase) in zfs-enc-test + surface xfce test; Surface hot-unplug (device_del) at the prompt; gringotts refusal steps
- tests: common/tests/test_secret_separation.py
security: NO display-manager autologin by default (opt-in with warning, stale files scrubbed), QEMU gates for greeter/no-session/configs, Surface chrony+backup in the package set, per-machine host name asked and confirmed (no generic surface-pro)
All checks were successful
CI / Mobile theme (light/dark) (pull_request) Successful in 4s
CI / Web UI theme (light/dark) (pull_request) Successful in 5s
CI / Check (pull_request) Successful in 1m36s
CI / Security Audit (pull_request) Successful in 3m1s
CI / Build Web UI (pull_request) Successful in 4m26s
CI / USE-flag feature builds (pull_request) Successful in 9m21s
CI / UI E2E (browser) (pull_request) Successful in 8m30s
CI / Gentoo Docker Build (pull_request) Successful in 19m33s
CI / Test (pull_request) Successful in 38m23s
CI / Gentoo USE-flag matrix (ebuild install) (pull_request) Successful in 33m13s
CI / Build (pull_request) Successful in 4m22s
CI / Build-1 (pull_request) Successful in 4m26s
2820e5e71a
t2 preflight announces the detection (the refusal gate reads it; it only logged after the refusal point)
Some checks failed
CI / Web UI theme (light/dark) (pull_request) Successful in 4s
CI / Mobile theme (light/dark) (pull_request) Successful in 6s
CI / Check (pull_request) Successful in 1m42s
CI / Test (pull_request) Has been cancelled
CI / Build (pull_request) Has been cancelled
CI / Build-1 (pull_request) Has been cancelled
CI / Build Web UI (pull_request) Has been cancelled
CI / Security Audit (pull_request) Has been cancelled
CI / Gentoo Docker Build (pull_request) Has been cancelled
CI / USE-flag feature builds (pull_request) Has been cancelled
CI / UI E2E (browser) (pull_request) Has been cancelled
CI / Gentoo USE-flag matrix (ebuild install) (pull_request) Has been cancelled
5fdfc7a38e
gringotts gate: live-helpers regex accepts an image without PRIV keys (and says so); fake restic backup fixture generator (no owner data) for the restore steps
All checks were successful
CI / Mobile theme (light/dark) (pull_request) Successful in 3s
CI / Web UI theme (light/dark) (pull_request) Successful in 3s
CI / Check (pull_request) Successful in 2m25s
CI / Security Audit (pull_request) Successful in 4m32s
CI / Build Web UI (pull_request) Successful in 2m23s
CI / UI E2E (browser) (pull_request) Successful in 9m22s
CI / USE-flag feature builds (pull_request) Successful in 14m0s
CI / Test (pull_request) Successful in 29m1s
CI / Gentoo Docker Build (pull_request) Successful in 30m59s
CI / Build (pull_request) Successful in 4m42s
CI / Build-1 (pull_request) Successful in 5m13s
CI / Gentoo USE-flag matrix (ebuild install) (pull_request) Successful in 46m11s
cb05fff9fc
gringotts gate: log out before the restore (gringotts-restore refuses a running graphical session), start the restored profiles after the first login
Some checks failed
CI / Web UI theme (light/dark) (pull_request) Successful in 4s
CI / Mobile theme (light/dark) (pull_request) Successful in 7s
CI / Check (pull_request) Successful in 2m31s
CI / Security Audit (pull_request) Successful in 4m42s
CI / Build Web UI (pull_request) Successful in 2m33s
CI / USE-flag feature builds (pull_request) Successful in 11m49s
CI / UI E2E (browser) (pull_request) Failing after 12m6s
CI / Test (pull_request) Successful in 28m24s
CI / Build (pull_request) Has been cancelled
CI / Build-1 (pull_request) Has been cancelled
CI / Gentoo Docker Build (pull_request) Has been cancelled
CI / Gentoo USE-flag matrix (ebuild install) (pull_request) Has been cancelled
b6ba4c2342
t2 variant: zfs/zfs-kmod from source, their build deps from the binhost (cmake from source failed to configure in the kernel layer); dump the build log on failure
All checks were successful
CI / Mobile theme (light/dark) (pull_request) Successful in 4s
CI / Web UI theme (light/dark) (pull_request) Successful in 3s
CI / Check (pull_request) Successful in 1m44s
CI / Security Audit (pull_request) Successful in 2m47s
CI / Build Web UI (pull_request) Successful in 2m12s
CI / USE-flag feature builds (pull_request) Successful in 9m27s
CI / UI E2E (browser) (pull_request) Successful in 11m13s
CI / Gentoo Docker Build (pull_request) Successful in 17m2s
CI / Test (pull_request) Successful in 39m13s
CI / Build (pull_request) Successful in 5m37s
CI / Build-1 (pull_request) Successful in 6m8s
CI / Gentoo USE-flag matrix (ebuild install) (pull_request) Successful in 39m13s
1a8e64ec35
t2 variant: put back the headers the gnome-light strip removed (libudev, pam, curl...) before zfs is compiled; found by building zfs in the stripped image
All checks were successful
CI / Web UI theme (light/dark) (pull_request) Successful in 3s
CI / Mobile theme (light/dark) (pull_request) Successful in 4s
CI / Check (pull_request) Successful in 1m21s
CI / Security Audit (pull_request) Successful in 2m45s
CI / Build Web UI (pull_request) Successful in 2m13s
CI / UI E2E (browser) (pull_request) Successful in 8m34s
CI / USE-flag feature builds (pull_request) Successful in 9m54s
CI / Test (pull_request) Successful in 37m28s
CI / Build-1 (pull_request) Successful in 4m10s
CI / Build (pull_request) Successful in 8m51s
CI / Gentoo Docker Build (pull_request) Successful in 48m49s
CI / Gentoo USE-flag matrix (ebuild install) (pull_request) Successful in 1h5m26s
1b35967a0e
CanuteTheGreat closed this pull request 2026-11-04 20:52:47 -08:00
All checks were successful
CI / Web UI theme (light/dark) (pull_request) Successful in 3s
CI / Mobile theme (light/dark) (pull_request) Successful in 4s
CI / Check (pull_request) Successful in 1m21s
CI / Security Audit (pull_request) Successful in 2m45s
CI / Build Web UI (pull_request) Successful in 2m13s
CI / UI E2E (browser) (pull_request) Successful in 8m34s
CI / USE-flag feature builds (pull_request) Successful in 9m54s
CI / Test (pull_request) Successful in 37m28s
CI / Build-1 (pull_request) Successful in 4m10s
CI / Build (pull_request) Successful in 8m51s
CI / Gentoo Docker Build (pull_request) Successful in 48m49s
CI / Gentoo USE-flag matrix (ebuild install) (pull_request) Successful in 1h5m26s

Pull request closed

Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
CanuteTheGreat/horcrux!12
No description provided.