You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Reject shared-writable directories for atomic JSON publication #487
Successful atomic_write_json publication must install the inode populated by
this writer, not a different regular file that reused its temporary basename.
Observed
The temp inode is validated before writing, but os.replace resolves the
basename later. In a group/world-writable destination directory, another OS
principal can replace that entry after flush and cause unrelated bytes to be
published as lifecycle evidence.
Acceptance
Define the same-OS-principal directory ownership boundary explicitly.
Reject destination directories writable by group or other principals before
creating a temporary file.
Preserve support for owner-private/owner-written run directories on macOS and
Linux.
Add a deterministic rejection regression with no destination mutation.
The macOS ACL bypass found during final review is fixed at 5ef7c1ffe5200ffb68f5d1b5b425c63961790c37.
Darwin now inspects ACL_TYPE_EXTENDED through acl_get_fd_np on the retained
directory descriptor and rejects any extended ACL before creating a temporary
entry. The regression uses the real /bin/chmod +a API against a mode-0700
directory and confirms the destination remains unchanged.
Activity
fix: bind publication to owner-private directory (#487)
fix: reject Darwin extended ACL publication (#487)
Anionix commentedon Jul 24, 2026
The macOS ACL bypass found during final review is fixed at
5ef7c1ffe5200ffb68f5d1b5b425c63961790c37.Darwin now inspects
ACL_TYPE_EXTENDEDthroughacl_get_fd_npon the retaineddirectory descriptor and rejects any extended ACL before creating a temporary
entry. The regression uses the real
/bin/chmod +aAPI against a mode-0700directory and confirms the destination remains unchanged.