做产品网站需要注意厦门 建网站
做产品网站需要注意,厦门 建网站,重庆论坛网站建设,网站主页如何配色React RCE 漏洞扫描工具 (CVE-2025-55182)
一个强大的安全扫描工具#xff0c;旨在检测 React、Next.js 以及其他使用 React 服务器组件#xff08;RSC#xff09;的项目中的 CVE-2025-55182 和 CVE-2025-66478 高危漏洞。
#x1f4cb; 项目概述
此工具可自动扫描您的项目…React RCE 漏洞扫描工具 (CVE-2025-55182)一个强大的安全扫描工具旨在检测 React、Next.js 以及其他使用 React 服务器组件RSC的项目中的CVE-2025-55182和CVE-2025-66478高危漏洞。 项目概述此工具可自动扫描您的项目检查是否使用了存在**远程代码执行RCE**漏洞的 React、Next.js 及相关 RSC 包版本。攻击者可利用此漏洞在您的服务器上未经授权执行任意代码风险极高。⚠️ 紧急提醒截至 2025 年 12 月约有39% 的云环境仍在使用存在漏洞的 Next.js 或 React 版本。如果您正在使用 React 服务器组件请立即采取行动。✨ 功能特性自动化依赖检测深度扫描node_modules精准识别易受攻击的包版本。项目架构分析智能判断项目使用的是 Next.js 的 App Router 还是 Pages Router。服务器 Actions 扫描在您的代码库中高效定位包含use server指令的文件。️RSC 框架识别自动检测项目是否使用了支持 RSC 的框架如 Remix、Waku、RedwoodJS 等。风险等级评估根据扫描结果给出清晰的风险结论严重/中等/安全。修复指南提供精确的升级命令和步骤帮助您快速修复漏洞。 支持的扫描包包名描述reactReact 核心库nextNext.js 框架react-server-dom-webpackRSC 的 Webpack 集成react-server-dom-parcelRSC 的 Parcel 集成react-server-dom-turbopackRSC 的 Turbopack 集成 安装指南系统要求Node.js 16 或更高版本npm 或 yarn 包管理器安装步骤克隆此仓库或直接下载check.js文件到您的本地项目目录gitclone https://github.com/yourusername/check-react-rce-cve-2025-55182.gitcdcheck-react-rce-cve-2025-55182(或者将check.js文件复制到您想要扫描的 React/Next.js 项目根目录中。)无需额外安装依赖工具使用 Node.js 原生模块运行。 使用说明基础使用将终端定位到包含check.js文件以及您要扫描的package.json的目录。运行以下命令nodecheck.js典型使用场景工具将自动执行以下操作读取依赖从package.json和node_modules中获取相关包的版本。版本比对将当前版本与已知的易受攻击版本范围进行比对。分析代码结构扫描项目文件判断 Router 类型和use server的使用情况。输出报告在控制台中生成彩色、结构化的扫描报告包含风险结论和修复建议。输出示例扫描完成后您将看到类似如下的输出 REACT RCE VULNERABILITY SCANNER (CVE-2025-55182) [项目分析] 项目路径: /path/to/your/project 检测到框架: Next.js (App Router) 发现 use server 指令: 是 [依赖版本] react: 18.3.0-canary-... (易受攻击) next: 14.0.0 (安全) ... [风险结论] ❌ 严重风险您的项目使用了易受攻击的 React 版本并启用了 Server Actions。 [修复建议] 请立即升级 react 到 18.3.1-canary-xxx 或更高版本 npm install reactlatest react-domlatest ... 核心代码以下是扫描工具的核心逻辑实现展示了如何获取包版本并进行初步解析。// check.js 核心片段constfsrequire(fs);constpathrequire(path);const{execSync}require(child_process);// 用于控制台彩色输出的ANSI转义码constc{red:\x1b[31m,green:\x1b[32m,yellow:\x1b[33m,blue:\x1b[34m,cyan:\x1b[36m,bold:\x1b[1m,reset:\x1b[0m,dim:\x1b[2m};/** * 获取指定npm包的已安装版本 * 优先尝试从 npm list 命令获取精确版本失败后回退到读取 package.json * param {string} packageName 包名 * returns {string|null} 版本号或null */functiongetPackageVersion(packageName){// 尝试通过 npm list 命令获取版本信息最准确try{constoutputexecSync(npm list${packageName}--json,{encoding:utf8,stdio:pipe});constparsedJSON.parse(output);if(parsed.dependenciesparsed.dependencies[packageName]){returnparsed.dependencies[packageName].version;}returnnull;}catch(e){// 如果 npm list 报错如包未安装尝试解析其错误输出中的JSONif(e.stdout){try{constparsedJSON.parse(e.stdout);if(parsed.dependenciesparsed.dependencies[packageName]){returnparsed.dependencies[packageName].version;}}catch(err){}}// 最终回退方案直接从 package.json 读取版本范围try{constpkgrequire(path.join(process.cwd(),package.json));constvpkg.dependencies?.[packageName]||pkg.devDependencies?.[packageName];// 移除 ^ 或 ~ 符号以得到粗略版本returnv?v.replace(/[\^~]/g,):null;}catch(err){returnnull;}}}/** * 解析版本字符串为主版本号、次版本号和修订号 * 同时尝试解析canary版本的构建号 * param {string} vStr 版本字符串如 18.3.0-canary-xxx * returns {object|null} 包含 major, minor, patch, canary 的对象 */functionparseVer(vStr){if(!vStr)returnnull;// 移除预发布标签后缀如 -canary-xxx以获取核心版本号constcleanvStr.split(-)[0];const[major,minor,patch]clean.split(.).map(Number);// 解析canary版本号如果存在letcanary0;if(vStr.includes(canary)){constpartsvStr.split(.);constlastPartparts[parts.length-1];canaryparseInt(lastPart,10)||0;}return{major,minor,patch,canary};}// ... 后续代码包含版本比对、文件扫描和报告生成逻辑FINISHED6HFtX5dABrKlqXeO5PUv/9JA46icxe/30dKWTNmxJiKvMXn9J0ckn8IqTD/AyRtl 更多精彩内容 请关注我的个人公众号 公众号办公AI智能小助手 对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号网络安全技术点滴分享