Sha256: 49000bb1fe772a8765179ea9559c5391ab2d80b2cbaada93798ceb87c9dfecd2

Contents?: true

Size: 963 Bytes

Versions: 40

Compression:

Stored size: 963 Bytes

Contents

require 'brakeman/checks/base_check'

class Brakeman::CheckSessionManipulation < Brakeman::BaseCheck
  Brakeman::Checks.add self

  @description = "Check for user input in session keys"

  def run_check
    tracker.find_call(:method => :[]=, :target => :session).each do |result|
      process_result result
    end
  end

  def process_result result
    return unless original? result

    index = result[:call].first_arg

    if input = has_immediate_user_input?(index)
      if params? index
        confidence = :high
      else
        confidence = :medium
      end

      warn :result => result,
        :warning_type => "Session Manipulation",
        :warning_code => :session_key_manipulation,
        :message => msg(msg_input(input), " used as key in session hash"),
        :user_input => input,
        :confidence => confidence,
        :cwe_id => [20] # TODO: what cwe should this be? it seems like it's looking for authz bypass
    end
  end
end

Version data entries

40 entries across 40 versions & 3 rubygems

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