# Multipart 업로드 1GB 상한 유지 — 리스크 문서화 **결정**: multipart 상한 1GB 유지 (사용자 확정, D-B4-multipart, sid 20260629-175705) **관련 체크리스트**: [security-remediation-checklist.md §B4](./security-remediation-checklist.md#b4-의존성세션운영-하드닝) ## 현재 설정 `src/main/resources/application.properties`: ```properties spring.servlet.multipart.max-file-size=1GB spring.servlet.multipart.max-request-size=1GB ``` ## 리스크 ### DoS (Denial of Service) - 악의적 클라이언트가 1GB 파일 업로드를 동시에 여러 건 요청하면 서버 처리 스레드·메모리·디스크 I/O를 소진할 수 있다. - Spring MVC 기본 설정에서 multipart 파싱은 요청 완료 전까지 임시 파일(`java.io.tmpdir`)에 버퍼링된다. - 임시 디스크 고갈 시 다른 기능(로그, 쓰기 연산)도 함께 영향받는다. ### 디스크 고갈 - 업로드 임시 경로(`/tmp` 또는 컨테이너 tmpfs)와 저장 경로(`~/.bibimbap/uploads`)가 모두 대용량 파일로 채워질 수 있다. - 컨테이너 환경에서 tmpfs 상한이 낮으면 1GB 단일 파일에도 OOM 오류가 발생한다. ## 유지 결정 근거 - bibimbap 은 게임 WebGL 번들 업로드를 지원하며, 실제 게임 빌드 크기가 수백 MB에 이를 수 있다. 상한을 낮추면 합법적 업로드가 차단된다. - 현재 운영 규모(소규모)에서 대규모 DoS 시도 가능성이 낮다고 사용자가 판단했다. - 상한 축소·업로드 스트리밍 개선은 이후 운영 부하 확인 후 별도 검토. ## 완화 권고 (추후) | 권고 항목 | 설명 | | --- | --- | | 리버스 프록시 상한 설정 | nginx `client_max_body_size` 또는 AWS ALB 요청 크기 제한으로 애플리케이션 앞단 차단 | | 디스크 모니터링 | 업로드 경로(`~/.bibimbap/uploads`) 및 tmpdir 사용량 alert 설정 (예: 80% 도달 시 알림) | | 업로드 인증 게이트 | 현재 게임 업로드는 로그인 필수 — 익명 대용량 업로드 차단. 권한 검사 유지 확인. | | 동시 업로드 rate limit | Spring MVC thread pool 또는 리버스 프록시 connection limit으로 동시 대용량 요청 제한 | | tmpdir 분리 | `spring.servlet.multipart.location` 으로 tmpdir를 전용 볼륨으로 분리해 시스템 영향 격리 | ## 관련 문서 - [owasp-dependency-check-guide.md](./owasp-dependency-check-guide.md) — 동일 B4 트랙 CVE 스캔 설정 - [security-remediation-checklist.md](./security-remediation-checklist.md) — 전체 보안 체크리스트 - [../maintenance/post-deploy-verification-checklist.md](../maintenance/post-deploy-verification-checklist.md) — 배포 후 디스크 확인 절차