Next.js로 프로젝트를 진행하고 계신가요? 그렇다면 지금 당장 이 글을 끝까지 읽어주세요. 최근 발표된 CVE-2025-66478은 웹 개발 생태계를 뒤흔들 만한 심각한 보안 취약점입니다. 😱
CVSS 점수 10.0 만점을 받은 이번 취약점은, 아무런 인증 없이도 여러분의 서버를 공격자가 마음대로 조종할 수 있게 만드는 치명적인 문제입니다. 실제로 전 세계 클라우드 환경의 39%가 이 취약점에 노출되어 있다는 충격적인 조사 결과도 나왔어요.
이 글에서는 CVE-2025-66478이 무엇인지, 왜 위험한지, 그리고 어떻게 대응해야 하는지 단계별로 상세하게 알려드릴게요. 5분만 투자하시면 여러분의 프로젝트를 지킬 수 있습니다! 🛡️
📌 CVE-2025-66478, 도대체 뭐길래?

CVE-2025-66478은 2025년 12월 3일에 공개된 Next.js의 보안 취약점입니다. 이 취약점의 심각성을 보여주는 몇 가지 숫자들을 먼저 보실까요?
- CVSS 점수: 10.0/10.0 - 가능한 최고 등급의 위험도
- 영향받는 서버: 96만 8천대 이상 - 전 세계적으로 엄청난 규모
- 노출된 클라우드 환경: 39% - 거의 절반에 가까운 비율
- 공격 난이도: 매우 낮음 - 특별한 설정 없이도 공격 가능
이 취약점의 정식 명칭은 원격 코드 실행(Remote Code Execution, RCE) 취약점입니다. 쉽게 말해서, 해커가 여러분의 서버에 마치 정당한 사용자처럼 명령을 내릴 수 있다는 뜻이에요. 로그인도 필요 없고, 특별한 권한도 필요 없습니다. 그냥 HTTP 요청 하나만 보내면 끝이죠.
🔍 근본 원인은 React에 있었다
CVE-2025-66478의 뿌리는 사실 React의 취약점인 CVE-2025-55182에서 시작됩니다. React 19 버전에서 도입된 **React Server Components(RSC)**의 Flight 프로토콜이 데이터를 안전하지 않은 방식으로 처리하면서 문제가 발생했어요.
React Server Components는 서버와 클라이언트 간에 데이터를 주고받을 때 직렬화(serialization)와 역직렬화(deserialization)라는 과정을 거칩니다. 문제는 이 역직렬화 과정에서 악의적으로 조작된 데이터를 제대로 검증하지 않는다는 거예요.
2025년 11월 29일, 뉴질랜드의 보안 연구원 라클란 데이비슨(Lachlan Davidson)이 이 문제를 발견해서 Meta에 보고했고, 불과 며칠 만에 패치가 나왔습니다. 그만큼 심각한 문제였다는 뜻이겠죠? 😰
🎯 어떤 버전이 위험한가요?
Next.js 취약 버전
Next.js를 사용하신다면 아래 버전들을 확인해보세요:
위험한 버전들:
- Next.js 14.3.0-canary.77 이상의 canary 버전
- Next.js 15.x 전체 버전 (15.0.0 ~ 15.5.6)
- Next.js 16.x 전체 버전 (16.0.0 ~ 16.0.6)
특히 주의! App Router를 사용하는 프로젝트만 영향을 받습니다. Pages Router를 사용하신다면 괜찮아요.
안전한 패치 버전:
- 16.0.7
- 15.5.7
- 15.4.8
- 15.3.6
- 15.2.6
- 15.1.9
- 15.0.5
React 취약 버전
Next.js뿐만 아니라 React를 직접 사용하는 경우도 확인이 필요합니다:
위험한 버전들:
- React 19.0.0
- React 19.1.0, 19.1.1
- React 19.2.0
안전한 패치 버전:
- React 19.0.1
- React 19.1.2
- React 19.2.1
영향받는 다른 프레임워크들
React Server Components를 사용하는 다른 도구들도 영향을 받을 수 있어요:
- Waku (0.27.2 이상으로 업데이트 필요)
- RedwoodJS
- React Router (RSC 모드)
- Vite RSC 플러그인
- Parcel RSC 플러그인
⚠️ 왜 이렇게 위험한가요?
이 취약점이 특히 무서운 이유는 공격 조건이 너무 쉽다는 거예요. 보통 보안 취약점은 특정 조건이나 설정이 갖춰져야 공격이 가능한데, CVE-2025-66478은 그렇지 않습니다.
1️⃣ 인증이 필요 없다
로그인? 필요 없어요. 공격자는 그냥 HTTP 요청만 보내면 됩니다. 아무나 공격할 수 있다는 뜻이죠.
2️⃣ 기본 설정만으로도 취약하다
create-next-app으로 새 프로젝트를 만들고 프로덕션 빌드를 했다면? 코드를 한 줄도 수정하지 않았어도 이미 취약합니다. 개발자의 실수가 아니라 프레임워크 자체의 문제예요.
3️⃣ 공격 성공률이 거의 100%
보안 전문가들의 테스트 결과, 이 취약점을 이용한 공격의 성공률은 거의 100%에 가깝다고 합니다. 실패할 확률이 거의 없다는 뜻이에요. 😨
4️⃣ 실제 피해 규모가 어마어마하다
Wiz 보안의 조사에 따르면:
- 전 세계 클라우드 환경의 39% 노출
- 96만 8천대 이상의 서버 위험
- 기본 설정으로 돌아가는 서버들이 대부분
Palo Alto Networks의 보안 전문가 저스틴 무어는 이렇게 말했어요:
"이 취약점은 마스터 키와 같습니다. 시스템을 충돌시키는 게 아니라, 시스템이 신뢰하는 데이터 구조를 악용해서 정상적인 코드처럼 악성 코드를 실행시킵니다."
🛠️ 지금 당장 해야 할 일
1단계: 버전 확인하기
먼저 여러분의 프로젝트가 위험한 버전을 사용하는지 확인해야 해요.
# package.json에서 확인
cat package.json | grep -E "next|react"
# 또는 직접 파일 열어서 확인
package.json 파일을 열어서 다음 항목들을 체크하세요:
- "next": 버전이 15.x 또는 16.x인가요?
- "react": 버전이 19.x인가요?
- App Router를 사용하나요? (app/ 디렉토리 존재 여부)
2단계: 긴급 업데이트 실행
버전 확인이 끝났다면 바로 업데이트를 진행하세요!
Next.js 업데이트 방법:
# npm 사용하는 경우
npm install next@latest react@latest react-dom@latest
# yarn 사용하는 경우
yarn upgrade next react react-dom --latest
# pnpm 사용하는 경우
pnpm update next react react-dom --latest
특정 버전으로 업데이트하고 싶다면:
# Next.js 15.x 사용자
npm install next@15.5.7 react@19.2.1 react-dom@19.2.1
# Next.js 16.x 사용자
npm install next@16.0.7 react@19.2.1 react-dom@19.2.1
3단계: 업데이트 확인
# 설치된 버전 확인
npm list next react
# 또는
yarn list --pattern "next|react"
패치된 버전으로 업데이트되었는지 꼭 확인하세요!
4단계: 프로덕션 재배포
로컬에서 업데이트를 완료했다면, 반드시 프로덕션 환경에도 새로 배포해야 합니다.
# 빌드 및 배포
npm run build
# 여러분의 배포 프로세스 실행
🔐 추가 보안 조치
업데이트만으로는 부족하다고 느끼시나요? 추가로 취할 수 있는 보안 조치들도 있어요.
Vercel 호스팅 사용자
Vercel에서 호스팅하는 프로젝트는 플랫폼 레벨의 보호가 자동으로 적용됩니다. Vercel이 WAF(Web Application Firewall) 규칙을 긴급 배포해서 악의적인 요청 패턴을 차단하고 있어요. 하지만 이것도 임시 방편일 뿐, 코드베이스 자체를 업데이트하는 게 가장 중요합니다!
WAF 규칙 적용
- Fastly: Virtual Patch 배포 완료
- Cloudflare: WAF 규칙 업데이트
- Google Cloud Armor: 새로운 WAF 규칙 제공
- Netlify: 자동 보호 기능 배포
자신의 호스팅 서비스가 제공하는 보호 기능을 확인하고 활성화하세요.
모니터링 강화
서버 로그를 주의 깊게 살펴보세요:
- 비정상적인 HTTP 요청 패턴
- Server Function 엔드포인트로의 의심스러운 POST 요청
- Flight 프로토콜 관련 이상한 페이로드
💡 Pages Router는 안전한가요?
네! Pages Router를 사용하는 프로젝트는 영향을 받지 않습니다. 이 취약점은 React Server Components를 사용하는 App Router에만 해당되거든요.
Next.js 13.x나 14.x stable 버전에서 Pages Router만 사용한다면 CVE-2025-66478로부터는 안전합니다. 하지만 React 19를 사용한다면 CVE-2025-55182의 영향은 받을 수 있으니, React 버전도 함께 확인하세요!
📊 실제 공격 사례는 있나요?
2025년 12월 4일 현재, 대규모 공격 사례는 아직 보고되지 않았습니다. 하지만 보안 전문가들은 입을 모아 말해요:
"공격자들이 이 취약점을 무기화하는 건 시간문제입니다."
취약점이 공개된 지 하루밖에 안 지났지만, 악용 코드가 빠르게 퍼질 가능성이 높아요. 보안 연구원들이 이미 PoC(Proof of Concept, 개념 증명) 코드를 테스트했고, 성공률이 거의 100%라는 게 확인됐거든요.
지금 당장 업데이트하지 않으면, 곧 공격의 표적이 될 수 있습니다. ⚡
🤔 왜 CVSS 점수가 10.0인가요?
CVSS(Common Vulnerability Scoring System)는 보안 취약점의 심각도를 0.0부터 10.0까지로 평가하는 국제 표준이에요. 10.0은 가능한 최고 점수입니다.
CVE-2025-66478이 만점을 받은 이유:
- 공격 복잡도가 낮음(Low Complexity): 특별한 기술 없이도 공격 가능
- 권한이 필요 없음(No Privileges Required): 로그인 불필요
- 사용자 상호작용 불필요(No User Interaction): 클릭이나 액션 필요 없음
- 영향 범위가 광범위(Widespread Impact): 수십만 개의 애플리케이션 영향
- 기밀성, 무결성, 가용성 모두 손상(Complete CIA Impact): 모든 보안 요소 위협
간단히 말해서, 최악의 조건이 모두 갖춰진 취약점이라는 뜻이에요. 😱
🌐 글로벌 보안 커뮤니티의 반응
이번 취약점이 공개된 후, 전 세계 보안 커뮤니티가 발 빠르게 움직였어요.
React 팀의 대응
React 팀은 취약점 보고를 받은 지 단 4일 만에 패치를 릴리스했습니다. 2025년 11월 29일 보고 → 12월 3일 패치 배포. 이례적으로 빠른 대응이었죠.
Vercel의 대응
Next.js를 개발하는 Vercel은:
- 즉시 WAF 규칙 배포
- 모든 호스팅 프로젝트에 자동 보호 적용
- 주요 CDN 및 WAF 제공업체와 협력
- 상세한 보안 공지 발표
호스팅 서비스들의 대응
- Fastly: "Spicy Unpickling"이라는 코드명으로 Virtual Patch 배포
- Cloudflare: 즉시 WAF 규칙 업데이트
- AWS: CloudFront 및 WAF 가이드 발표 예정
- Google Cloud: Cloud Armor 규칙 추가
📝 체크리스트: 내 프로젝트는 안전한가?
마지막으로 여러분의 프로젝트가 안전한지 확인할 수 있는 체크리스트를 드릴게요!
✅ 필수 체크 항목:
- Next.js 버전이 패치 버전인가? (15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7)
- React 버전이 패치 버전인가? (19.0.1, 19.1.2, 19.2.1)
- App Router를 사용하는가? (사용한다면 반드시 업데이트)
- 프로덕션 환경에 패치가 배포되었는가?
- package-lock.json 또는 yarn.lock이 업데이트되었는가?
✅ 추가 권장 항목:
- WAF 규칙이 활성화되어 있는가?
- 서버 로그 모니터링 설정이 되어 있는가?
- 팀원들에게 업데이트 사항을 공유했는가?
- CI/CD 파이프라인에서 자동 빌드가 성공했는가?
- 의존성 스캔 도구를 실행했는가?
마무리하며 💬
CVE-2025-66478은 단순한 버그가 아니라, 웹 개발 생태계 전체를 위협하는 심각한 보안 취약점입니다. 하지만 다행히도 해결책은 명확해요. 지금 당장 업데이트하면 됩니다!
이 글을 읽으셨다면, 주변 개발자 동료들에게도 꼭 공유해주세요. 특히 Next.js나 React 19를 사용하는 분들이라면 더더욱요! 🙏
보안은 혼자만 지키는 게 아니라 커뮤니티 전체가 함께 지켜야 하는 거니까요. 여러분의 작은 실천이 더 안전한 웹 생태계를 만드는 데 도움이 됩니다.
📌 관련 참고 자료
'기술의기록' 카테고리의 다른 글
| Next.js 16.1 업데이트 완벽 정리(개발 속도 14배 향상) (1) | 2025.12.22 |
|---|---|
| AI 바이브코딩 시대, Next.js Page Router vs App Router 완벽 비교 (2025년 기준) (1) | 2025.12.16 |
| GPT 5.1 출시 완벽 정리 (GPT-5와 차이점, 새로운 기능 총정리) (0) | 2025.11.13 |
| Cursor 2.0 리뷰: Composer-1 모델은 정말 빠를까? (vs Claude Sonnet 4.5 비교) (0) | 2025.11.06 |
| 프론트엔드 개발자가 꼭 알아야 할 SEO 완벽 가이드 (1) | 2025.11.05 |