
Node.js를 사용한 CVE-2025-66478 개념 증명 익스플로잇 데모
이 저장소는 Next.js CVE-2025-66478 취약점을 재현하고 연구하기 위한 개념 증명(PoC) 코드를 포함합니다. 취약한 Next.js 애플리케이션과 취약점 테스트를 위한 Node.js 익스플로잇 스크립트가 포함되어 있습니다.
English · 中文
Next.js Server Actions 처리 중에 발생하는 원격 코드 실행(RCE) 취약점입니다.
핵심 사항:
__proto__ 속성을 통한 프로토타입 오염| 항목 | 설명 |
|---|---|
| CVE ID | CVE-2025-66478 |
| 유형 | 원격 코드 실행(RCE) |
| 근본 원인 | RSC Flight 프로토콜의 안전하지 않은 역직렬화 |
| 심각도(CVSS) | 10.0 (치명적) |
| 영향 | 서버에서의 임의 시스템 명령 실행 |
__proto__와 같은 속성을 주입하는 페이로드를 제작합니다.Object.prototype이 오염됩니다.then 속성이 주입됩니다. Next.js 로직이 이러한 객체를 잘못 식별하여 **Promise(Thenable)**로 간주합니다.await하려고 하면, then 메서드에 주입된 악성 JavaScript 코드가 실행됩니다(예: child_process.execSync).sequenceDiagram
participant Attacker as Attacker
participant Server as Next.js Server
Attacker->>Server: POST / (JSON with "__proto__": {"then": ...})
Note right of Server: JSON parsing pollutes Object.prototype
Server->>Server: Application logic encounters an object
rect rgb(200, 150, 150)
Note right of Server: "Thenable" check exploitation chain
Server->>Server: Check: typeof obj.then === 'function'?
Server-->>Server: Yes (due to pollution)
end
Server->>Server: Await/execute malicious .then()
Note right of Server: Malicious JS code runs (RCE)
Server-->>Attacker: Response (Action redirect / Error message)
따라서 서버가 이 조작된 Promise를 처리할 때 공격자가 주입한 JavaScript 코드를 실행하여 시스템 명령 실행으로 이어질 수 있습니다. 포함된 main.mjs는 이 공격 시나리오를 재현하기 위한 예제 코드입니다.
이 취약점은 App Router를 사용하는 Next.js 애플리케이션에 영향을 미칩니다.
패치된 버전:
app/page.tsx: 취약한 애플리케이션의 샘플 코드.exploit.mjs: Node.js로 작성된 익스플로잇 실행 스크립트.# You can also use yarn or npm.
pnpm install
pnpm dev
브라우저에서 http://localhost:3000에 접속할 수 있는지 확인하십시오.
pnpm exploit
기본적으로 로컬 주소(http://localhost:3000)를 대상으로 합니다. 다른 주소를 테스트하려면 --url 옵션을 사용하십시오:
pnpm exploit --url http://target-ip:3000
이 코드는 보안 연구 및 교육 목적으로만 제공됩니다. 사전 허가 없이 이 도구를 시스템이나 네트워크에 사용하는 것은 불법이며, 사용자는 그러한 사용으로 인해 발생하는 모든 문제에 대해 전적인 책임을 집니다.