
CVE-2025-66478 概念実証
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 は、React Server Components (RSC) プロトコルにおける安全でないデシリアライゼーションに起因する、Next.js アプリケーションに影響を与える重大なリモートコード実行 (RCE) 脆弱性です。CVSS スコアは 10.0(最高レベル)で、認証されていない攻撃者が特別に細工された HTTP リクエストを介して、脆弱なサーバー上で任意のコードを実行することを可能にします。
この脆弱性は、上流の React 実装における安全でないデシリアライゼーションロジック(CVE-2025-55182)に起因し、App Router を使用する Next.js アプリケーションに影響します。問題は、サーバーとクライアント間でデータのシリアライズとデシリアライズを担当する React Server Components の "Flight" プロトコルにあります。
影響を受ける Next.js バージョン:
影響を受けないバージョン:
攻撃者は、悪意を持って構築された RSC payload を含む特別に細工された HTTP リクエストをターゲットサーバーに送信するだけで済みます。サーバーがこの payload を処理する際、安全でないデシリアライゼーションロジックにより、攻撃者が制御するデータがサーバー側の実行フローに影響を与え、任意の JavaScript コードの実行につながります。
このツールは教育目的およびセキュリティ研究のためのみに提供されます。 許可されていないシステムで使用しないでください。このツールを使用した違法行為はすべて作者とは無関係です。
exploit.js は、悪意のある RSC payload を構築および送信する方法を示す概念実証スクリプトです。このスクリプトには以下の機能が含まれています。
# 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
この脆弱性を安全にデモおよびテストするために、脆弱な Next.js アプリケーションを含む完全な Docker デモ環境を提供します。
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
起動後、数秒待ってからアクセスします。
提供された exploit スクリプトを使用して脆弱性をテストします。
# 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
デモ環境の構成は以下の通りです。
# View logs
docker-compose logs -f
# Stop environment
docker-compose down
# Stop and remove data
docker-compose down -v
# Restart environment
docker-compose restart
⚠️ 重要な警告:
test-vulnerability.js は、アプリケーションがこの脆弱性の影響を受けるかどうかを検出するためのツールです。以下のチェックを実行します。
# Test target application
node test-vulnerability.js <target-url>
# Example
node test-vulnerability.js http://localhost:3000
Next.js のアップグレード: Next.js を最新バージョンにアップグレードしてください。このバージョンには脆弱性の修正が含まれています
npm install next@latest
# or
yarn upgrade next@latest
# or
pnpm update next@latest
修正の確認: test-vulnerability.js ツールを使用して修正が成功したことを確認します
node test-vulnerability.js <target-url>
即時アップグレードが不可能な場合は、以下の一時的な緩和策を検討してください。
Pages Router の使用: 影響を受けるルートを Pages Router に移行します。Pages Router はこの脆弱性の影響を受けません
Edge Runtime の有効化: 影響を受けるルートに対して Edge Runtime を有効にします。Edge Runtime はこの脆弱性の影響を受けません
// In page component or layout
export const runtime = 'edge';
この脆弱性は、React Server Components の "Flight" プロトコルにおける安全でないデシリアライゼーションロジックを悪用します。サーバーがクライアントから RSC リクエストを受信すると、コンポーネントデータを含むペイロードをデシリアライズします。デシリアライゼーション中の検証が不十分なため、攻撃者は悪意のあるペイロードを構築し、サーバーに任意の JavaScript コードを実行させることができます。
この脆弱性を悪用するには、攻撃者は以下を必要とします。
悪用に成功すると、以下が発生する可能性があります。