---
task_id: task-2263
type: plan
scope: task
created: 2026-04-28
updated: 2026-04-28
status: completed
---

# 계획서: task-2263 — InsuRo 보안 취약점 수정 (CRITICAL 2건 + HIGH 6건)

**task**: task-2263
**목표**: 보안 감사(task-2262)에서 발견된 CRITICAL 2건 + HIGH 6건 취약점 즉시 수정
**승인**: 아누(개발실장) 2026-04-28 (보안 감사 후 즉시 수정 지시)
**근거**: `/home/jay/workspace/memory/reports/insuro-security-audit-2026-04.md`

---

## 목표

- CRITICAL 1: SSRF 방지 — file_url 화이트리스트 검증 함수 추가
- CRITICAL 2: .env 퍼미션 600 확인, 시크릿 하드코딩/로그 노출 전수 확인
- HIGH 1-2: JWT verify_signature/verify_aud 활성화
- HIGH 3: npm audit fix로 HIGH 취약점 14건 해결
- HIGH 4: 에러 메시지 일반화 (11개소)
- HIGH 5: subprocess 입력 검증 함수 추가
- HIGH 6: 파일 변환 엔드포인트 인증 + Rate Limit 추가

## 범위

### 포함
- server/main.py (SSRF, JWT, 에러 메시지, subprocess, rate limit)
- server/mediscan_router.py (에러 메시지)
- server/generation_queue.py (에러 메시지)
- server/pipeline.py (에러 메시지)
- server/image_generator.py (에러 메시지)
- package.json / package-lock.json (npm audit fix)

### 제외
- MEDIUM/LOW/INFO 취약점 (별도 작업으로 후속 처리)
- .env 시크릿 로테이션 (운영팀 소관)
- CSP, CORS 강화 (별도 작업)

## 위임 계획

- SSRF + JWT + subprocess + rate limit: **불칸(백엔드)** — 보안 로직, 서버 코드
- 에러 메시지 일반화: **불칸(백엔드)** — 동일 파일 수정으로 병합
- npm audit fix: **불칸(백엔드)** — 의존성 관리
- .env 퍼미션 + 시크릿 검증: **아르고스(테스터)** — 검증 특화

## 검증 기준

- SSRF: `curl` 내부 IP URL → 400 거부
- JWT: 정상 토큰으로 로그인 가능 확인
- 에러 메시지: 500 에러 시 스택트레이스 미노출
- npm audit: `npm audit` HIGH 0건
- 파일 변환: 인증 없이 접근 → 401
- pytest: 전량 통과
- npm run build: 성공
