제출 #1004727: music-assistant server <=2.10.4 Relative Path Traversal정보

제목music-assistant server <=2.10.4 Relative Path Traversal
설명GET /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.
원천⚠️ https://github.com/zast-ai/vulnerability-reports/blob/main/music-assistant/server/unauth_file_read.md
사용자
 ZAST.AI (UID 87884)
제출2026. 09. 29. AM 06:19 (1 월 ago)
모더레이션2026. 10. 20. PM 12:58 (21 days later)
상태수락
VulDB 항목422758 [music-assistant server 까지 2.9.5 imageproxy security.py is_safe_path 디렉토리 순회]
포인트들20

Might our Artificial Intelligence support you?

Check our Alexa App!