Skip to content

clean_media_url akzeptiert prozent-kodierte Punkt-Segmente (/media/%2e%2e/…) #6

Description

@rrolf

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions