Post-submission security, vault and installer maintenance - #5
Draft
aXL333 wants to merge 9 commits into
Draft
Conversation
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.
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Scope
This draft carries six intentionally post-deadline commits that are not on public
main:89633d1— closes the first audit's critical safety/reliability gaps866af36— closes the round-two named bypasses with bypass-focused tests40d2ff1— adds encrypted, opt-in payment-card vault access915fdd3— hardens and completes the maintained installer path7770ec3— verifies the actual pinned Inno compiler engine used in CI970782e— closes the seven Round 3 P0 invariant classes and their sibling pathsWhat changed
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-alpha3atc5fd504remains unchanged as the immutable Build Week deadline snapshot. This draft is clearly post-submission maintenance: it does not alter the Devpost entry, video,/feedbackID, tag, or existing Releases. Noalpha4tag or release has been created.Validation
dotnet build Foreman.slnx -c Debug: 0 warnings, 0 errorsgit diff --check: cleanFollow-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.mdsection 9.