bibimbap/docs
이정수 08d191ff2e feat(upload): W3-5 Unity WebGL 업로드 보안 보강 — zip-slip/심링크/zip bomb/포맷검증/권한게이트/자산 생명주기/감사
- ZipSecurity 추출 코어: validateEntryName 사전거부(절대/UNC/백슬래시/NUL/`..`/길이>255/깊이>32) + normalize startsWith 경계 + assertParentNotSymlink(부모 walk) + 쓰기후 toRealPath 재검증(zip-slip 심층방어). 기존 골격 보강(재작성 아님)
- zip bomb 3중 상한(엔트리당 256MB/누적 512MB/엔트리수 8000), 실제 읽은 바이트 누적(getCompressedSize 미사용). 포맷: 매직바이트 PK + MIME·확장자 AND + Unity 산출물(loader/framework/data/wasm + index.html, .br/.gz 변형 허용)
- 권한 게이트 통일: 진입부 PermissionGate.isAuthenticated(임시 role 직접체크 0, 신규 게이트 메서드 0) + mode=jam 시 GAME_JAM_MANAGE 옵션. 일반 업로드 개방 유지
- 원자적 교체: 임시추출(.tmp/{uuid})→검증→ATOMIC_MOVE swap(미지원 REPLACE 폴백 + finally 복원). replaceUuid 소유검증(UUID 정규화→LIKE 와일드카드 주입 차단, 불일치/비소유 403)
- 자산 생명주기: GameAssetCleanupService.purgeByWebglPath(경계검증) + GameController updateGame/deleteGame 훅(고아 정리)
- 감사: game_upload_audit_log(outcome CHECK·reject_reason 11코드 enum↔DDL 정합) docs/game-upload-ddl.sql 권위 + schema.sql 동기. GameUploadAuditMapper #{} only
- /game/** 서빙 현행 유지(GameAssetController 불변, 신설 안 함 — 조사 stale 정정)

검증: 컨테이너 ./mvnw -o test 318/318 GREEN(신규 31: ZipSecurityTest 20·GameUploadControllerSecurityTest 11), 회귀 0. L2 격리 throwaway DB contract PASS(insertAudit 8컬럼·outcome CHECK·FK·findGameByWebglUuid alias). adversarial zip-slip 감사 SOUND(심링크 TOCTOU 구조적 불가·경로탈출/유니코드/zipbomb/LIKE주입 전수 차단). 실 dev DB 무접촉.

알려진 잔여(배포 하드닝, LOW): 업로드 저장루트(static/game)가 WAR 정적 서빙트리 내 → 기본 classpath:/static/** 핸들러로 transient .tmp 노출 가능성. 저장루트를 서빙트리 밖으로 이전 권고(gameRoot 경로중첩 정합과 함께). transient+검증콘텐츠라 영향 제한.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K3FeMrbtxfTScjrwUukyHD
2026-06-29 12:10:55 +09:00
..
adr fix: harden auth csrf handling 2026-06-16 15:38:44 +09:00
analysis docs: 고도화 로드맵 목적축 재구조 (게임잼 단일프레임 → W1~W4 워크스트림) 2026-06-17 17:20:53 +09:00
architecture fix: harden auth csrf handling 2026-06-16 15:38:44 +09:00
backlog docs: ATP 문서 체계 도입 및 프로젝트 종합 분석 추가 2026-06-16 12:18:56 +09:00
changes docs(jam): W2 게임잼 변경 이력 기록 + 설계 구현추적 갱신 2026-06-24 14:19:14 +09:00
contracts docs: ATP 문서 체계 도입 및 프로젝트 종합 분석 추가 2026-06-16 12:18:56 +09:00
development docs(dev): W2 회고 교훈 3건 반영 — (검증)태그·케이스폴딩 기준·공유헬퍼 grounding 2026-06-24 14:23:12 +09:00
domain docs: ATP 문서 체계 도입 및 프로젝트 종합 분석 추가 2026-06-16 12:18:56 +09:00
feedback docs: ATP 문서 체계 도입 및 프로젝트 종합 분석 추가 2026-06-16 12:18:56 +09:00
graph chore(graph): graphify 양 scope 재생성 메타 갱신 — W1 RBAC + W2 게임잼 (b9d836d→a74bf74) 2026-06-24 14:19:14 +09:00
issues docs: ATP 문서 체계 도입 및 프로젝트 종합 분석 추가 2026-06-16 12:18:56 +09:00
maintenance docs: ATP 문서 체계 도입 및 프로젝트 종합 분석 추가 2026-06-16 12:18:56 +09:00
security fix(reviews): game_review_stats 집계 버그 2건 수정 + W3-2 L3 검증 완료 2026-06-22 17:54:19 +09:00
usage docs(dev): 검증 회고 교훈 반영 — DB-방언 계약 L2 + stale 빌드 가드 2026-06-22 17:58:47 +09:00
work-log docs(jam): W2 게임잼 변경 이력 기록 + 설계 구현추적 갱신 2026-06-24 14:19:14 +09:00
board-ddl.sql feat(board): W3-3 포스팅 보드 — 공지/블로그 + OG 미리보기(SSRF 방어) + 유니티 피드 감시 2026-06-29 11:46:28 +09:00
db-update-query-generator.md Merge PR #1 (docs/project-analysis): ATP 문서 체계 + 프로젝트 종합 분석 2026-06-17 10:00:39 +09:00
game-reviews-ddl.sql fix(reviews): game_review_stats 집계 버그 2건 수정 + W3-2 L3 검증 완료 2026-06-22 17:54:19 +09:00
game-upload-ddl.sql feat(upload): W3-5 Unity WebGL 업로드 보안 보강 — zip-slip/심링크/zip bomb/포맷검증/권한게이트/자산 생명주기/감사 2026-06-29 12:10:55 +09:00
games-hub-ddl.sql feat(hub): W3-4 메인 허브 keyset 페이징 + 진행중 잼 배너 (단계1+2 통합) 2026-06-29 10:59:17 +09:00
index.md fix: harden auth csrf handling 2026-06-16 15:38:44 +09:00
jam-ddl.sql feat(jam): W2-1 게임잼 엔티티/라이프사이클 — jams/entries/teams + GAME_JAM_MANAGE enforcement + 공개 목록·상세 2026-06-24 10:50:12 +09:00
jam-eval-ddl.sql feat(jam): W2-3 잼 평가 동결 스키마 — jam_criteria/scores/votes/awards + jam_score_stats VIEW (⚠️클러스터 단일권위) 2026-06-24 11:33:19 +09:00
jam-judge-ddl.sql feat(jam): W2-2 심사위원 역할 — jam_judges + JamRoleGate(잼 스코프 게이트) + 자기출품 충돌 2026-06-24 11:15:22 +09:00
profile-management-prompt.md Prepare public repository 2026-05-03 16:13:32 +09:00
rbac-ddl.sql feat(rbac): W1 거버넌스/RBAC — 관리자 콘솔·권한 게이트·세션 epoch 전파 2026-06-23 10:38:57 +09:00
recruit-posts-ddl.sql 페이지 개선 2026-06-13 15:05:12 +09:00
security-hardening-ddl.sql 페이지 개선2 2026-06-13 15:05:18 +09:00
tag-ddl.sql feat(search): W3-1 게임 태그 + 검색 확장 — tags/game_tags/jam_tags/game_views + 다중태그·정렬키·방문수·리뷰 정렬 2026-06-29 10:44:23 +09:00
user-signup-schema.md Merge PR #1 (docs/project-analysis): ATP 문서 체계 + 프로젝트 종합 분석 2026-06-17 10:00:39 +09:00