🚨 Your current dependencies have known security vulnerabilities 🚨
This dependency update fixes known security vulnerabilities. Please see the details below and assess their impact carefully. We recommend to merge and deploy this as soon as possible!
Here is everything you need to know about this update. Please take a good look at what changed and the test results before merging this pull request.
The request phase of the OmniAuth Ruby gem is vulnerable to Cross-Site
Request Forgery (CSRF) when used as part of the Ruby on Rails framework, allowing
accounts to be connected without user intent, user interaction, or feedback to
the user. This permits a secondary account to be able to sign into the web
application as the primary account.
In order to mitigate this vulnerability, Rails users should consider using the omniauth-rails_csrf_protection gem.
This release includes minor changes that remove code specific to rack versions we no longer support, it also loosens the top-end of the version of hashie we require.
No breaking changes are expected with this change. If a breaking change has been introduced with this release, please open an issue.
You can view a list of commits and changed files here: v1.9.0...v1.9.1
Faraday v1.3.0 is the first release to officially support Ruby 3.0 in the CI pipeline 🎉🍾!
This is also the first release with a previously "included" adapter (Net::HTTP) being isolated into a separate gem🎊!
The new adapter is added to Faraday as a dependency for now, so that means full backwards-compatibility, but just to be safe be careful when upgrading!
This is a huge step towards are Faraday v2.0 objective of pushing adapters and middleware into separate gems.
Many thanks to the Faraday Team, @JanDintel and everyone who attended the ROSS Conf remote event
Features
Improves consistency with Faraday::Error and Faraday::RaiseError (#1229, @qsona, @iMacTia)
#499: Add Hashie::Extensions::Mash::PermissiveRespondTo to make specific subclasses of Mash fully respond to messages for use with SimpleDelegator - @michaelherold.
Fixed
#467: Fixed DeepMerge#deep_merge mutating nested values within the receiver - @michaelherold.
#505: Ensure that Hashie::Arrays are not deconverted within Hashie::Mashes to make Mash#dig work properly - @michaelherold.
#507: Suppress Psych.safe_load arg warn when using Psych 3.1.0+ - @koic.
#508: Fixed Mash.load no longer uses Rails-only #except - @bobbymcwho.
#508: Fixed Hashie::Extensions::DeepMerge#deep_merge not correctly dup'ing sub-hashes if active_support hash extensions were not present - @bobbymcwho.
#500: Do not warn when setting Mash keys that look like underbang, bang, and query methods - @michaelherold.
#510: Ensure that Hashie::Mash#compact is only defined on Ruby version >= 2.4.0 - @bobbymcwho.
#511: Suppress keyword arguments warning for Ruby 2.7.0 - @koic.
#512: Suppress an integer unification warning for using Ruby 2.4.0+ - @koic.
#513: Suppress a Ruby's warning when using Ruby 2.6.0+ - @koic.
Miscellaneous
#981: Exclude tests from the gem release to reduce installation size and improve installation speed - @michaelherold.
#465: Fixed deep_update to call any readers when a key exists - @laertispappas.
#479: Fixed an issue with Hash#except not returning a Mash in Rails 6 - @bobbymcwho.
#489: Updated the documentation to exlain the behavior of Mash and keyword arguments - @Bhacaz.
Miscellaneous
#465: Clean up our RuboCop configuration and fix the outstanding line length violations. This involved some minor refactoring on Hashie::Extensions::Coercion, Hashie::Extensions::Dash::IndifferentAccess, Hashie::Extensions::DeepLocate, Hashie::Extensions::Mash::SafeAssignment, and Hashie::Hash, but none that were detectable via the test suite - @michaelherold.
#482: Update Travis configs to make jruby builds run on trusty dist. - @BobbyMcWho.
v1.7.0 adds the option to specify that your strategy should utilize PKCE.
Simply add the pkce option to your strategy and set it to true:
option:pkce,true
By default, this uses the recommended code_challenge_method of "S256", but in the event that you want to use basic, or some other future code challenge method, you can specify them in your strategy as well:
It is possible to forge a secure or host-only cookie prefix in Rack using
an arbitrary cookie write by using URL encoding (percent-encoding) on the
name of the cookie. This could result in an application that is dependent on
this prefix to determine if a cookie is safe to process being manipulated
into processing an insecure or cross-origin request.
This vulnerability has been assigned the CVE identifier CVE-2020-8184.
Versions Affected: rack < 2.2.3, rack < 2.1.4
Not affected: Applications which do not rely on __Host- and __Secure- prefixes to determine if a cookie is safe to process
Fixed Versions: rack >= 2.2.3, rack >= 2.1.4
Impact
An attacker may be able to trick a vulnerable application into processing an
insecure (non-SSL) or cross-origin request if they can gain the ability to write
arbitrary cookies that are sent to the application.
Workarounds
If your application is impacted but you cannot upgrade to the released versions or apply
the provided patch, this issue can be temporarily addressed by adding the following workaround:
module Rack
module Utils
module_function def parse_cookies_header(header)
return {} unless header
header.split(/[;] */n).each_with_object({}) do |cookie, cookies|
next if cookie.empty?
key, value = cookie.split('=', 2)
cookies[key] = (unescape(value) rescue value) unless cookies.key?(key)
end
end
end
end
It is possible to forge a secure or host-only cookie prefix in Rack using
an arbitrary cookie write by using URL encoding (percent-encoding) on the
name of the cookie. This could result in an application that is dependent on
this prefix to determine if a cookie is safe to process being manipulated
into processing an insecure or cross-origin request.
This vulnerability has been assigned the CVE identifier CVE-2020-8184.
Versions Affected: rack < 2.2.3, rack < 2.1.4
Not affected: Applications which do not rely on __Host- and __Secure- prefixes to determine if a cookie is safe to process
Fixed Versions: rack >= 2.2.3, rack >= 2.1.4
Impact
An attacker may be able to trick a vulnerable application into processing an
insecure (non-SSL) or cross-origin request if they can gain the ability to write
arbitrary cookies that are sent to the application.
Workarounds
If your application is impacted but you cannot upgrade to the released versions or apply
the provided patch, this issue can be temporarily addressed by adding the following workaround:
module Rack
module Utils
module_function def parse_cookies_header(header)
return {} unless header
header.split(/[;] */n).each_with_object({}) do |cookie, cookies|
next if cookie.empty?
key, value = cookie.split('=', 2)
cookies[key] = (unescape(value) rescue value) unless cookies.key?(key)
end
end
end
end
There was a possible directory traversal vulnerability in the Rack::Directory app
that is bundled with Rack.
Versions Affected: rack < 2.2.0
Not affected: Applications that do not use Rack::Directory.
Fixed Versions: 2.1.3, >= 2.2.0
Impact
If certain directories exist in a director that is managed by Rack::Directory, an attacker could, using this vulnerability, read the
contents of files on the server that were outside of the root specified in the
Rack::Directory initializer.
Workarounds
Until such time as the patch is applied or their Rack version is upgraded,
we recommend that developers do not use Rack::Directory in their
applications.
There was a possible directory traversal vulnerability in the Rack::Directory app
that is bundled with Rack.
Versions Affected: rack < 2.2.0
Not affected: Applications that do not use Rack::Directory.
Fixed Versions: 2.1.3, >= 2.2.0
Impact
If certain directories exist in a director that is managed by Rack::Directory, an attacker could, using this vulnerability, read the
contents of files on the server that were outside of the root specified in the
Rack::Directory initializer.
Workarounds
Until such time as the patch is applied or their Rack version is upgraded,
we recommend that developers do not use Rack::Directory in their
applications.
Response.[] and MockResponse.[] for creating instances using status, headers, and body. (@ioquatix)
Convenient cache and content type methods for Rack::Response. (#1555, @ioquatix)
Changed
Request#params no longer rescues EOFError. (@jeremyevans)
Directory uses a streaming approach, significantly improving time to first byte for large directories. (@jeremyevans)
Directory no longer includes a Parent directory link in the root directory index. (@jeremyevans)
QueryParser#parse_nested_query uses original backtrace when reraising exception with new class. (@jeremyevans)
ConditionalGet follows RFC 7232 precedence if both If-None-Match and If-Modified-Since headers are provided. (@jeremyevans)
.ru files supports the frozen-string-literal magic comment. (@eregon)
Rely on autoload to load constants instead of requiring internal files, make sure to require 'rack' and not just 'rack/...'. (@jeremyevans)
Etag will continue sending ETag even if the response should not be cached. (@henm)
Request#host_with_port no longer includes a colon for a missing or empty port. (@AlexWayfer)
All handlers uses keywords arguments instead of an options hash argument. (@ioquatix)
Files handling of range requests no longer return a body that supports to_path, to ensure range requests are handled correctly. (@jeremyevans)
Multipart::Generator only includes Content-Length for files with paths, and Content-Dispositionfilename if the UploadedFile instance has one. (@jeremyevans)
Request#ssl? is true for the wss scheme (secure websockets). (@jeremyevans)
Rack::HeaderHash is memoized by default. (#1549, @ioquatix)
Rework host/hostname/authority implementation in Rack::Request. #host and #host_with_port have been changed to correctly return IPv6 addresses formatted with square brackets, as defined by RFC3986. (#1561, @ioquatix)
Rack::Builder parsing options on first #\ line is deprecated. (#1574, @ioquatix)
Removed
Directory#path as it was not used and always returned nil. (@jeremyevans)
BodyProxy#each as it was only needed to work around a bug in Ruby <1.9.3. (@jeremyevans)
URLMap::INFINITY and URLMap::NEGATIVE_INFINITY, in favor of Float::INFINITY. (@ch1c0t)
Deprecation of Rack::File. It will be deprecated again in rack 2.2 or 3.0. (@rafaelfranca)
Support for Ruby 2.2 as it is well past EOL. (@ioquatix)
Remove Rack::Files#response_body as the implementation was broken. (#1153, @ioquatix)
Remove SERVER_ADDR which was never part of the original SPEC. (#1573, @ioquatix)
Depfu will automatically keep this PR conflict-free, as long as you don't add any commits to this branch yourself. You can also trigger a rebase manually by commenting with @depfu rebase.
All Depfu comment commands
@depfu rebase
Rebases against your default branch and redoes this update
@depfu recreate
Recreates this PR, overwriting any edits that you've made to it
@depfu merge
Merges this PR once your tests are passing and conflicts are resolved
@depfu close
Closes this PR and deletes the branch
@depfu reopen
Restores the branch and reopens this PR (if it's closed)
@depfu pause
Ignores all future updates for this dependency and closes this PR
@depfu pause [minor|major]
Ignores all future minor/major updates for this dependency and closes this PR
@depfu resume
Future versions of this dependency will create PRs again (leaves this PR as is)
🚨 Your current dependencies have known security vulnerabilities 🚨
This dependency update fixes known security vulnerabilities. Please see the details below and assess their impact carefully. We recommend to merge and deploy this as soon as possible!
Here is everything you need to know about this update. Please take a good look at what changed and the test results before merging this pull request.
What changed?
↗️ omniauth (indirect, 1.9.0 → 2.0.0) · Repo
Security Advisories 🚨
🚨 CSRF vulnerability in OmniAuth's request phase
Release Notes
1.9.1
Does any of this look wrong? Please let us know.
Commits
See the full diff on Github. The new version differs by more commits than we can show here.
✳️ omniauth-google-oauth2 (0.8.0 → 0.8.1) · Repo · Changelog
Release Notes
0.8.1
Does any of this look wrong? Please let us know.
Commits
See the full diff on Github. The new version differs by more commits than we can show here.
↗️ faraday (indirect, 0.17.0 → 1.3.0) · Repo · Changelog
Release Notes
1.3.0
1.2.0
1.1.0
1.0.1
0.17.3
0.17.1
Does any of this look wrong? Please let us know.
Commits
See the full diff on Github. The new version differs by more commits than we can show here.
↗️ hashie (indirect, 3.6.0 → 4.1.0) · Repo · Changelog
Release Notes
4.1.0
4.0.0
Does any of this look wrong? Please let us know.
Commits
See the full diff on Github. The new version differs by more commits than we can show here.
↗️ jwt (indirect, 2.2.1 → 2.2.2) · Repo · Changelog
Release Notes
2.2.2
Does any of this look wrong? Please let us know.
Commits
See the full diff on Github. The new version differs by more commits than we can show here.
↗️ multi_json (indirect, 1.14.1 → 1.15.0) · Repo · Changelog
Release Notes
1.15.0 (from changelog)
Does any of this look wrong? Please let us know.
Commits
See the full diff on Github. The new version differs by more commits than we can show here.
↗️ oauth2 (indirect, 1.4.2 → 1.4.4) · Repo · Changelog
Release Notes
1.4.4 (from changelog)
1.4.3 (from changelog)
Does any of this look wrong? Please let us know.
Commits
See the full diff on Github. The new version differs by more commits than we can show here.
↗️ omniauth-oauth2 (indirect, 1.6.0 → 1.7.1) · Repo
Release Notes
1.7.1
1.7.0
Does any of this look wrong? Please let us know.
Commits
See the full diff on Github. The new version differs by more commits than we can show here.
↗️ rack (indirect, 2.1.1 → 2.2.3) · Repo · Changelog
Security Advisories 🚨
🚨 Percent-encoded cookies can be used to overwrite existing prefixed cookie names
🚨 Percent-encoded cookies can be used to overwrite existing prefixed cookie names
🚨 Directory traversal in Rack::Directory app bundled with Rack
🚨 Directory traversal in Rack::Directory app bundled with Rack
Release Notes
2.2.2 (from changelog)
2.2.1 (from changelog)
2.2.0 (from changelog)
2.1.2 (from changelog)
Does any of this look wrong? Please let us know.
Commits
See the full diff on Github. The new version differs by more commits than we can show here.
🆕 faraday-net_http (added, 1.0.0)
🆕 rack-protection (added, 2.1.0)
🆕 ruby2_keywords (added, 0.0.2)
Depfu will automatically keep this PR conflict-free, as long as you don't add any commits to this branch yourself. You can also trigger a rebase manually by commenting with
@depfu rebase
.All Depfu comment commands