React

React Server Components의 서비스 거부 및 소스 코드 노출 취약점

원문은 CC-BY-4.0
라이선스로 제공되며, 이 글은 한국어로 번역한 2차 저작물입니다.
보안 연구원들이 지난주 발표된 중요 취약점 패치를 테스트하던 중 React Server Components에서 두 가지 추가 취약점을 발견하여 공개했습니다.
이 새로운 취약점들은 원격 코드 실행(Remote Code Execution)을 허용하지 않습니다. React2Shell에 대한 패치는 원격 코드 실행 익스플로잇 완화에 효과적입니다.
새로운 취약점은 다음과 같이 공개되었습니다:
새로 공개된 취약점의 심각도를 고려하여 즉시 업그레이드할 것을 권장합니다.

참고

이전에 게시된 패치는 취약합니다.

이전에 취약점을 해결하기 위해 업데이트를 진행하셨더라도 다시 한번 업데이트해야 합니다.
19.0.3, 19.1.4, 19.2.3 버전으로 업데이트하셨다면, 이 업데이트는 불완전하므로 다시 한번 업데이트해야 합니다.
업그레이드 단계는 이전 게시물의 지침
을 참조하십시오.
이 취약점들에 대한 자세한 내용은 수정 사항 배포가 완료된 후 제공될 예정입니다.

즉시 조치 필요

이 취약점들은 CVE-2025-55182
와 동일한 패키지 및 버전에 존재합니다.
여기에는 다음의 19.0.0, 19.0.1, 19.0.2, 19.0.3, 19.1.0, 19.1.1, 19.1.2, 19.1.3, 19.2.0, 19.2.1, 19.2.2, 19.2.3 버전이 포함됩니다:
수정 사항은 19.0.4, 19.1.5, 19.2.4 버전으로 백포팅되었습니다. 위에 나열된 패키지를 사용 중이라면 즉시 수정된 버전으로 업그레이드하십시오.
이전과 마찬가지로, 앱의 React 코드가 서버를 사용하지 않는 경우 이 취약점의 영향을 받지 않습니다. 앱이 React Server Components를 지원하는 프레임워크, 번들러 또는 번들러 플러그인을 사용하지 않는 경우에도 영향을 받지 않습니다.

참고

중요한 CVE는 후속 취약점을 발견하는 것이 일반적입니다.

중요 취약점이 공개되면, 연구원들은 초기 완화 조치가 우회될 수 있는지 확인하기 위해 인접한 코드 경로를 면밀히 조사하여 변형된 익스플로잇 기술을 찾습니다.
이 패턴은 JavaScript뿐만 아니라 산업 전반에 걸쳐 나타납니다. 예를 들어, Log4Shell
이후, 커뮤니티가 초기 수정 사항을 조사하면서 추가 CVE(1
, 2
)가 보고되었습니다.
추가 공개는 좌절스러울 수 있지만, 일반적으로 건전한 대응 주기의 신호입니다.

영향을 받는 프레임워크 및 번들러

일부 React 프레임워크와 번들러는 취약한 React 패키지에 의존하거나, 피어 의존성을 가지거나, 포함했습니다. 다음 React 프레임워크 및 번들러가 영향을 받습니다: next
, react-router
, waku
, @parcel/rsc
, @vite/rsc-plugin
, 및 rwsdk
.
업그레이드 단계는 이전 게시물의 지침
을 참조하십시오.

호스팅 제공업체 완화 조치

이전과 마찬가지로, 여러 호스팅 제공업체와 협력하여 임시 완화 조치를 적용했습니다.
앱 보안을 위해 이러한 완화 조치에 의존해서는 안 되며, 즉시 업데이트해야 합니다.

React Native

모노레포 또는
react-dom
을 사용하지 않는 React Native 사용자라면,
package.json
react
버전이 고정되어 있으며 추가 조치가 필요하지 않습니다.
모노레포에서 React Native를 사용하는 경우, 설치된 경우에만 해당되는 패키지를 업데이트해야 합니다:
  • react-server-dom-webpack
  • react-server-dom-parcel
  • react-server-dom-turbopack
이는 보안 권고 사항을 완화하기 위해 필요하지만,
react
react-dom
을 업데이트할 필요는 없으므로 React Native에서 버전 불일치 오류를 유발하지 않습니다.
자세한 내용은 이 이슈
를 참조하십시오.

심각도 높음: 다중 서비스 거부(Multiple Denial of Service)

CVE: CVE-2026-23864
기본 점수: 7.5 (높음) 날짜: 2026년 1월 26일
보안 연구원들은 React Server Components에 여전히 DoS 취약점이 존재함을 발견했습니다.
이 취약점은 Server Function 엔드포인트로 특별히 조작된 HTTP 요청을 보내 트리거될 수 있으며, 취약한 코드 경로, 애플리케이션 구성 및 애플리케이션 코드에 따라 서버 충돌, 메모리 부족 예외 또는 과도한 CPU 사용으로 이어질 수 있습니다.
2026년 1월 26일에 게시된 패치는 이러한 DoS 취약점을 완화합니다.

참고

추가 수정 사항 게시됨

CVE-2025-55184
를 해결하기 위한 초기 수정 사항은 불완전했습니다.
이로 인해 이전 버전이 취약한 상태로 남았습니다. 19.0.4, 19.1.5, 19.2.4 버전은 안전합니다.

심각도 높음: 서비스 거부(Denial of Service)

CVE: CVE-2025-55184
CVE-2025-67779
기본 점수: 7.5 (높음)
보안 연구원들은 악의적인 HTTP 요청을 Craft하여 모든 Server Functions 엔드포인트로 보낼 수 있다는 사실을 발견했습니다. 이 요청은 React에 의해 역직렬화될 때 서버 프로세스를 중단시키고 CPU를 소비하는 무한 루프를 유발할 수 있습니다. 앱이 React Server Function 엔드포인트를 구현하지 않더라도, 앱이 React Server Components를 지원하는 경우 여전히 취약할 수 있습니다.
이는 공격자가 제품에 대한 사용자 접근을 거부하고 잠재적으로 서버 환경에 성능 영향을 미칠 수 있는 취약점 벡터를 생성합니다.
오늘 게시된 패치는 무한 루프를 방지하여 이를 완화합니다.

심각도 중간: 소스 코드 노출(Source Code Exposure)

CVE: CVE-2025-55183
기본 점수: 5.3 (중간)
한 보안 연구원은 취약한 Server Function으로 전송된 악의적인 HTTP 요청이 임의의 Server Function의 소스 코드를 안전하지 않게 반환할 수 있다는 사실을 발견했습니다. 악용은 Server Function이 존재하며 명시적으로 또는 암시적으로 문자열화된 인수를 노출하는 경우에 필요합니다:
'use server';export async function serverFunction(name) {const conn = db.createConnection('SECRET KEY');const user = await conn.createUser(name); // implicitly stringified, leaked in dbreturn {id: user.id,message: `Hello, ${name}!` // explicitly stringified, leaked in reply}}
공격자는 다음을 유출할 수 있습니다:
0:{"a":"$@1","f":"","b":"Wy43RxUKdxmr5iuBzJ1pN"}1:{"id":"tva1sfodwq","message":"Hello, async function(a){console.log(\"serverFunction\");let b=i.createConnection(\"SECRET KEY\");return{id:(await b.createUser(a)).id,message:`Hello, ${a}!`}}!"}
오늘 게시된 패치는 Server Function 소스 코드를 문자열화하는 것을 방지합니다.

참고

소스 코드 내의 비밀만 노출될 수 있습니다.

소스 코드에 하드코딩된 비밀은 노출될 수 있지만,
process.env.SECRET
과 같은 런타임 비밀은 영향을 받지 않습니다.
노출되는 코드의 범위는 Server Function 내의 코드로 제한되며, 번들러가 제공하는 인라이닝 정도에 따라 다른 함수가 포함될 수 있습니다.
항상 프로덕션 번들을 상대로 검증하십시오.

타임라인

  • 12월 3일: Andrew MacPherson
    에 의해 Vercel 및 Meta Bug Bounty
    에 유출 보고.
  • 12월 4일: GMO Flatt Security Inc.의 RyotaK
    에 의해 초기 DoS 보고.
  • 12월 6일: 두 문제 모두 React 팀에서 확인했으며, 팀에서 조사 시작.
  • 12월 7일: 초기 수정 사항 생성 및 React 팀에서 검증 및 새 패치 계획 시작.
  • 12월 8일: 영향을 받는 호스팅 제공업체 및 오픈 소스 프로젝트에 통지.
  • 12월 10일: 호스팅 제공업체 완화 조치 완료 및 패치 검증.
  • 12월 11일: Shinsaku Nomura가 Meta Bug Bounty에 추가 DoS 보고.
  • 12월 11일: 패치 게시 및 CVE-2025-55183
    CVE-2025-55184
    로 공개적으로 공개.
  • 12월 11일: 누락된 DoS 사례가 내부적으로 발견되어 패치되고 CVE-2025-67779
    로 공개적으로 공개.
  • 1월 26일: 추가 DoS 사례가 발견되어 패치되고 CVE-2026-23864
    로 공개적으로 공개.

감사

소스 코드 노출 보고에 Andrew MacPherson (AndrewMohawk)
에게, 서비스 거부 취약점 보고에 GMO Flatt Security Inc.의 RyotaK
및 Bitforest Co., Ltd.의 Shinsaku Nomura에게 감사합니다. 추가 서비스 거부 취약점 보고에 Winfunc Research
Mufeed VH
, Joachim Viide
, GMO Flatt Security Inc
RyotaK
및 Tencent Security YUNDING LAB의 Xiangwei Zhang에게 감사합니다.