Skip to content

Commit

Permalink
Merge pull request presidentbeef#196 from grosser/translate-html
Browse files Browse the repository at this point in the history
more details on xss warning
  • Loading branch information
presidentbeef committed Nov 30, 2012
2 parents 1f83da7 + 81001a0 commit ef27b7a
Showing 1 changed file with 11 additions and 10 deletions.
21 changes: 11 additions & 10 deletions lib/brakeman/checks/check_translate_bug.rb
@@ -1,7 +1,6 @@
require 'brakeman/checks/base_check'

#Check for vulnerability in translate() helper that allows cross-site scripting
#http://groups.google.com/group/rubyonrails-security/browse_thread/thread/2b61d70fb73c7cc5
class Brakeman::CheckTranslateBug < Brakeman::BaseCheck
Brakeman::Checks.add self

Expand All @@ -12,32 +11,34 @@ def run_check
version_between?('3.0.0', '3.0.10') or
version_between?('3.1.0', '3.1.1')

if uses_translate?
confidence = CONFIDENCE[:high]
confidence = if uses_translate?
CONFIDENCE[:high]
else
confidence = CONFIDENCE[:med]
CONFIDENCE[:med]
end

version = tracker.config[:rails_version]
description = "have a vulnerability in the translate helper with keys ending in _html"

if version =~ /^3\.1/
message = "Versions before 3.1.2 have a vulnerability in the translate helper."
message = if version =~ /^3\.1/
"Versions before 3.1.2 #{description}."
elsif version =~ /^3\.0/
message = "Versions before 3.0.11 have a vulnerability in translate helper."
"Versions before 3.0.11 #{description}."
else
message = "Rails 2.3.x using the rails_xss plugin have a vulnerability in translate helper."
"Rails 2.3.x using the rails_xss plugin #{description}}."
end

warn :warning_type => "Cross Site Scripting",
:message => message,
:confidence => confidence,
:file => gemfile_or_environment
:file => gemfile_or_environment,
:link_path => "http://groups.google.com/group/rubyonrails-security/browse_thread/thread/2b61d70fb73c7cc5"
end
end

def uses_translate?
Brakeman.debug "Finding calls to translate() or t()"

not tracker.find_call(:target => nil, :methods => [:t, :translate]).empty?
tracker.find_call(:target => nil, :methods => [:t, :translate]).any?
end
end

0 comments on commit ef27b7a

Please sign in to comment.