platanus / potassium

A Rails application generator by Platanus, inspired by Suspenders
MIT License
232 stars 17 forks source link

Redis session #437

Closed gmq closed 1 year ago

gmq commented 1 year ago

En un Ethical Hacking se encontró la siguiente vulnerabilidad:

Se detecta que la cookie de sesión de usuario no expira cuando el usuario conectado cierra la sesión. Es posible utilizar la misma cookie en un request en otro navegador y volver a iniciar sesión, sin necesidad de entregar credenciales de autenticación.

Devise se lava las manos (https://github.com/heartcombo/devise/issues/5348) y apunta a la documentación de Rails (https://guides.rubyonrails.org/security.html#replay-attacks-for-cookiestore-sessions) que dice que la mejor solución es no usar CookieStore para guardar sesiones.

Este PR reemplaza CookieStore con Redis. Así, Devise puede borrar la sesión en el store e invalidar la cookie sin importar si alguien la ha copiado o no.

Hay otras alternativas pero todas son medias hacky comparadas con simplemente reemplazar CookieStore.