Looking for the vulnerability index of Invicti's legacy products?
Rails controller possible sensitive information disclosure - Vulnerability Database

Rails controller possible sensitive information disclosure

Description

Manual confirmation is required for this alert.

Ruby on Rails scaffolding automatically generates models, views, and controllers with built-in support for multiple output formats including JSON and XML. When developers use scaffolding without properly configuring access controls, the auto-generated API endpoints may expose sensitive data through these formats. This vulnerability occurs when Rails controllers respond to requests with data serialization formats (such as .json or .xml extensions) that were not intended for public access, potentially leaking database records, user information, or other confidential data.

Remediation

First, manually verify this vulnerability by accessing the identified endpoint with different format extensions (.json, .xml) and reviewing the response data for sensitive information.

If sensitive data is exposed, implement one or more of the following fixes:

1. Restrict response formats in your controller by explicitly defining allowed formats:

class UsersController < ApplicationController
  respond_to :html  # Only allow HTML format
  # Remove :json, :xml if not needed publicly
end

2. Implement authentication and authorization before responding to requests:
class UsersController < ApplicationController
  before_action :authenticate_user!
  before_action :authorize_user
  
  def show
    @user = User.find(params[:id])
    respond_to do |format|
      format.html
      format.json { render json: @user }
    end
  end
end

3. Filter sensitive attributes from API responses using serializers or by overriding as_json:
class User < ApplicationRecord
  def as_json(options = {})
    super(options.merge(except: [:password_digest, :ssn, :api_key]))
  end
end

4. Remove scaffolded code that is not actively used in production to reduce the attack surface.

Related Vulnerabilities