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
Merged PR #6012 relaxed macOS ACL handling but macAclListingTrustError treats the literal resolved principal name user:0 as root. macOS /bin/ls -lebd prints user:<directory-record-name> for resolved ACL identities; that text is not numeric UID evidence. A non-root record named 0 is therefore accepted as though it were UID 0.
Security boundary
Local plugins are dynamically imported before server bind and run in the proxy process with the operator's credentials. The loader's invariant is that only the checked path owner, the current process user, or actual root may have effective write authority on a plugin file/directory/ancestor. A foreign effective writer must make the path untrusted.
Current path:
aclTrustError executes /bin/ls -lebd -- <path> on macOS.
macAclListingTrustError parses an effective allow ACE.
[owner, currentUser, "root", "0"] accepts user:0 without binding it to UID 0.
loadOcxPlugins subsequently imports the accepted file with operator credentials.
A recorded listing with an operator-owned mode-0600 plugin and user:0 allow write currently returns null (trusted). user:runner and user:root are legitimate controls and must remain trusted; foreign read-only and deny-only entries must remain accepted under #6012's intended policy.
Required fix
Remove the numeric-looking record-name exception, or bind the ACL identity to verified UID/UUID identity before granting root trust. Add a regression that distinguishes user:0 allow write from user:root, owner/current-user grants, harmless read-only entries, and group/bare principals.
This is a follow-up to a changes-requested review that remained unresolved when #6012 was merged as 2a3cfa5abe.
changed the title [-]macOS plugin ACL parser treats the record name user:0 as UID 0[/-][+]macOS plugin ACL parser trusts display names as UID identity[/+]on Sep 27, 2026
Expanded after authoritative Apple ls review: the same UUID-to-record-name rendering means user:root is not independent proof of UID 0 either. Final fix PR #6019 removes both name-only root exceptions while preserving owner/current-user and root-owned-path controls.
Activity
[-]macOS plugin ACL parser treats the record name user:0 as UID 0[/-][+]macOS plugin ACL parser trusts display names as UID identity[/+]Ingwannu commentedon Sep 27, 2026
Expanded after authoritative Apple
lsreview: the same UUID-to-record-name rendering meansuser:rootis not independent proof of UID 0 either. Final fix PR #6019 removes both name-only root exceptions while preserving owner/current-user and root-owned-path controls.lidge-jun commentedon Sep 27, 2026
Fixed on
devby #6019, carried in #6059 (merge8923ad9835).