Class: Brakeman::CheckQuoteTableName

Inherits:
BaseCheck
  • Object
show all
Defined in:
lib/brakeman/checks/check_quote_table_name.rb

Overview

Check for uses of quote_table_name in Rails versions before 2.3.13 and 3.0.10 http://groups.google.com/group/rubyonrails-security/browse_thread/thread/6a1e473744bc389b

Instance Method Summary collapse

Instance Method Details

#run_checkObject



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/brakeman/checks/check_quote_table_name.rb', line 10

def run_check
  if (version_between?('2.0.0', '2.3.13') or 
      version_between?('3.0.0', '3.0.9'))

    if uses_quote_table_name?
      confidence = :high
    else
      confidence = :medium
    end

    if rails_version =~ /^3/
      message = msg("Rails versions before 3.0.10 have a vulnerability in ", msg_code("quote_table_name"), " ", msg_cve("CVE-2011-2930"))
    else
      message = msg("Rails versions before 2.3.14 have a vulnerability in ", msg_code("quote_table_name"), " ", msg_cve("CVE-2011-2930"))
    end

    warn :warning_type => "SQL Injection",
      :warning_code => :CVE_2011_2930,
      :message => message,
      :confidence => confidence,
      :gem_info => gemfile_or_environment,
      :link_path => "https://groups.google.com/d/topic/rubyonrails-security/ah5HN0S8OJs/discussion",
      :cwe_id => [89]
  end
end

#uses_quote_table_name?Boolean

Returns:

  • (Boolean)


36
37
38
39
40
# File 'lib/brakeman/checks/check_quote_table_name.rb', line 36

def uses_quote_table_name?
  Brakeman.debug "Finding calls to quote_table_name()"

  not tracker.find_call(:target => false, :method => :quote_table_name).empty?
end