本仓库演示了 Next.js 16.0.7+ 中版本字符串不一致的问题,该问题会在验证 CVE-2025-55182 补丁状态时造成混淆。
升级到 Next.js 16.0.8 后,用户检查 React 版本时会在 React DevTools 中看到 19.3.0-canary-52684925-20251110,这似乎是旧的易受攻击版本。然而,实际的 CVE 修复确实存在于 react-server-dom-* 包中。
安装依赖:
npm install
运行版本检查脚本:
npm run check-versions
或启动开发服务器并检查 React DevTools:
npm run dev
然后打开 DevTools 控制台并运行:
__REACT_DEVTOOLS_GLOBAL_HOOK__.renderers.values().next()["value"]["version"]
check-versions 脚本将显示:
react-server-dom-turbopack 使用 19.3.0-canary-709fe18f-20251202 ✅ (已修复)react-server-dom-webpack 使用 19.3.0-canary-709fe18f-20251202 ✅ (已修复)react-dom 导出的版本为 19.3.0-canary-52684925-20251110 ⚠️ (旧字符串)react 导出的版本为 19.3.0-canary-52684925-20251110 ⚠️ (旧字符串)安全修复(hasOwnProperty.call(moduleExports, metadata[2]))确实存在,但版本字符串不一致。
安全团队和开发人员在验证 CVE-2025-55182 修复时会看到旧的版本字符串,从而错误地认为他们的系统仍然易受攻击。这会在安全审计中造成不必要的混淆和潜在的误报。