strix/skills/vulnerabilities/mass_assignment.md
Mass assignment binds client-supplied fields directly into models/DTOs without field-level allowlists. It commonly leads to privilege escalation, ownership changes, and unauthorized state transitions in modern APIs and GraphQL.
isAdmin, role, roles[], permissions[], status, plan, tier, premium, verified, emailVerifieduserId, ownerId, accountId, organizationId, tenantId, workspaceIdusageLimit, seatCount, maxProjects, creditBalancefeatures, flags, betaAccess, allowImpersonationprice, amount, currency, prorate, nextInvoice, trialEndprofile.role, profile[role], settings[roles][]{"role":"user","role":"admin"}application/json, application/x-www-form-urlencoded, multipart/form-data, text/plainaccepts_nested_attributes_forguarded=[] opens all; casts mutating hidden fieldsselect:false doesn't prevent writes; upsert defaultsMass assignment is eliminated by explicit mapping and per-field authorization. Treat every client-supplied attribute—especially nested or batch inputs—as untrusted until validated against an allowlist and caller scope.