input-trust-audit

Detects server endpoints that trust client-supplied authority values instead of deriving them server-side.

Updated Aug 29, 2026
One-click install
npx skills add https://github.com/1arley/volibear --skill input-trust-audit-1arley
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: input-trust-audit
Source: https://github.com/1arley/volibear/tree/main/.opencode/skills/input-trust-audit
Command: npx skills add https://github.com/1arley/volibear --skill input-trust-audit-1arley

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Web applications often accept sensitive values like userId, role, price, XP, permissions, ownership, status, reward, and timestamps directly from request payloads, letting attackers forge identity, escalate privileges, or manipulate prices. This Skill guides an agent to systematically audit endpoints and verify the server derives these values from the session or database rather than trusting the client. ## Core Features & Use Cases - Authority Value Classification: Enumerates every field an endpoint accepts and labels each as non-sensitive input or an authority value (identity, permission, value, state, order). - Derive-vs-Accept Verification: Traces where each authority value comes from — session token, database, server-side calculation, or the raw request body. - Mass Assignment & Forgery Testing: Sends fields the UI never submits (e.g., role=admin, price=0, xp=99999) to confirm whether the server binds and persists them. - Use Case: While reviewing a checkout endpoint, you discover the handler reads price from the request body. The Skill walks you through forging price=0, confirming the free checkout, and reporting it with a confidence-scaled finding. ## Quick Start Audit the checkout and profile endpoints for client-supplied authority values like role, price, and userId, and report any the server accepts from the request body.

Frequently Asked Questions about input-trust-audit

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I test an API for mass assignment vulnerabilities?▼

Send fields the UI never submits, such as role=admin or isAdmin=true, in the request body and check whether the server persists them. If the handler binds the entire body to the model without an explicit allowlist, the extra fields get written.

What values should never be trusted from the client?▼

Authority values must never come from the request payload: userId, role, price, XP, permissions, ownership, status, reward, and timestamps. The server should derive them from the authenticated session, the database, or server-side calculation.

How do I check if userId comes from the session or request body?▼

Trace the handler code to see whether userId is read from token.sub or the session versus req.body or query parameters. If it comes from the body, an attacker can forge another user's identity.

When is a client-supplied field not an input trust vulnerability?▼

Legitimate client inputs like bio, displayName, and preferences are meant to come from the user. Also, if the server ignores body fields and derives values from the session or catalog, or validates role changes against the caller's existing permissions, there is no vulnerability.

How are input trust findings reported and confidence-scored?▼

Findings use a report template naming the field, endpoint, and where the server reads the value. Confidence scales from CONFIRMED (forgery reproduced with observed effect) down through HIGH CONFIDENCE, POSSIBLE, and SPECULATIVE.