basicbar_integrations.html_sanitize.clean_media_url soll nur relative Pfade in die eigene Media-Ablage zulassen (/media/…, ohne ..). Die Prüfung arbeitet aber auf dem roh kodierten String:
"/media/%2e%2e/api/whoami/" und "/media/.%2E/…" werden akzeptiert.
- Browser lösen diese Segmente als
.. auf.
- Ein von einer Admin-Person verfasstes
<img> kann dadurch einen Same-Origin-GET auf beliebige Pfade auslösen, z. B. API-Endpunkte.
Die Auswirkung ist gering: Nötig sind Admin-Rechte zum Verfassen, und es entsteht nur ein GET ohne Antwortauswertung. Die Absicht der Funktion wird aber unterlaufen.
Vorschlag
- Normalisiert prüfen:
posixpath.normpath(urllib.parse.unquote(url)) muss mit /media/ beginnen.
- Backslashes ablehnen.
- Tests ergänzen für
%2e%2e, gemischte Groß-/Kleinschreibung, doppelt kodiertes %252e und \.
- Als
integrations/v0.2.1 releasen. Die nutzenden Apps (Ausleihbar, AbstimmBAR) heben dann ihre Requirements an.
Aufgefallen im Abschluss-Review von virtUOS/ausleihbar#5.
basicbar_integrations.html_sanitize.clean_media_urlsoll nur relative Pfade in die eigene Media-Ablage zulassen (/media/…, ohne..). Die Prüfung arbeitet aber auf dem roh kodierten String:"/media/%2e%2e/api/whoami/"und"/media/.%2E/…"werden akzeptiert...auf.<img>kann dadurch einen Same-Origin-GET auf beliebige Pfade auslösen, z. B. API-Endpunkte.Die Auswirkung ist gering: Nötig sind Admin-Rechte zum Verfassen, und es entsteht nur ein GET ohne Antwortauswertung. Die Absicht der Funktion wird aber unterlaufen.
Vorschlag
posixpath.normpath(urllib.parse.unquote(url))muss mit/media/beginnen.%2e%2e, gemischte Groß-/Kleinschreibung, doppelt kodiertes%252eund\.integrations/v0.2.1releasen. Die nutzenden Apps (Ausleihbar, AbstimmBAR) heben dann ihre Requirements an.Aufgefallen im Abschluss-Review von virtUOS/ausleihbar#5.