CVE-2021-41275 Authentication Bypass by CSRF Weakness

Critical 9.3 Published Updated

A CSRF vulnerability in spree_auth_devise allows attackers to take over user accounts when specific Rails forgery protection strategies are configured.

Exploited in the wild
Not known
Login needed
Not needed
Attackable
Over the internet
Victim action needed
A user has to click or open something
Fix
Available

What is CVE-2021-41275?

CVE-2021-41275 is a critical vulnerability in spree_auth_devise, published on 17 Nov 2021. An attacker can exploit it over the internet without logging in, and only if a user opens a file or follows a link.

Official description

spree_auth_devise is an open source library which provides authentication and authorization services for use with the Spree storefront framework by using an underlying Devise authentication framework. In affected versions spree_auth_devise is subject to a CSRF vulnerability that allows user account takeover. All applications using any version of the frontend component of spree_auth_devise are affected if protect_from_forgery method is both: Executed whether as: A before_action callback (the default). A prepend_before_action (option prepend: true given) before the :load_object hook in Spree::UserController (most likely order to find). Configured to use :null_session or :reset_session strategies (:null_session is the default in case the no strategy is given, but rails --new generated skeleton use :exception). Users are advised to update their spree_auth_devise gem. For users unable to update it may be possible to change your strategy to :exception. Please see the linked GHSA for more workaround details. ### Impact CSRF vulnerability that allows user account takeover. All applications using any version of the frontend component of `spree_auth_devise` are affected if `protect_from_forgery` method is both: * Executed whether as: * A before_action callback (the default) * A prepend_before_action (option prepend: true given) before the :load_object hook in Spree::UserController (most likely order to find). * Configured to use :null_session or :reset_session strategies (:null_session is the default in case the no strategy is given, but rails --new generated skeleton use :exception). That means that applications that haven't been configured differently from what it's generated with Rails aren't affected. Thanks @waiting-for-dev for reporting and providing a patch �� ### Patches Spree 4.3 users should update to spree_auth_devise 4.4.1 Spree 4.2 users should update to spree_auth_devise 4.2.1 ### Workarounds If possible, change your strategy to :exception: ```ruby class ApplicationController < ActionController::Base protect_from_forgery with: :exception end ``` Add the following to`config/application.rb `to at least run the `:exception` strategy on the affected controller: ```ruby config.after_initialize do Spree::UsersController.protect_from_forgery with: :exception end ``` ### References https://github.com/solidusio/solidus_auth_devise/security/advisories/GHSA-xm34-v85h-9pg2

Weakness: CWE-352

Which versions are affected by CVE-2021-41275?

8 open source packages ship an affected version, including spree_auth_devise. It affects 1 product.

PackageAffectedFixed in
spree_auth_devise RubyGemsAll versions4.0.1
spree_auth_devise RubyGemsAll versions4.0.1
spree_auth_devise RubyGemsFrom 4.1.04.1.1
spree_auth_devise RubyGemsFrom 4.1.04.1.1
spree_auth_devise RubyGemsFrom 4.2.04.2.1
spree_auth_devise RubyGemsFrom 4.2.04.2.1
2 more packages
spree_auth_devise RubyGemsFrom 4.3.04.4.1
spree_auth_devise RubyGemsFrom 4.3.04.4.1

Products include Spreecommerce Spree Auth Devise.

How do I fix CVE-2021-41275?

Upgrade spree_auth_devise to a fixed version for your release line: 4.0.1, 4.1.1, 4.2.1 or 4.4.1.

Is CVE-2021-41275 being exploited?

There is no known exploitation of CVE-2021-41275 in the wild and no public exploit code.

Sources

Also known as GHSA-26xx-m4q2-xhq8.

Is CVE-2021-41275 in your software?

Upload an SBOM and sbomify checks it against every vulnerability here, every day.

Check your SBOMs for free