Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

Vulnerabilidad en el componente frontend en spree_auth_devise (CVE-2021-41275)

Gravedad CVSS v3.1:
ALTA
Tipo:
CWE-352 Falsificación de petición en sitios cruzados (Cross-Site Request Forgery)
Fecha de publicación:
17/11/2021
Última modificación:
07/11/2023

Descripción

spree_auth_devise es una librería de código abierto que proporciona servicios de autenticación y autorización para su uso con el marco de trabajo de la tienda Spree mediante el uso de un marco de trabajo de autenticación Devise subyacente. En las versiones afectadas, spree_auth_devise está sujeto a una vulnerabilidad CSRF que permite la toma de posesión de cuentas de usuario. Todas las aplicaciones que utilizan cualquier versión del componente frontend de spree_auth_devise están afectadas si el método protect_from_forgery es ambos: Se ejecuta como: Un callback before_action (el predeterminado). Un prepend_before_action (opción prepend: true dada) antes del hook :load_object en Spree::UserController (orden más probable de encontrar). Configurado para utilizar las estrategias :null_session o :reset_session (:null_session es la predeterminada en caso de que no se dé ninguna estrategia, pero los raíles --nuevo esqueleto generado utilizan :exception). Se recomienda a los usuarios que actualicen su gema spree_auth_devise. Para los usuarios que no puedan actualizar, puede ser posible cambiar su estrategia a :exception. Por favor, consulte el GHSA vinculado para más detalles de la solución. ### Impacto Vulnerabilidad CSRF que permite la toma de cuenta del usuario. Todas las aplicaciones que utilizan cualquier versión del componente frontend de `spree_auth_devise` están afectadas si el método `protect_from_forgery` es a la vez: * Se ejecuta ya sea como: * Un callback before_action (el predeterminado) * Un prepend_before_action (opción prepend: true dada) antes del hook :load_object en Spree::UserController (orden más probable de encontrar). * Configurado para usar las estrategias :null_session o :reset_session (:null_session es la predeterminada en caso de que no se dé ninguna estrategia, pero el esqueleto generado por rails --new usa :exception). Eso significa que las aplicaciones que no han sido configuradas de forma diferente a la generada con Rails no se ven afectadas. Gracias @waiting-for-dev por informar y proporcionar un parche ? ### Parches Los usuarios de Spree 4.3 deben actualizar a spree_auth_devise 4.4.1 Los usuarios de Spree 4.2 deben actualizar a spree_auth_devise 4.2.1 ### Soluciones Si es posible, cambia tu estrategia a :exception: ```ruby class ApplicationController < ActionController::Base protect_from_forgery with: :exception end ``` Añade lo siguiente a `config/application. rb ``para ejecutar al menos la estrategia `:exception` en el controlador afectado: ```ruby config.after_initialize do Spree::UsersController.protect_from_forgery with: :exception end ``` ### Referencias https://github.com/solidusio/solidus_auth_devise/security/advisories/GHSA-xm34-v85h-9pg2

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:a:spreecommerce:spree_auth_devise:*:*:*:*:*:ruby:*:* 4.0.1 (incluyendo)
cpe:2.3:a:spreecommerce:spree_auth_devise:*:*:*:*:*:ruby:*:* 4.3.0 (incluyendo) 4.4.1 (excluyendo)
cpe:2.3:a:spreecommerce:spree_auth_devise:4.1.0:-:*:*:*:ruby:*:*
cpe:2.3:a:spreecommerce:spree_auth_devise:4.1.0:rc1:*:*:*:ruby:*:*
cpe:2.3:a:spreecommerce:spree_auth_devise:4.2.0:*:*:*:*:ruby:*:*