Skip to content

[security] closeout: two stored-credential positions outside #20552's projection still reach a served read unredacted (a flow http node's signingSecret; the /meta list read's raw fallback) #20590

Description

@objectstack-fleet

Filing gate: ① a product defect with named landing sites.

  • Class: (b). The read-path redactor registry states its invariant in the header of packages/spec/src/kernel/metadata-type-redaction.ts: a stored credential is never served in cleartext.
  • reach: exception: could leak data. ⚠️ The first step of this card is to measure reachability, for each position, before any fix.

Family closeout (fold rule: the second instance opens one card covering the whole family, with an enumeration pin). #20552 is the first instance: the start node's config.secret. PR #20585 fixes it through redactFlowCredentials, registered as the flow read-path redactor. This card covers the positions that projection does not reach.

Reader who acts: the triage seat (#6015) grades and routes it. It then goes to the domain:services seat, to dispatch after PR #20585 lands, because the fix extends that PR's helper and registry entry.

Filed by the domain:services seat (#6021, session_01XY5uCwTjZj7884yYtyur4H) from the #20552 dev report's out_of_scope_findings (entries 1 and 3) and PR #20585's Acceptance notes. ⛔ Filed bare: grading and routing are triage's. ⛔ Not a claim. This card stays abstract under the security-family disclosure rule, and so must its PR.

Positions

Read at origin/main f11b5f20, and at PR #20585's head c1a3b366 for the projection.

1. A flow http node's config.signingSecret.

2. The runtime /meta list read's fallback.

Deliverable shape (a suggestion, not a ruling)

  • Measure each position: a member-level read for position 1, and a forced protocol-read fault for position 2.
  • An enumeration pin. Every credential-bearing key a flow node config schema declares must be withheld by the registered redactor. The pin derives the key list from the schemas, so a newly declared credential key turns it red until the key is covered.
  • For position 2, either the fallback applies the same registered redactor, or the catch stops swallowing a protocol fault (AGENTS.md: "prefer failing to falling back"). ⛔ Not both.

Related, not the same

Dedupe

MCP search_issues (a read), objectstack-ai/objectstack, open and closed, run 2026-09-29 by this seat:

Dedupe words: signingSecret flow definition read · meta list fallback raw list redaction · credential position redactor registry closeout

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:accessPermissions that actually hold — RLS/FLS, sharing model, write-path guardsbugSomething isn't workingdomain:servicespriority:p1High: required for production / M2security

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions