Fictional code report
From a source finding to a reviewed change.
This authored example shows how to investigate a potential ownership issue in source code. The repository, file and data are fictional. It is not a customer scan, a live report or a claim about detection accuracy.
By Vibe App Scanner · Updated
Code scanning is included with Go from $29/month and Pro from $49/month for new accounts. Free accounts do not include repository scans. Existing account and AppSumo terms are unchanged.
Potential cross-account project update
Illustration · Authorization review
A signed-in caller can choose the project ID
- Example file
- app/actions/rename-project.ts:5
- What needs review
- The relationship between the verified caller and the record being updated.
A project ID reaches a database write. The shown write has no owner constraint. The surrounding authentication and authorization context must be reviewed before confirming a vulnerability.
export async function renameProject(id: string, title: string) {
await requireUser();
await db.project.update({ where: { id }, data: { title } });
}Why it matters: if this is a private owner-only project and no enforced permission boundary protects the write, another signed-in account could attempt to rename it. Source suspicion alone does not establish that the action is reachable or exploitable in production.
What would change the conclusion?
| Observation | Review decision |
|---|---|
| The data-access client enforces the caller’s project membership on every write. | Inspect and test that boundary before confirming the finding. An unresolved client wrapper is not automatically unsafe. |
| A session is checked, but the database write accepts any submitted project ID. | Investigate a missing resource permission check. Authentication alone is not authorization. |
| The project is intentionally editable by all signed-in members. | Review the intended role policy and other effects. Do not assume an owner-only rule. |
| The relevant file or helper was not assessed. | Mark the context incomplete. No finding is not evidence of safety. |
A proposed change to review
const result = await db.project.updateMany({
where: { id: validatedInput.id, ownerId: verifiedUser.id },
data: { title: validatedInput.title },
});
if (result.count !== 1) throw new Error('Project unavailable.');This example assumes verified server-side identity, validated inputs and an owner-only access model. A shared workspace may require membership and roles instead. Read the complete review example and its assumptions before adapting the pattern.
- Confirm the intended caller/resource relationship and inspect the surrounding helpers.
- Ask your coding tool for a proposed diff and tests using disposable records.
- Test the legitimate owner, another account, anonymous access and relevant team roles.
- Review the change, deploy only when approved and scan the new source snapshot.
Coverage is part of the result
This page is a handcrafted illustration. It has no actual scanned-file count, tool completion status or severity score. A real report records the selected source, coverage and available tool results; check those before acting.
- Selected branch, application folder and file limits affect what was read.
- Skipped files, failed tools and unsupported language/framework patterns leave uncertainty.
- Source evidence does not prove the same version is deployed or establish full runtime reachability.
- “No longer reported” can reflect a changed scope or incomplete checks. It is not a verified-fix badge.
The live-app sample report illustrates a different input and evidence type. Neither sample substitutes for testing your own intended permissions.