Skip to content

Post-submission security, vault and installer maintenance - #5

Draft
aXL333 wants to merge 9 commits into
mainfrom
codey/installer-release-readiness
Draft

Post-submission security, vault and installer maintenance#5
aXL333 wants to merge 9 commits into
mainfrom
codey/installer-release-readiness

Conversation

@aXL333

@aXL333 aXL333 commented Jul 23, 2026

Copy link
Copy Markdown
Owner

Scope

This draft carries six intentionally post-deadline commits that are not on public main:

  1. 89633d1 — closes the first audit's critical safety/reliability gaps
  2. 866af36 — closes the round-two named bypasses with bypass-focused tests
  3. 40d2ff1 — adds encrypted, opt-in payment-card vault access
  4. 915fdd3 — hardens and completes the maintained installer path
  5. 7770ec3 — verifies the actual pinned Inno compiler engine used in CI
  6. 970782e — closes the seven Round 3 P0 invariant classes and their sibling paths

What changed

  • makes release payload validation whole-tree and manifest-backed, including root files, helper directories, both MV3 extensions, hashes, and runtime verification
  • rejects side-branch, lightweight, mismatched-version, or otherwise unverifiable release tags before signing
  • refuses unsigned SYSTEM Guardian installation, allows the first correctly signed publisher to establish the HKLM root, and prevents publisher-to-path-hash trust downgrade
  • restores verified last-good settings when the primary is missing or unreadable, migrates legacy seal projections, and refuses security subsystem initialisation after unrecoverable tamper
  • replaces filename-derived alert provenance with an explicit host/agent origin and leaves slow UAC launches under the controller's bounded timeout
  • applies payment-card and signup gates across every verb and exact argument, rejects mixed extension references, blocks unknown browser verbs, and redacts Luhn-valid PANs
  • audits decoy writes/deletes, correlates 4660 deletion events, reports armed-versus-expected coverage, revalidates at startup, and reports partial coverage as Attention
  • retains the encrypted payment-card vault UI, human-editable fields, and per-connected-harness opt-in switches
  • retains the maintained per-user installer path and bundled extension loading paths

Root cause

Round 2 fixed the paths named by the previous report but did not consistently enforce the security properties around them. Round 3 therefore treats each issue as an invariant over every attacker-influenceable input and tests deletion, absence, alternate verbs/arguments, spoofed provenance, slow dependencies, first install, upgrade, and operator-driven paths.

Build Week boundary

v0.1.0-alpha3 at c5fd504 remains unchanged as the immutable Build Week deadline snapshot. This draft is clearly post-submission maintenance: it does not alter the Devpost entry, video, /feedback ID, tag, or existing Releases. No alpha4 tag or release has been created.

Validation

  • isolated dotnet build Foreman.slnx -c Debug: 0 warnings, 0 errors
  • all six suites: 1,426 passed (Core 1,082; MCP 187; Guardian 21; Monitor 84; Vault 45; Linux 7)
  • extension mixed password/card bypass test: passed
  • release-source guard: rejects annotated side-branch and lightweight main tags; accepts the annotated main-line fixture
  • release payload bypass suite: rejects root DLL, hidden/root extras, unknown directories, helper siblings, extension extras, and test fixtures; exact 40-file payload passes
  • workflow YAML and all PowerShell scripts parse successfully
  • git diff --check: clean

Follow-up before public release

Keep this PR draft while Round 3 receives adversarial verification. Before any public maintenance prerelease: obtain a signing certificate for Guardian, smoke-test clean install and alpha3 upgrade on a disposable Windows VM, test partial/missing decoy coverage, load and pair both extensions, and verify uninstall cleanup. Then review the explicitly deferred P1/P2 list in docs/audit-2026-07-25-round3-full.md section 9.

aXL333 added 5 commits July 22, 2026 07:48
P0-1: cover primary-seal deletion and all-local-seal deletion after durable prior-seal evidence.

P0-2: cover unsigned attacker roots with an HKLM anchor, explicit dev opt-in, and transactional policy rollback.

P0-3: cover attacker-minted Critical saturation so host High/Critical arrivals survive both stores.

P0-4: cover stuck pre-handshake launches, throwing relaunch callbacks, and UAC single-flight recovery.

P0-5: cover MCP-token rotation while refusing to bless a current-only settings edit.
@aXL333 aXL333 changed the title Post-submission maintenance: payment vault and installer hardening Post-submission security, vault and installer maintenance Jul 23, 2026
aXL333 added 4 commits July 26, 2026 17:58
P0-1 invariant: a releasable payload is an exact declared tree. First release builds create and verify a whole-tree hash manifest; upgrades delete controlled payload directories before copying; legitimate source additions must be declared; and missing files, hashes, or local validation dependencies fail the release while manifest-free developer runs remain supported. Sibling coverage: root DLLs, hidden files, unknown directories, helper siblings, and extension extras.

P0-2 invariant: SYSTEM Guardian installation accepts only the intended signed Foreman publisher and install root. A first signed install may establish the HKLM root; upgrades must match it without trust downgrade; legitimate uninstall clears it; and unsigned or unverifiable builds fail closed instead of accepting an argv opt-in. Sibling coverage: absent roots, attacker-supplied development flags, and publisher-to-hash downgrade.

P0-3 invariant: existing secured settings never become weak defaults because primary data, schema, or Guardian availability changes. First run without recovery still receives defaults; upgrades accept and migrate the retained legacy projection; legitimate saves reseal; and missing, corrupt, slow, or unavailable inputs restore verified last-good state or stop security initialisation. Sibling coverage: primary deletion, unreadable JSON, projection drift, and slow Guardian.

P0-4 invariant: retention trust comes from an explicit event origin and a pending UAC launch remains controller-owned until it resolves or times out. First-run host events default safely while MCP reports are explicitly agent-originated; upgrades need no operator migration; legitimate host alerts retain priority; and slow UAC prompts are neither killed nor duplicated. Sibling coverage: filename spoofing and long-pending consent.

P0-5 invariant: payment-card release requires explicit approval regardless of verb, argument, or extension route. First run and upgrades preserve the encrypted card store and ACLs; legitimate operator approval still resolves only the exact approved argument; and missing presence, unknown verbs, or mixed references fail closed. Sibling coverage: click verbs, decoy arguments, mixed password/card lists, and unrecognised browser verbs.

P0-6 invariant: decoy coverage is never reported healthy unless the expected tripwires are armed, and removal is observable. First run reports armed counts; upgrades revalidate tracked paths; legitimate removal produces an auditable notice; and an absent or partial sidecar reports Attention rather than green. Sibling coverage: 4660 deletion correlation, restart-time loss, partial arming, and duplicate paths.

P0-7 invariant: only the exact annotated or signed version tag on main may publish a release. First publication and upgrades use the same ancestry and tag-object guard; legitimate manual publication must select a matching tag/version; and missing or unverifiable source metadata fails before signing. Sibling coverage: side-branch tags, lightweight tags, and free-text version mismatch.

Deferred: the P1/P2 items remain explicitly listed in docs/audit-2026-07-25-round3-full.md section 9.
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