docs/TODO #11: record stale non-ECC key bench finding + SELinux hand-run caveat
This commit is contained in:
+21
-3
@@ -1038,10 +1038,28 @@ ECDSA sign → CSR verify → chunked NV write → re-enrol) against the go-tpm
|
|||||||
simulator** (separate `files/enrol/simtest/` module so the CGO simulator never
|
simulator** (separate `files/enrol/simtest/` module so the CGO simulator never
|
||||||
enters the shipped build). Both run in CI.
|
enters the shipped build). Both run in CI.
|
||||||
|
|
||||||
|
**BENCH FINDING 2026-07-02 (FIXED, commit c574fa4) — stale non-ECC key at the
|
||||||
|
handle.** First real-TPM boot (host `cygnus-cruiser-99`, `rd.dot1x=0`) failed:
|
||||||
|
`fleet-enrol: ensure key at 0x81010001: key at handle is not ECC: did not contain
|
||||||
|
eccDetail (selector value was 1)`. The host already had an **RSA** key persisted at
|
||||||
|
`0x81010001` (from an older tpm2-tools/openssl provisioning path); `EnsureKey`
|
||||||
|
fatally errored reading it as ECC → enrolment died before the CSR/POST, so the
|
||||||
|
splash flashed "FIRST-BOOT TPM ENROLMENT" then the test system booted with **no
|
||||||
|
fingerprint and nothing at the broker**. Fix: `EnsureKey` now **evicts a
|
||||||
|
wrong-type/unusable key and recreates** a fresh ECC key (safe on the enrol path —
|
||||||
|
empty NV, no cert references the old key); a valid ECC key is still reused.
|
||||||
|
Regression `simtest/TestEnsureKeyEvictsStaleNonECC` (pre-plants an RSA key). **Needs
|
||||||
|
a rebuild + re-boot to confirm on the bench** (the sim proves the recovery, not the
|
||||||
|
device). ⚠ **Don't hand-run `sudo fleet-enrol` on the booted STIG host to test** —
|
||||||
|
the confined admin domain (`sysadm_t`) is SELinux-**denied** write to
|
||||||
|
`/dev/tpmrm0` (`avc: denied … tpm_device_t`), so it fails before the TPM regardless;
|
||||||
|
the faithful path is the **initramfs** run (reboot) which is unconfined.
|
||||||
|
|
||||||
**BENCH-VERIFY (host side, before trusting):** (a) go-tpm against a REAL TPM +
|
**BENCH-VERIFY (host side, before trusting):** (a) go-tpm against a REAL TPM +
|
||||||
swtpm on the target (the simulator proves the ceremony, not the device); (b)
|
swtpm on the target (the simulator proves the ceremony, not the device) — **the
|
||||||
empty-NV create/persist on a fresh TPM with **empty owner auth** (the code assumes
|
stale-key fix (above) is the first real-TPM result; re-boot to confirm it now
|
||||||
it — a set owner auth needs handling); (c) pre-auth DHCP on `en*` in secure mode
|
reaches the broker**; (b) empty-NV create/persist on a fresh TPM with **empty owner
|
||||||
|
auth** (the code assumes it — a set owner auth needs handling); (c) pre-auth DHCP on `en*` in secure mode
|
||||||
(the `nmcli set managed yes` override of nm-unmanaged.sh actually leases); (d)
|
(the `nmcli set managed yes` override of nm-unmanaged.sh actually leases); (d)
|
||||||
fingerprint renders on the `fleet` Plymouth theme + admin can match it; (e) NV
|
fingerprint renders on the `fleet` Plymouth theme + admin can match it; (e) NV
|
||||||
write + **reboot converges** (2nd boot runs the secure path); (f) prod: broker over
|
write + **reboot converges** (2nd boot runs the secure path); (f) prod: broker over
|
||||||
|
|||||||
Reference in New Issue
Block a user