RowAttest Attestation Report
RA-SAMPLE0001 · SAMPLE
Sample. Synthetic data throughout. “Tasklio” is a fictional demo application built by RowAttest to show the report format. Names and identifiers are placeholders; the signature in the block below is a real Ed25519 signature over this excerpt's canonical JSON, made with a demo key.
1 · Header
- Project ref
- tasklio-demo (fictional)
- Environment
- declared as staging by the customer
- Run window (UTC)
- 2026-09-18 14:02:11 → 14:09:47
- Engine
- v0.1.0-sample
- Issued by
- RW Digital Ventures LLC (RowAttest)
2 · Executive summary
1 of 93 evaluated boundaries failed: a seeded attacker in one tenant could reach another tenant's data. Details in the findings section.
92
Pass
1
Fail
12
Not evaluated
0
Error
Coverage: 7 of 8 tables evaluated (84 cells) plus 1 storage bucket (9 cells); 1 table not evaluated (12 cells, unknown tenancy).
5 · Finding F-1 · cross-tenant UPDATE on tasks
- What was accessed
- A task row belonging to tenant A (synthetic row rowattest_synthetic_task_a1) was modified by a user in tenant B
- As whom
- Seeded user [email protected] (tenant B, role: member)
- Reproduction
- PATCH /rest/v1/tasks?id=eq.<synthetic-id> with tenant-B access token, header Prefer: return=representation; body {"title": "changed-by-b"}
- Evidence
- HTTP 200; response body contains the modified row (1 row returned, synthetic row only)
- Detected by
- Layer A (API) and Layer B (policy simulation), both agree
- Fix direction
- The UPDATE policy on tasks checks membership in USING but has no WITH CHECK, and the USING clause does not compare org_id. Add an org_id membership check to both clauses.