Sha256: cf437c262f8e1a030abea7bf8a3b5906b90486e6796e2a6a4f1fcbb2a06f5524

Contents?: true

Size: 1.13 KB

Versions: 40

Compression:

Stored size: 1.13 KB

Contents

require 'brakeman/checks/base_check'

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

  @description = "Warn about denial of service with render :text (CVE-2014-0082)"

  def run_check
    if version_between? "3.0.0", "3.0.20" or
       version_between? "3.1.0", "3.1.12" or
       version_between? "3.2.0", "3.2.16"

      tracker.find_call(:target => nil, :method => :render).each do |result|
        if text_render? result
          warn_about_text_render
          break
        end
      end
    end
  end

  def text_render? result
    node_type? result[:call], :render and
    result[:call].render_type == :text
  end

  def warn_about_text_render
    message = msg(msg_version(rails_version), " has a denial of service vulnerability ", msg_cve("CVE-2014-0082"), ". Upgrade to ", msg_version("3.2.17"))

    warn :warning_type => "Denial of Service",
      :warning_code => :CVE_2014_0082,
      :message => message,
      :confidence => :high,
      :link_path => "https://groups.google.com/d/msg/rubyonrails-security/LMxO_3_eCuc/ozGBEhKaJbIJ",
      :gem_info => gemfile_or_environment,
      :cwe_id => [20]
  end
end

Version data entries

40 entries across 40 versions & 3 rubygems

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