Skip to content

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.

Source evidence · fictional file, lines 3–6
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?

Evidence needed to evaluate this finding
ObservationReview 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

Illustrative owner constraint, not a complete patch
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.

  1. Confirm the intended caller/resource relationship and inspect the surrounding helpers.
  2. Ask your coding tool for a proposed diff and tests using disposable records.
  3. Test the legitimate owner, another account, anonymous access and relevant team roles.
  4. 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.