Skip to content

fix(web): Next.js·sharp 이미지 처리 최소 보안 패치 - #181

Merged
dennis0405 merged 1 commit into
developfrom
patch/web-image-security
Oct 6, 2026
Merged

dennis0405 merged 1 commit into
developfrom
patch/web-image-security

Conversation

@dennis0405

@dennis0405 dennis0405 commented Oct 6, 2026 •

Copy link
Copy Markdown
Collaborator

작업 내용

  • patch/web-image-security → develop 최소 보안 패치입니다. 이후 develop → main은 release PR #179로 진행합니다.
  • Next.js 15.5.21 → 15.5.24, sharp 0.35.3 → 0.35.4.
  • Next 내부 sharp도 동일 버전으로 고정하고 기존 postcss 8.5.25 override는 유지합니다.
  • pnpm lockfile의 해당 패키지와 플랫폼별 네이티브 바이너리만 갱신합니다. 모바일 의존성 버전·앱 로직·DB·CI 설정은 변경하지 않습니다.

변경 이유 / 공식 근거

검증 결과

  • frozen lockfile install 통과.
  • 실행 시 Next 15.5.24, 직접/Next 내부 sharp 모두 0.35.4, libheif 1.23.2 확인 (macOS arm64).
  • 안전한 JPEG/WebP/AVIF 샘플 encode/decode 및 resize 통과.
  • Next imageOptimizer에 안전한 AVIF 샘플을 전달해 contentType·buffer·크기가 원본 그대로 유지되는 보안 우회 경로 확인.
  • pnpm verify: 웹 96 tests, 모바일 167 tests 통과. 로컬 DB 통합 1개는 TEST_DATABASE_URL 미설정으로 제외되며 PR CI의 PostgreSQL 서비스로 검증합니다.
  • 웹 production build 및 Android/iOS 번들 모두 통과.
  • PR CI 4/4 성공, 웹 97 tests(PostgreSQL 통합 포함) / 모바일 167 tests 통과: https://github.com/wafflestudio/allclear/actions/runs/37404158465
  • develop squash merge 완료: 297a6250f4dcb098dc6e4d5be60f942c644acb79.
  • pnpm audit --prod: critical 2 → 0, high 28 → 27. Next/sharp advisory 0건.
  • 다른 패키지의 high 27 / moderate 26 / low 9는 이 최소 패치에서 변경하지 않습니다. 전체 보안 audit 통과나 잔여 항목 무해함을 의미하지 않습니다.

배포 / 롤백

  • 이 PR 머지는 develop에만 반영되며 production 배포는 release: 관리자 권한 이전 및 모바일 QA 개선 (develop → main) #179 main 머지 이후입니다.
  • 로컬 빌드는 운영 배포 증거가 아닙니다. Linux CI와 production rollout을 별도 확인합니다.
  • 변경은 패키지/lockfile뿐이므로 DB 변경은 없습니다. 취약 버전으로의 롤백은 보안 위험을 되살리므로 장애 시 원인을 먼저 확인합니다.

@dennis0405
dennis0405 merged commit 297a625 into develop Oct 6, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant