Repository navigation
Keep disabled Windows action journals private at creation - #320
Merged
Merged
Conversation
ekalb81
marked this pull request as ready for review
October 5, 2026 05:27
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
4 tasks
11 of 13 tasks
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.
Problem and behavior
The disabled action engine could create Windows journal directories, backups, and staged event files with default ACLs. A future action path could expose journal bytes to other local users before permission changes. This change creates those objects with a protected current-user-and-SYSTEM DACL at creation, verifies owner/DACL/type/reparse status through handles, and refuses unsafe existing objects without rewriting them. The root and journal handles stay pinned across event, backup, undo, recovery, and publication operations; path bindings are checked before and after publication.
An earlier revision parsed raw ACE pointers; CodeQL found two invalid-pointer alerts. The final runtime uses the native Windows security-descriptor-to-SDDL API and canonicalizes both observed and allowlisted expected descriptors through that API, while retaining raw owner and null-DACL checks. This accepts equivalent built-in SID aliases; a portable synthetic LOCAL SERVICE (
LS) policy regression covers both files and directories.Production apply and undo remain hard-disabled, with no new mutation IPC, provider adapter, shell execution, or real provider-file access. Provider-target ACL preservation and final CAS/lock, startup recovery, and journal retention remain review gates. Related #46.
Validation and provenance
48d819b: test-only alias fixture change fromc13910b; targeted Windows privacy tests 8/8 pass. All exact-head CI passed before squash merge, including Check + test, Coverage, MSRV, Visual, editors and the final CodeQL aggregate. Independent security review found no blocking issue on the runtime or portable fixture.c13910b: full Windows Rust rerun 890 passed, 19 ignored; Clippy and exact-head CI (Check + test, Coverage, MSRV, Visual, editors, CodeQL aggregate) passed. An earlier full run failed once in unchangedquota_accounts.rs:615with a synthetic settings-save error; that focused test passed alone and the bounded full rerun passed. Cause is unproven and tracked separately in Investigate intermittent Windows live-quota consent save failure #322. These are prior-head results, not claims about the final test-only head.724f784: all six required Windows checks passed. An actual synthetic NTFS junction journal was refused with unchanged referent bytes. Symlink creation was unavailable on this Windows host (privilege 1314), so that fixture branch was not demonstrated here.f3a4fd9(SHA-2569929e40a41f376ba686e0bb661f5c437cadab30cb67f2c96f757521dded80f56). Later runtime changes are Windows-only SDDL validation; the archive is not claimed as current-head source.