
CVE-2023-49438 - Open Redirect-Schwachstelle in Flask-Security-Too

Eine offene Weiterleitungs-Sicherheitslücke im Python-Paket Flask-Security-Too <= Version 5.3.2 erlaubt es Angreifern, ahnungslose Benutzer durch Missbrauch des ?next-Parameters auf den Routen /login und /register auf bösartige Websites umzuleiten.
Flask-Security-Too enthält eine Logik zur Validierung, dass die im next-Parameter angegebene URL entweder relativ ist oder denselben Netzwerkstandort wie die anfragende URL hat. Dies dient dazu, offene Weiterleitungen zu verhindern.
Das Python-Paket Flask-Security-Too wurde zuvor als anfällig für eine Umgehung der vorhandenen Validierungslogik befunden, und Version 4.1.0 behob die zuvor bekannten Beispiele wie https://example/login?next=\\\github.com
Allerdings wurde ein Workaround entdeckt, der darauf beruht, wie Webbrowser Schrägstriche in URLs normalisieren, wodurch das Paket bis einschließlich Version 5.3.2 verwundbar bleibt.
https://example/login?next=/\github.com
https://example/login?next=\/github.com
Zuvor wurde in CVE-2021-32618 festgestellt, dass „wenn Werkzeug verwendet wird (was bei Flask-Anwendungen sehr üblich ist) als WSGI-Schicht, es standardmäßig IMMER sicherstellt, dass der Location-Header absolut ist – wodurch dieser Angriffsvektor wirkungslos wird."
Allerdings wurde mit Werkzeug >=2.1.0 die Konfiguration autocorrect_location_header auf False geändert – was bedeutet, dass Location-Header in Weiterleitungen standardmäßig relativ sind. Daher kann dieses Problem Anwendungen betreffen, die zuvor nicht betroffen waren, wenn sie Werkzeug >=2.1.0 als WSGI-Schicht verwenden.
pip install -U Flask-Security-Too
ODER
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)*[/\\].*"
ODER
@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
Workaround entdeckt von Brandon T. Elliott, November 2023