security: bind cloud copy receipts to private storage - #186
Draft
seonghobae wants to merge 7 commits into
Draft
Conversation
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
This was referenced Aug 12, 2026
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.
Purpose
Harden the cloud-copy receipt publication boundary so immutable copy receipts are not created under Unix directories writable by group/other principals and are private from creation, without changing cloud-copy planning, human approval, source preservation, rollback, provider/filesystem authority, or receipt semantics.
Exact current state
6ed7994b413ca6bb6fe03603334e68504f5d1a1d.main:be418bac9bfbdc8aa41b1a698713833e3dbccfdc.main -> headcomparison isdiverged,ahead_by = 7,behind_by = 15, with merge base309eaaa5c6d9d7826f23f2718ea454267e2882a9.src-tauri/src/cloud_transfer.rsplussrc-tauri/tests/cloud_receipt_private_authority.rs; historical temporary/self-modifying workflow material and unrelated local-eviction work are no longer present in the current delta.31626017882, Release31626017871, Security Scan31626017872, and SAST Semgrep31626017929all completedsuccess.COMMENTED; its workflow-permission thread targets an obsolete predecessor repair workflow and is resolved/outdated. It is not approval and does not transfer semantic evidence to this head.Test-first hardening currently preserved
The focused production-path regression requires group-write and other-user-write receipt directories to fail closed, preserve the source, roll back a newly copied destination, and create no receipt. Current production code:
0o022with stablereceipt-directory-writable-by-others;0o400atcreate_newtime; andset_permissions.Cloud-copy planning, explicit approval, receipt payload/integrity, destination rollback, source preservation, and copy authority remain otherwise unchanged.
Residual directory-identity security boundary
This head does not satisfy issue #194's stronger same-user directory-replacement contract. It still authorizes a receipt directory by pathname metadata and later creates/cleans the record through a re-resolved pathname. #187 is the proving owner for descriptor/handle-relative immutable publication and must be integrated or otherwise establish the accepted primitive first. #186 must then be deliberately reconstructed/converged on the then-current protected main and adopt/prove the object-bound primitive before integration. Existing checks cannot transfer to that changed head.
Scope / dependency order
#179 owns provider-sync evidence, #181 cloud-review decisions, #182 cloud-eviction authority records, #187 the current object-bound publication primitive, #174 generic cleanup, #156 repository-wide exact coverage, and #149 canonical documentation. This line does not race those owners.
Required before merge
Keep Draft until the unique receipt hardening is deliberately converged onto current protected main; the #194 directory-identity boundary is resolved for this receipt family; unchanged exact-head native and every live required central workflow pass; every valid current-head finding is addressed; repository-wide exact 100% owned-production statement/branch/function/line coverage is satisfied without exclusions or threshold weakening; and fresh live-base ancestry remains current. Pending, queued, skipped-required, failed, stale, predecessor, status-only, model-only, diagnostic-only, or synthetic evidence is not passing.