Skip to content

Mass Assignment Vulnerability

Description

The application permits attributes that could lead to mass assignment vulnerabilities. Permitting attributes such as `admin`, `role`, `banned`, etc., without proper authorization checks can lead to security issues like unauthorized access or privilege escalation.

Examples

Insecure Code

ruby
params.permit!(:admin, :role, :banned)

Secure Code

ruby
def user_params
  permitted = params.require(:user).permit(:name, :email)
  permitted[:role] = params[:user][:role] if current_user.admin? && params[:user][:role].present?
  permitted
end

Remediation

Explicitly permit attributes, implement role-based permissions, and avoid using `params.permit!`. Use specific permit statements instead of permitting all parameters to ensure only expected attributes are allowed for mass assignment.

Rule Details

FieldValue
IDCODE-0542
CategoryInjection
SeverityMEDIUM
CWECWE-915
ConfidenceHIGH
ImpactHIGH
LikelihoodMEDIUM
ExploitabilityEASY
Tagsmass assignment, ruby on rails
OWASPA6:2017-Security Misconfiguration, A08:2021-Software and Data Integrity Failures

References