Invia #1004727: music-assistant server <=2.10.4 Relative Path Traversalinformazioni

Titolomusic-assistant server <=2.10.4 Relative Path Traversal
DescrizioneGET /imageproxy reads the image source directly from the path query parameter and, after only a URL percent-decode, forwards it into the thumbnail pipeline. The only path-safety check, is_safe_path() (music_assistant/helpers/security.py), only blocks relative traversal (../../etc/passwd) — it does not reject absolute paths: def is_safe_path(path: str) -> bool: norm_path = os.path.normpath(path) return not (norm_path.startswith("..") or "/../" in norm_path or "\\..\\" in norm_path) An absolute path like /etc/passwd normalizes to itself, never starts with .., and passes. Two sinks are then reachable in get_image_data(): Raw read (images.py:171-176): if the path ends in .jpg/.png/.jpeg/.svg (any case) and is_safe_path() passes, aiofiles.open(path, "rb") returns the raw file bytes directly. ffmpeg fallback (images.py:178 → tags.py:get_embedded_image): any other path is placed directly into ffmpeg -i <path> ... -f mjpeg - argv. The provider param defaults to "builtin" (always registered), making the handler's only authorization-adjacent check a no-op. No check ties the path to the actual media library.
Fonte⚠️ https://github.com/zast-ai/vulnerability-reports/blob/main/music-assistant/server/unauth_file_read.md
Utente
 ZAST.AI (UID 87884)
Sottomissione29/09/2026 06:19 (28 giorni fa)
Moderazione20/10/2026 12:58 (21 days later)
StatoAccettato
Voce VulDB422758 [music-assistant server fino a 2.9.5 imageproxy security.py is_safe_path directory traversal]
Punti20

Do you want to use VulDB in your project?

Use the official API to access entries easily!