Skip to content

[security] Two more spec schemas permit inline credentials: ExternalDataSourceSchema.authentication (clientSecret/apiKey) and MessageQueueConfigSchema.sasl.password — census toward #7990's parked boundary-guard reopen trigger #8075

Description

@huangyiirene

Found during the #7990 spec-half census (dev session session_0123k4cam2jEAkPmbJeoaY3r, 2026-08-12). Filed unassigned for triage to grade and route; not fixed in the #7990 PR — the maintainer's Option-A ruling (#7990 comment 5266068845) scoped that fix to the two measured surfaces (driver config, connector authentication) and parked the class-level sys_metadata write-boundary guard with reopen trigger = "a third measured artefact-type surface". This card is the census input for that trigger, not a re-litigation of the ruling.

What was measured (file:line on origin/main, 2026-08-12)

  1. packages/spec/src/data/external-lookup.zod.tsExternalDataSourceSchema.authentication is { type: 'oauth2' | 'api-key' | 'basic' | 'none', config: … } whose module docblock's own example writes "clientSecret": "..." inline (~L23). The schema accepts inline secrets in authentication.config.
  2. packages/spec/src/system/message-queue.zod.ts:60-65MessageQueueConfigSchema.sasl declares password: z.string().describe('SASL password') — a required inline broker credential when sasl is present.

What was NOT measured (the grading question)

Whether either schema is reachable from a sys_metadata publish door (metadata-type binding, stack collection, or /meta route) — i.e. whether these are cleartext-at-rest sinks like #7990's ①-c/①-d, or dormant declared shapes with no persisting consumer. ExternalDataSourceSchema sits in data/ next to field-level external-lookup config (plausibly authored inside object metadata); MessageQueueConfigSchema's consumers were not traced. If either is (a) reachable and persisted, it is a third measured surface for the parked Option-B guard; if (b) unreachable, ADR-0049 enforce-or-remove applies instead.

Prior art


Generated by Claude Code

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions