🇰🇷 한글 설명
Seerr는 Jellyfin, Plex, Emby용 오픈소스 미디어 요청 및 검색 관리자입니다. 3.4.0 이전 버전에서 ImageProxy가 업스트림 응답 헤더(ETag, Content-Type)를 캐시 파일명 생성에 사용하여, 악의적이거나 침해된 미디어 서버 또는 중간자 공격자가 경로 탐색 시퀀스를 주입해 캐시 디렉터리 밖의 파일(예: /app/dist/index.js)을 덮어쓸 수 있습니다. 컨테이너 재시작 후 node 사용자 권한으로 코드가 실행될 수 있습니다.
💡 쉬운 설명
미디어 서버의 이미지 요청 처리 과정에서 파일 이름을 잘못 다뤄, 공격자가 서버의 실행 파일을 바꿀 수 있는 문제입니다. 인증 없이도 공격이 가능해 서버가 장악될 위험이 있습니다.
🇺🇸 원문 (English)
Seerr is an open-source media request and discovery manager for Jellyfin, Plex, and Emby. Prior to version 3.4.0, Seerr's ImageProxy in server/lib/imageproxy.ts uses the upstream ETag and Content-Type response headers to build a cache filename for the unauthenticated GET /avatarproxy/:jellyfinUserId route, allowing a malicious or compromised Jellyfin or Emby server, or a man-in-the-middle attacker on a plaintext media-server connection, to supply traversal sequences that path.join and fs.writeFile normalize outside the cache directory, overwrite /app/dist/index.js or other files, and execute code as the node user after a container restart. This issue is fixed in version 3.4.0.
📍 영향받는 시스템
Seerr 3.4.0 미만 버전 (Jellyfin, Plex, Emby 연동 환경)
⚔️ 공격 벡터
악성 또는 침해된 미디어 서버, 또는 평문 연결에 대한 중간자 공격으로 ETag/Content-Type 헤더에 경로 탐색 문자열을 삽입하여 임의 파일 덮어쓰기 및 코드 실행
🛡️ 대응 방법
Seerr를 3.4.0 이상으로 업그레이드하고, 미디어 서버 연결을 HTTPS로 구성하며, 신뢰할 수 없는 네트워크 노출을 제한
🔧 검증 코드
출력된 version 값이 3.4.0 미만이면 취약하며, 3.4.0 이상이면 패치된 버전입니다 (컨테이너 이름이 다르면 해당 이름으로 변경).
docker exec seerr cat /app/package.json 2>/dev/null | grep '"version"'