Sha256: 1799ef21ba8b21312e3f908e2d64a43f35ccbfb0f5314b4ed9bf2fa8ad5051a2

Contents?: true

Size: 1.06 KB

Versions: 40

Compression:

Stored size: 1.06 KB

Contents

require 'brakeman/checks/base_check'

class Brakeman::CheckSecrets < Brakeman::BaseCheck
  Brakeman::Checks.add_optional self

  @description = "Checks for secrets stored in source code"

  def run_check
    check_constants
  end

  def check_constants
    @warned = Set.new

    @tracker.constants.each do |constant|
      name = constant.name_array.last
      value = constant.value

      if string? value and not value.value.empty? and looks_like_secret? name
        match = [name, value, value.line]

        unless @warned.include? match
          @warned << match

          warn :warning_code => :secret_in_source,
            :warning_type => "Authentication",
            :message => msg("Hardcoded value for ", msg_code(name), " in source code"),
            :confidence => :medium,
            :file => constant.file,
            :line => constant.line,
            :cwe_id => [798]
        end
      end
    end
  end

  def looks_like_secret? name
    # REST_AUTH_SITE_KEY is the pepper in Devise
    name.match(/password|secret|(rest_auth_site|api)_key$/i)
  end
end

Version data entries

40 entries across 40 versions & 3 rubygems

Version Path
brakeman-7.0.0 lib/brakeman/checks/check_secrets.rb
brakeman-lib-7.0.0 lib/brakeman/checks/check_secrets.rb
brakeman-min-7.0.0 lib/brakeman/checks/check_secrets.rb
brakeman-6.2.2 lib/brakeman/checks/check_secrets.rb
brakeman-lib-6.2.2 lib/brakeman/checks/check_secrets.rb
brakeman-min-6.2.2 lib/brakeman/checks/check_secrets.rb
brakeman-6.2.2.rc1 lib/brakeman/checks/check_secrets.rb
brakeman-min-6.2.1 lib/brakeman/checks/check_secrets.rb
brakeman-lib-6.2.1 lib/brakeman/checks/check_secrets.rb
brakeman-6.2.1 lib/brakeman/checks/check_secrets.rb
brakeman-6.2.0 lib/brakeman/checks/check_secrets.rb
brakeman-lib-6.2.0 lib/brakeman/checks/check_secrets.rb
brakeman-min-6.2.0 lib/brakeman/checks/check_secrets.rb
brakeman-6.1.2 lib/brakeman/checks/check_secrets.rb
brakeman-lib-6.1.2 lib/brakeman/checks/check_secrets.rb
brakeman-min-6.1.2 lib/brakeman/checks/check_secrets.rb
brakeman-min-6.1.1 lib/brakeman/checks/check_secrets.rb
brakeman-lib-6.1.1 lib/brakeman/checks/check_secrets.rb
brakeman-6.1.1 lib/brakeman/checks/check_secrets.rb
brakeman-6.1.0 lib/brakeman/checks/check_secrets.rb