← Blog
문제 해결· 읽는 데 3분
React2Shell(CVE-2025-55182): Next.js 서비스를 운영 중이라면 지금 확인할 것
React 서버 컴포넌트에서 인증 없이 원격 코드 실행이 가능한 취약점이 공개됐습니다. 영향을 받는지 확인하는 방법과 조치 순서를 정리했습니다.
12월 3일, React 서버 컴포넌트에 영향을 주는 취약점 CVE-2025-55182가 공개됐습니다. "React2Shell"이라는 이름이 붙었고, 심각도는 최고 등급인 CVSS 10.0입니다. 12월 5일에는 미국 CISA가 실제 악용이 확인된 취약점 목록(KEV)에 올렸습니다.
React 서버 컴포넌트를 쓰는 Next.js 서비스를 운영하고 있다면 오늘 확인해야 하는 문제입니다.
왜 심각한가
- 인증이 필요 없습니다. 로그인하지 않은 외부인이 조작된 요청을 보내는 것만으로 공격이 가능합니다.
- 서버에서 임의의 코드를 실행할 수 있습니다. 데이터베이스 접속 정보, API 키 같은 서버의 비밀 정보가 노출될 수 있습니다.
- 이미 악용되고 있습니다. 공개 직후부터 공격 시도가 보고됐습니다.
영향을 받는지 확인하기
- React 서버 컴포넌트를 쓰는가. Next.js의 App Router를 쓰고 있다면 해당됩니다. Next.js 쪽에는 별도 번호(CVE-2025-66478)로 공지가 나와 있습니다.
- 사용 중인 버전이 패치 이전인가.
package.json과 lock 파일에서react,react-dom,next버전을 확인합니다.
React로 만들었더라도 서버 컴포넌트를 쓰지 않고 브라우저에서만 도는 앱은 이 취약점의 직접 대상이 아닙니다. 확실하지 않으면 해당된다고 보고 조치하는 편이 안전합니다.
조치 순서
- 패치 버전으로 올려서 다시 배포합니다. 가장 먼저 할 일입니다. 공식 공지에 버전대별 패치 버전이 안내되어 있습니다.
- 서버의 비밀 정보를 교체합니다. 패치 전에 이미 공격을 받았을 가능성이 있다면, 환경 변수에 있던 키와 비밀번호를 새로 발급합니다.
- 접속 로그를 확인합니다. 공개일 이후의 비정상적인 요청과 서버에서 나간 낯선 외부 접속을 살펴봅니다.
- 방화벽 규칙은 보조 수단입니다. 호스팅·CDN 업체가 차단 규칙을 적용했더라도 패치를 대신하지는 못합니다.
개발을 맡긴 업체와 연락이 닿지 않는다면
이런 일이 생겼을 때 "누가 업데이트를 하는가"가 정해져 있지 않은 서비스가 가장 위험합니다. 소스코드와 배포 권한이 어디에 있는지부터 확인하고, 패치와 재배포를 할 수 있는 사람을 찾아야 합니다.
이번 일을 계기로 의존성 보안 알림을 켜 두고, 긴급 패치를 누가 언제까지 하는지 정해 두는 것을 권합니다.
참고 자료