최근 공개된 두 개의 CVE—React Server Components의 CVE-2025-55182와 Next.js middleware의 CVE-2025-29927—는 현대적인 JavaScript 스택에서 원격 코드 실행(RCE) 및 인증 우회 경로를 제공합니다. 단 한 번의 요청만으로도 취약점이 트리거될 수 있으며, 설정만으로는 이를 막을 수 없습니다. React Server Components 또는 Next.js middleware를 사용하는 팀은 이 버그를 긴급 사안으로 취급하고 즉시 패치를 적용해야 합니다.

로그의 소음이 오해를 불러일으키는 이유

실제 운영 중인 Next.js 사이트에서 한 달간의 에지(edge) 로그를 추출했습니다. 해당 데이터에는 악성으로 분류된 8,900개의 요청이 포함되어 있었습니다. 거의 모든 요청이 첫 번째 홉(hop)에서 실패했습니다. 가장 흔한 URL은 /wp-admin/install.php로 518회 호출되었으나, 해당 사이트는 WordPress를 실행하지 않고, PHP를 사용하지 않으며, WordPress 관련 파일도 전혀 없었습니다.

자동화된 스캐너가 이러한 트래픽을 생성합니다. 이들은 인터넷에 무작위 추측을 뿌리며 다음을 찾아다닙니다:

  • 비밀 정보 및 설정 파일 – 시도의 64%
  • PHP 패널 및 셸 – 22%
  • WordPress 경로 – 11%
  • 데이터베이스 도구 – 1%

차단된 요청 수가 많다는 것은 단지 봇이 예상하는 소프트웨어를 실행하고 있지 않다는 것을 의미할 뿐입니다. 이는 현재 실제로 실행 중인 애플리케이션이 안전하다는 것을 보장하지 않습니다.

조용한 프레임워크 수준의 공격

공격자가 Next.js 앱을 타겟팅할 때, 트래픽은 프레임워크 자체의 메커니즘을 역이용하여 일반적인 사용자 요청처럼 보입니다.

React2Shell (CVE-2025-55182)

React Server Components의 결함으로 인해 공격자가 특수하게 제작된 페이로드를 주입하면 서버가 이를 코드로 평가하게 됩니다. 그 결과, 방화벽이나 웹 애플리케이션 필터를 우회할 필요 없이 완전한 원격 코드 실행이 가능해집니다. 이 취약점은 프레임워크 내부에 존재하므로, 유일한 해결책은 수정 사항이 포함된 버전으로 업그레이드하는 것입니다.

Middleware Authorization Bypass (CVE-2025-29927)

Next.js middleware는 요청 헤더를 기반으로 보안 검사를 강제할 수 있습니다. 이 CVE는 공격자가 특정 내부 헤더를 제공하여 middleware가 보안 검사를 완전히 건너뛰도록 만들 수 있음을 보여줍니다. 외부에서 볼 때 이 요청은 평범해 보이므로 탐지가 어렵습니다.

두 버그 모두 가장 위험한 트래픽이 일상적인 트래픽에 섞여 들어올 수 있으며, 시끄러운 WordPress 프로빙(probing)을 잡아내는 알람을 회피할 수 있음을 보여줍니다.

위협의 실체

  • 개발자가 프레임워크 업데이트를 선택 사항으로 취급하면 서버 전체를 탈취당할 위험이 있습니다.
  • 운영 팀이 스택을 강화하기 위해 정적 설정에만 의존한다면, 프레임워크 내부에서 실행되는 코드에 대해서는 방어할 수 없습니다.

실질적인 방어 체크리스트

  1. 배포 위생(Deployment hygiene).env와 같은 파일에 비밀 정보를 포함하여 배포하지 마십시오. 런타임에 제공되는 환경 변수나 전용 비밀 관리 시스템에 저장하십시오.
  2. 최소 공격 표면(Minimal attack surface) – 사용하지 않는 프레임워크 기능은 비활성화하십시오. 승인되지 않은 스크립트 로딩을 차단하는 엄격한 Content-Security-Policy를 적용하십시오.
  3. 신속한 패치(Rapid patching) – 새로운 프레임워크 버전이 출시된 후 몇 시간 이내에 테스트 및 배포될 수 있도록 빌드 파이프라인을 자동화하십시오. 보안 업데이트를 사후 고려 사항이 아닌 정기적인 릴리스 주기(release cadence)의 일부로 취급하십시오.

향후 주의 깊게 살펴볼 사항

  • React, Next.js 및 의존하는 기타 런타임 라이브러리의 공식 보안 권고 피드(security advisory feeds)를 구독하십시오.
  • JavaScript 패키지 메타데이터를 이해하는 취약점 스캐너를 통합하여, 새로 발표된 CVE가 자동으로 알림을 트리거하도록 하십시오.
  • 롤백이 가능한 배포 파이프라인을 구축하십시오. 패치로 인해 회귀(regression)가 발생할 경우, 시스템을 노출된 상태로 두지 않고 신속하게 되돌릴 수 있습니다.

교훈은 명확합니다. 로그에서 가장 시끄러운 공격은 종종 기만책인 경우가 많습니다. 진짜 위험은 코드가 신뢰하는 프레임워크 안에 숨어 있습니다. 스택을 가볍게 유지하고, 비밀 정보를 안전하게 저장하며, 패치를 일상적인 업무로 취급한다면 조용한 프레임워크 수준의 위협을 관리 가능한 리스크로 바꿀 수 있습니다.