|
D-137 phase 2: fix the eight confirmed false-greens, regression-lock each
Tier 2 is now scoped by (host-role, SITE-KEY). Keying on role alone merged all three jumphost creds folders into one basename namespace, so a credential present at ANY site satisfied the row for EVERY site -- how SEC-021's dc0 opnsense-api.txt absence passed a green sweep while tier 1 flagged it. Four committee lenses converged on this. vm-secret-locations gains a site column. Also fixed, each reproduced by the committee and each now regression-locked: - probe_remote called a successfully-read location UNREACHABLE when its glob matched nothing, gating the role and turning every absence FAIL there into an [ok]; a __DONE__ liveness marker now separates "ran, found nothing" from "could not reach". - literal-file locations skipped absent/unreadable detection entirely (the T33 false green surviving in the other path form). - an EMPTY locations list bypassed ruling 3's refusal. - a zero-row matrix reported clean over the empty set. - a mint-ref pointing at a directory crashed with exit 1 -- indistinguishable from findings -- and skipped S5/S6/S7, silently dropping the conflation and asymmetry findings. - mode enforcement was custody-gated, leaving 43 of 77 rows unchecked including the SEC-020 and SEC-022 stores; a world-readable check now applies at any custody. - S5's dc1->dc0 direction was untested; deleting it left the harness green. - rows with no declared location for their scope are disclosed, not skipped. - declared paths/targets are charset-validated and shell-quoted: an unvalidated `;` reached a remote shell, under sudo when --privileged. - creds-audit sprawl globs now cover dotfiles; the prior widening could not see .admin.pass, the dotfile sibling of its own motivating secret. T24 replaced with a checked-in finding-CLASS baseline. The old form grepped for the literal "IDENTITY CONFLATION", so REMEDIATING that defect would have turned the gauntlet red for whoever did the right thing -- making "edit the test" the cheapest response exactly when the guard mattered. Harness 35 -> 43, creds-audit 13 -> 15, gauntlet ALL GREEN (80), lint 0-fail. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HvCyrwvYTTcDYnRErfMsNf |
|---|
|
|
| creds-manifests/vm-secret-locations |
|---|
| docs/changelog-20260726-d137-tier1.md |
|---|
| scripts/creds-audit.sh |
|---|
| scripts/creds-matrix.py |
|---|
| tests/creds-audit/run-tests.sh |
|---|
| tests/creds-matrix/classify-findings.py 0 → 100644 |
|---|
| tests/creds-matrix/expected-findings.txt 0 → 100644 |
|---|
| tests/creds-matrix/run-tests.sh |
|---|