
CVE-2023-49438 - Vulnerabilidad de redirección abierta en Flask-Security-Too

Una vulnerabilidad de redirección abierta en el paquete de Python Flask-Security-Too <=versión 5.3.2 permite a los atacantes redirigir a usuarios desprevenidos a sitios maliciosos mediante una URL manipulada, abusando del parámetro ?next en las rutas /login y /register.
Flask-Security-Too contiene lógica para validar que la URL especificada dentro del parámetro next sea relativa o tenga la misma ubicación de red que la URL solicitante. Esto está implementado en un intento de prevenir redirecciones abiertas.
El paquete de Python Flask-Security-Too anteriormente se descubrió que era vulnerable a una omisión de la lógica de validación existente, y la versión 4.1.0 parcheó los ejemplos previamente conocidos, como https://example/login?next=\\\github.com
Sin embargo, se ha descubierto una solución alternativa debido a cómo los navegadores web normalizan las barras en las URL, lo que hace que el paquete sea vulnerable hasta la versión <=5.3.2.
https://example/login?next=/\github.com
https://example/login?next=\/github.com
Anteriormente se señaló en CVE-2021-32618 que "si se usa Werkzeug (lo cual es muy común con aplicaciones Flask) como capa WSGI, por defecto SIEMPRE garantiza que la cabecera Location sea absoluta, lo que hace que este vector de ataque sea inofensivo".
Sin embargo, con Werkzeug >=2.1.0, la configuración autocorrect_location_header se cambió a False, lo que significa que las cabeceras de ubicación en redirecciones son relativas por defecto. Por lo tanto, este problema puede afectar a aplicaciones que antes no estaban afectadas, si están usando Werkzeug >=2.1.0 como capa WSGI.
pip install -U Flask-Security-Too
O
app.config['SECURITY_REDIRECT_VALIDATE_MODE'] = "regex"
app.config['SECURITY_REDIRECT_VALIDATE_RE'] = r"^/{4,}|\\{3,}|[\s\000-\037][/\\]{2,}(?![/\\])|[/\\](https://github.com/brandon-t-elliott/cve-2023-49438/blob/HEAD/%5B%5E/%5C%5C%5D%7C/%5B%5E/%5C%5C%5D)*[/\\].*"
O
@app.after_request
def fix_location_header(response):
response.autocorrect_location_header = True
return response
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-49438
https://nvd.nist.gov/vuln/detail/CVE-2023-49438
Solución alternativa descubierta por Brandon T. Elliott, noviembre de 2023