mattzollinhofer / teachy

Assignment Tracker
0 stars 1 forks source link

🚨 [security] Update omniauth: 1.9.0 → 2.0.0 (major) #110

Open depfu[bot] opened 3 years ago

depfu[bot] commented 3 years ago

🚨 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

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.

More info is available here: https://github.com/omniauth/omniauth/wiki/Resolving-CVE-2015-9284

Release Notes

1.9.1

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

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

0.8.1 - 2020-12-12

Added

  • Support reading the access token from a json request body.

Deprecated

  • Nothing.

Removed

  • No longer verify the iat claim for JWT.

Fixed

  • A few minor issues with .rubocop.yml.
  • Issues with image resizing code when the image came with size information from Google.

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

Highlights

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

Fixes

  • Don't assign to global ::Timer (#1227, @bpo)

Documentation

Misc

1.2.0

Features

  • Introduces on_request and on_complete methods in Faraday::Middleware. (#1194, @iMacTia)

Fixes

Documentation

  • Add comment in gemspec to explain exposure of examples and spec folders. (#1192, @iMacTia)
  • Adapters, how to create them (#1193, @olleolleolle)
  • Update documentation on using the logger (#1196, @tijmenb)
  • Adjust the retry documentation and spec to align with implementation (#1198, @nbeyer)

Misc

1.1.0

Features

Fixes

  • Avoid last arg as keyword param warning when building user middleware on Ruby 2.7 (#1153 @dgholz)
  • Limits net-http-persistent version to < 4.0 (#1156 @iMacTia)
  • Update typhoeus to new stable version (1.4) (#1159 @AlexWayfer)
  • Properly fix test failure with Rack 2.1+. (#1171 @voxik)

Documentation

  • Improves documentation on how to contribute to the site by using Docker. (#1175 @iMacTia)
  • Remove retry_change_requests from documentation (#1185 @stim371)

Misc

1.0.1

Fixes:

  • Use Net::HTTP#start(&block) to ensure closed TCP connections (#1117)
  • Fully qualify constants to be checked (#1122)
  • Allows parse method to be private/protected in response middleware (#1123)
  • Encode Spaces in Query Strings as '%20' Instead of '+' (#1125)
  • Limits rack to v2.0.x (#1127)
  • Adapter Registry reads also use mutex (#1136)

Documentation:

  • Retry middleware documentation fix (#1109)
  • Docs(retry): precise usage of retry-after (#1111)
  • README: Link the logo to the website (#1112)
  • Website: add search bar (#1116)
  • Fix request/response mix-up in docs text (#1132)

0.17.3

This is the last release before v1.0! When you're ready to upgrade, run your app with FARADAY_DEPRECATE=warn and check out the Upgrading guide.

Fixes:

Misc:

0.17.1

Final release before Faraday v1.0, with important fixes for Ruby 2.7.

Fixes:

  • RaiseError response middleware raises exception if HTTP client returns a nil
    status. (#1042)

Misc:

  • Fix Ruby 2.7 warnings (#1009)
  • Add Faraday::Deprecate to warn about upcoming v1.0 changes. (#1054, #1059,
    #1076, #1077)
  • Add release notes up to current in CHANGELOG.md (#1066)
  • Port minimal rspec suite from main branch to run backported tests. (#1058)

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

Added

  • #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.

4.0.0

Full Changelog

New in 4.0.0:

4.0.0 - 2019-10-30

Added

  • #323: Added Hashie::Extensions::Mash::DefineAccessors - @marshall-lee.
  • #474: Expose YAML#safe_load options in Mash#load - @riouruma, @dblock.
  • #478: Added optional array parameter to Hashie::Mash.disable_warnings - @bobbymcwho.
  • #481: Ruby 2.6 - Support Hash#merge and #merge! called with multiple Hashes/Mashes - @bobbymcwho.
  • #488: Added ability to create an anonymous Hashie::Mash subclass with key conflict errors silenced using Hashie::Mash.quiet.new - @bobbymcwho.

Changed

Fixed

  • #459: Fixed a regression in Mash.load that disallowed aliases - @arekt and @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.

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

v2.2.2 (2020-08-18)

Full Changelog

Implemented enhancements:

  • JWK does not decode. #332
  • Inconsistent use of symbol and string keys in args (exp and alrogithm). #331
  • Pin simplecov to < 0.18 #356 (anakinj)
  • verifies algorithm before evaluating keyfinder #346 (jb08)
  • Update Rails 6 appraisal to use actual release version #336 (smudge)
  • Update Travis #326 (berkos)
  • Improvement/encode hmac without key #312 (JotaSe)

Fixed bugs:

  • v2.2.1 warning: already initialized constant JWT Error #335
  • 2.2.1 is no longer raising JWT::DecodeError on nil verification key #328
  • Fix algorithm picking from decode options #359 (excpt)
  • Raise error when verification key is empty #358 (anakinj)

Closed issues:

  • JWT RSA: is it possible to encrypt using the public key? #366
  • Example unsigned token that bypasses verification #364
  • Verify exp claim/field even if it's not present #363
  • Decode any token #360
  • [question] example of using a pub/priv keys for signing? #351
  • JWT::ExpiredSignature raised for non-JSON payloads #350
  • verify_aud only verifies that at least one aud is expected #345
  • Sinatra 4.90s TTFB #344
  • How to Logout #342
  • jwt token decoding even when wrong token is provided for some letters #337
  • Need to use symbolize\_keys everywhere! #330
  • eval() used in Forwardable limits usage in iOS App Store #324
  • HS512256 OpenSSL Exception: First num too large #322
  • Can we change the separator character? #321
  • Verifying iat without leeway may break with poorly synced clocks #319
  • Adding support for 'hd' hosted domain string #314
  • There is no "typ" header in version 2.0.0 #233

Merged pull requests:

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)

  • #408 - Fixed expires_at for formatted time (@Lomey)

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

With the release of OmniAuth v2.0.0, this relaxes the OmniAuth requirement this library has.

1.7.0

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:

option :pkce_options, {
  :code_challenge => proc { |verifier| verifier },
  :code_challenge_method => "basic",
}

Note that the code_challenge must be supplied in the form of something that responds to call.

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

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

🚨 Percent-encoded cookies can be used to overwrite existing prefixed cookie names

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

🚨 Directory traversal in Rack::Directory app bundled with Rack

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.

🚨 Directory traversal in Rack::Directory app bundled with Rack

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.

Release Notes

2.2.2 (from changelog)

Fixed

  • Fix incorrect Rack::Request#host value. (#1591, @ioquatix)
  • Revert Rack::Handler::Thin implementation. (#1583, @jeremyevans)
  • Double assignment is still needed to prevent an "unused variable" warning. (#1589, @kamipo)
  • Fix to handle same_site option for session pool. (#1587, @kamipo)

2.2.1 (from changelog)

Fixed

  • Rework Rack::Request#ip to handle empty forwarded_for. (#1577, @ioquatix)

2.2.0 (from changelog)

SPEC Changes

  • rack.session request environment entry must respond to to_hash and return unfrozen Hash. (@jeremyevans)
  • Request environment cannot be frozen. (@jeremyevans)
  • CGI values in the request environment with non-ASCII characters must use ASCII-8BIT encoding. (@jeremyevans)
  • Improve SPEC/lint relating to SERVER_NAME, SERVER_PORT and HTTP_HOST. (#1561, @ioquatix)

Added

  • rackup supports multiple -r options and will require all arguments. (@jeremyevans)
  • Server supports an array of paths to require for the :require option. (@khotta)
  • Files supports multipart range requests. (@fatkodima)
  • Multipart::UploadedFile supports an IO-like object instead of using the filesystem, using :filename and :io options. (@jeremyevans)
  • Multipart::UploadedFile supports keyword arguments :path, :content_type, and :binary in addition to positional arguments. (@jeremyevans)
  • Static supports a :cascade option for calling the app if there is no matching file. (@jeremyevans)
  • Session::Abstract::SessionHash#dig. (@jeremyevans)
  • 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-Disposition filename 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)
  • Rack::Directory allow directory traversal inside root directory. (#1417, @ThomasSevestre)
  • Sort encodings by server preference. (#1184, @ioquatix, @wjordan)
  • 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)

Fixed

  • Directory correctly handles root paths containing glob metacharacters. (@jeremyevans)
  • Cascade uses a new response object for each call if initialized with no apps. (@jeremyevans)
  • BodyProxy correctly delegates keyword arguments to the body object on Ruby 2.7+. (@jeremyevans)
  • BodyProxy#method correctly handles methods delegated to the body object. (@jeremyevans)
  • Request#host and Request#host_with_port handle IPv6 addresses correctly. (@AlexWayfer)
  • Lint checks when response hijacking that rack.hijack is called with a valid object. (@jeremyevans)
  • Response#write correctly updates Content-Length if initialized with a body. (@jeremyevans)
  • CommonLogger includes SCRIPT_NAME when logging. (@Erol)
  • Utils.parse_nested_query correctly handles empty queries, using an empty instance of the params class instead of a hash. (@jeremyevans)
  • Directory correctly escapes paths in links. (@yous)
  • Request#delete_cookie and related Utils methods handle :domain and :path options in same call. (@jeremyevans)
  • Request#delete_cookie and related Utils methods do an exact match on :domain and :path options. (@jeremyevans)
  • Static no longer adds headers when a gzipped file request has a 304 response. (@chooh)
  • ContentLength sets Content-Length response header even for bodies not responding to to_ary. (@jeremyevans)
  • Thin handler supports options passed directly to Thin::Controllers::Controller. (@jeremyevans)
  • WEBrick handler no longer ignores :BindAddress option. (@jeremyevans)
  • ShowExceptions handles invalid POST data. (@jeremyevans)
  • Basic authentication requires a password, even if the password is empty. (@jeremyevans)
  • Lint checks response is array with 3 elements, per SPEC. (@jeremyevans)
  • Support for using :SSLEnable option when using WEBrick handler. (Gregor Melhorn)
  • Close response body after buffering it when buffering. (@ioquatix)
  • Only accept ; as delimiter when parsing cookies. (@mrageh)
  • Utils::HeaderHash#clear clears the name mapping as well. (@raxoft)
  • Support for passing nil Rack::Files.new, which notably fixes Rails' current ActiveStorage::FileServer implementation. (@ioquatix)

Documentation

2.1.2 (from changelog)

  • Fix multipart parser for some files to prevent denial of service (@aiomaster)
  • Fix Rack::Builder#use with keyword arguments (@kamipo)
  • Skip deflating in Rack::Deflater if Content-Length is 0 (@jeremyevans)
  • Remove SessionHash#transform_keys, no longer needed (@pavel)
  • Add to_hash to wrap Hash and Session classes (@oleh-demyanyuk)
  • Handle case where session id key is requested but missing (@jeremyevans)

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 Status

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)