|
| 1 | +--- |
| 2 | +title: "不能忽略的 CVE-2025-66478 滿級漏洞 :(" |
| 3 | +description: "CVE-2025-66478 是一個影響 Next.js 的嚴重安全漏洞,源自 React Server Components (RSC) 協議中的缺陷,可能導致伺服器被遠端執行腳本或指令。還好平常有使用 Docker 部署,大幅降低了損害。" |
| 4 | +date: 2025-12-17 |
| 5 | +slug: sharing-2025-12-17 |
| 6 | +image: /img/ExpTech_Studio_white.png |
| 7 | +authors: [PiscesXD] |
| 8 | +tags: [pisces-xd, sharing, cve, next-js, docker] |
| 9 | +keywords: [開發分享, Next.js, 安全漏洞, CVE, Docker] |
| 10 | +--- |
| 11 | + |
| 12 | +import SeverityBadge from "@site/src/components/SeverityBadge"; |
| 13 | +import StatusBadge from "@site/src/components/StatusBadge"; |
| 14 | +import ImageLightbox from "@site/src/components/ImageLightbox"; |
| 15 | + |
| 16 | +<SeverityBadge level="high" /> |
| 17 | +<StatusBadge status="resolved" /> |
| 18 | + |
| 19 | +--- |
| 20 | + |
| 21 | +CVE-2025-66478 是一個影響 Next.js 的嚴重安全漏洞,源自 React Server Components (RSC) 協議中的缺陷,可能導致伺服器被遠端執行腳本或指令。還好平常有使用 Docker 部署,大幅降低了損害。 |
| 22 | + |
| 23 | +{/* truncate */} |
| 24 | + |
| 25 | +## 事件概述 |
| 26 | + |
| 27 | +- **發現時間:** 2025/12/8 |
| 28 | +- **CVSS 評分:** 10.0 (Critical) |
| 29 | +- **漏洞類型:** 遠端程式碼執行 (Remote Code Execution) |
| 30 | +- **攻擊向量:** 網路攻擊,無需身份驗證 |
| 31 | + |
| 32 | +## 心得與過程 |
| 33 | + |
| 34 | +一開始看到這個漏洞公告時,其實還以為只是「又一個框架安全更新」,沒有特別在意。 |
| 35 | +直到自己的 IP 被 Cloudflare 列入黑名單之後,才真正意識到事情不單純,背後很可能已經有人在主動嘗試攻擊。 |
| 36 | + |
| 37 | +所幸平常習慣使用 Docker 部署,再加上前後端分離設計,讓這次事件的實際影響相對有限: |
| 38 | + |
| 39 | +- 攻擊者無法直接讀取後端服務的敏感資料 |
| 40 | +- 沒有將實體檔案系統掛載進容器,入侵到宿主機的風險相對較低 |
| 41 | + |
| 42 | +最後只需要重新 Build 映像並重新部署,同時更新 Next.js 版本,就能把環境還原成乾淨狀態,算是有驚無險的一次經驗。 |
| 43 | + |
| 44 | +## 漏洞詳情 |
| 45 | + |
| 46 | +### 技術細節 |
| 47 | + |
| 48 | +CVE-2025-66478 源於 React 的上游實作(CVE-2025-55182),在特定條件下,攻擊者可以透過精心構造的請求,觸發伺服器端未預期的執行路徑,進而達成在伺服器上遠端執行腳本或指令。 |
| 49 | + |
| 50 | +#### 漏洞成因 |
| 51 | + |
| 52 | +1. **React Server Components (RSC) 協議缺陷** |
| 53 | + |
| 54 | + - RSC 協議在處理特定型態的請求時存在安全漏洞 |
| 55 | + - 攻擊者可以透過惡意請求繞過部分安全檢查 |
| 56 | + |
| 57 | +2. **執行路徑控制** |
| 58 | + - 漏洞允許攻擊者影響伺服器端的程式碼執行流程 |
| 59 | + - 在某些情況下,可能繞過原本預期的安全防護機制 |
| 60 | + |
| 61 | +#### 攻擊方式 |
| 62 | + |
| 63 | +實際觀察到的攻擊行為大致如下: |
| 64 | + |
| 65 | +- 攻擊者連線進來後,會先偵測伺服器上已安裝的套件與環境 |
| 66 | +- 接著嘗試從遠端下載惡意腳本並在伺服器上執行 |
| 67 | + |
| 68 | +目前實際遇到的腳本類型包含: |
| 69 | + |
| 70 | +- **偽裝成 Nginx 的程式或服務** |
| 71 | +- **挖礦腳本** |
| 72 | +- **後門腳本**(包含開機自動執行的腳本,持久性很強) |
| 73 | +- **架設 VPN / Proxy 的腳本** |
| 74 | +- **PowerShell 腳本**(針對 Windows 環境) |
| 75 | + |
| 76 | +下方是其中一個惡意腳本的內容截圖(已對部分資訊進行遮蔽處理): |
| 77 | + |
| 78 | +<ImageLightbox |
| 79 | + src="/img/sharing/2025-12-17/image.png" |
| 80 | + alt="惡意腳本截圖" |
| 81 | + title="惡意腳本截圖" |
| 82 | +/> |
| 83 | + |
| 84 | +## 參考資源 |
| 85 | + |
| 86 | +- [Next.js 官方安全公告](https://nextjs.org/blog/CVE-2025-66478) |
| 87 | +- [React CVE-2025-55182](https://github.com/facebook/react/security/advisories) |
| 88 | + |
| 89 | +## 相關日誌記錄 |
| 90 | + |
| 91 | +import GithubRepoCard from "@site/src/components/GithubRepoCard"; |
| 92 | + |
| 93 | +<GithubRepoCard |
| 94 | + owner="ExpTechTW" |
| 95 | + repo="CVE-2025-66478" |
| 96 | + displayName="CVE-2025-66478" |
| 97 | + description="Next.js 的 CVE-2025-66478 漏洞詳情" |
| 98 | +/> |
| 99 | + |
| 100 | +## 總結 |
| 101 | + |
| 102 | +CVE-2025-66478 是一個極為嚴重的安全漏洞(CVSS 10.0),在最壞情況下甚至可能讓伺服器完全落入攻擊者手中。 |
| 103 | +這次事件之後,我會更加重視伺服器的安全性,包含: |
| 104 | + |
| 105 | +- 優先更新與安全性相關的套件與框架版本 |
| 106 | +- 持續關注 CVE 與官方安全公告 |
| 107 | +- 部署時盡量使用容器化與最小權限原則,降低實際損害範圍 |
| 108 | + |
| 109 | +也算是被這次事件好好上了一課: |
| 110 | +**安全性更新不是「之後再說」的選項,而是需要排進日常維護流程裡的必修課。** |
0 commit comments