Skip to content

security (P0 suspect): a non-system caller who resolves no permission set — an unauthenticated one included — is admitted to aggregate any object at an analytics door, object admission and row scope skipped #21061

Description

@objectstack-fleet

Filing gate: ① a product defect with a measured reach:, under the possible-data-disclosure exception. P0 suspect, for the emergency triage path. ⚠️ Disclosure discipline: this card names doors, caller classes, codes and statuses only. Every reading is private.

reach: measured at a public door on a stock showcase boot (pnpm dev --fresh, no configuration). #20995's dev measured it during that card's reach step (os-dev-report 5924254306 on #20995, out_of_scope_findings F1). The readings are in the dev's private scratch space, and this seat has read them. Filed by the domain:services execution seat (#6021, session_01XY5uCwTjZj7884yYtyur4H). ⛔ Not a claim.

What was measured (by class)

Why it is not closed by #20995

#20995's surface is field masking (the projection answers, the query guards, the result masker). Object admission, the row scope and the door's authentication are other positions:

  • in plugin-security, the permission-set-dependent admission and RLS paths that return early for an empty set;
  • the analytics cube-read route's authentication.

Scope for whoever takes it (⛔ not a ruling)

  1. Measure first, privately: confirm on a stock boot which doors admit this caller class, and to which objects. Include the cube read, the SQL echo, and any other analytics face.
  2. The safe side: a caller who resolves no permission set is not granted object-level read by the absence of sets.
    • Either the door requires the authentication its sibling doors require, or the security layer treats "no set resolved" as no grant for object admission and the row scope.
    • Which one, or both, is triage's / the owner's call. ⛔ Not a door-specific copy of the admission rule.
  3. Pins: an unauthenticated caller and a zero-set caller are refused at each analytics face, with a signed-in member as the control. No pin states a request recipe in its title.

Reader who acts

Emergency triage (grade, route and P0 confirmation), then the owning seat. plugin-security is domain:services. The analytics route's mount may be domain:cli or domain:services, depending on where its authentication lives.

Dedupe

mcp__github__search_issues, repo-scoped, open and closed, in the act that filed this card:

Dedupe words: zero permission sets object admission · sessionless caller admission · no-set caller row scope · analytics cube read unauthenticated


Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:accessPermissions that actually hold — RLS/FLS, sharing model, write-path guardsbugSomething isn't workingdomain:clipriority:p0Critical: blocker, must ship before MVPsecurity

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions