CVE-2015-7576

Description

A flaw was found in the way the Action Controller component compared user names and passwords when performing HTTP basic authentication. Time taken to compare strings could differ depending on input, possibly allowing a remote attacker to determine valid user names and passwords using a timing attack.

Mitigation

Use following code to monkey-patch http_basic_authenticate_with method in ActionController:

module ActiveSupport
module SecurityUtils
def secure_compare(a, b)
return false unless a.bytesize == b.bytesize

l = a.unpack "C#{a.bytesize}"

res = 0
b.each_byte { |byte| res |= byte ^ l.shift }
res == 0
end
module_function :secure_compare

def variable_size_secure_compare(a, b)
secure_compare(::Digest::SHA256.hexdigest(a), ::Digest::SHA256.hexdigest(b))
end
module_function :variable_size_secure_compare
end
end

module ActionController
class Base
def self.http_basic_authenticate_with(options = {})
before_action(options.except(:name, :password, :realm)) do
authenticate_or_request_with_http_basic(options[:realm] || "Application") do |name, password|
# This comparison uses & so that it doesn't short circuit and
# uses `variable_size_secure_compare` so that length information
# isn't leaked.
ActiveSupport::SecurityUtils.variable_size_secure_compare(name, options[:name]) &
ActiveSupport::SecurityUtils.variable_size_secure_compare(password, options[:password])
end
end
end
end
end

Common Vulnerability Scoring System (CVSS) Score Details

Info alert:Important note

CVSS scores for open source components depend on vendor-specific factors (e.g. version or build chain). Therefore, Red Hat's score and impact rating can be different from NVD and other vendors. Red Hat remains the authoritative CVE Naming Authority (CNA) source for its products and services (see Red Hat classifications).

CVSS v2 Score Breakdown

Red HatNVDcve.org
Base Score4.34.3N/A
Attack VectorNetworkNetworkN/A
Access ComplexityMediumMediumN/A
AuthenticationNoneNoneN/A
Confidentiality ImpactPartialPartialN/A
Integrity ImpactNoneNoneN/A
Availability ImpactNoneNoneN/A

Vector

Red Hat: AV:N/AC:M/Au:N/C:P/I:N/A:N

NVD: AV:N/AC:M/Au:N/C:P/I:N/A:N

Understanding the Weakness (CWE)

Confidentiality,Other

Technical Impact: Read Application Data; Other

Information exposure.

Acknowledgements

Red Hat would like to thank the Ruby on Rails project for reporting this issue. Upstream acknowledges Daniel Waterworth as the original reporter.

Frequently Asked Questions

Want to get errata notifications? Sign up here.