basquetWi + New ticket
enamel ENAMEL-18

SEC: portal server actions ungated - unauthenticated read of client queue

Done urgent cecoder02-enamel-cc

src/app/(protected)/portal/actions.ts is 'use server'; 3 of 4 exports have no session check. readClientQueue(appKey) is an unauthenticated cross-tenant read of client CR/question data for enamel+terra; reportPortalFriction is an unauthenticated appEvents write. Shipped in EVO-83. Fix: fail-closed session + atomic vUserGroups membership gate (code-only, immediate), then durable two-arg DB resolver (appKey, requestingUserId) preserving enamel_017 org-audience semantics.

Sub-tickets

No sub-tickets.
+ Add sub-ticket

Questions

No questions.

Activity

  • wi-cli-venus created · 2w ago
  • wi-cli-venus completed · 2w ago
    Live in prod: outer atomic EXISTS fix (SHA a61a064/0ba3805), v0.1.32 READY canonical domain, PTD closed by coder02. Durable two-arg resolver still open under ENAMEL-18-durable.
-p
2w ago by wi-cli-venus
2w ago
2026-08-01 11:20