不要让一个忽略的版本号,成为企业内网的突破口。Spring WebFlux 应用在给静态资源加“锁”时藏着一条隐蔽的“密道”——这就是 CVE-2024-38821 漏洞。攻击者无需任何认证、无需用户交互,就能直接访问未授权静态资源,拿到本该被保护的关键信息。
一、 核心速览
- 漏洞编号:CVE-2024-38821
- CVSS 评分:9.1(严重)
- 公开时间:2024 年 10 月 25 日
- 奇安信评级:高危
- POC/EXP:已公开
- 利用条件:远程利用、无需任何权限、无需用户交互
- 利用复杂度:低
- 受影响组件:Spring Security(WebFlux 模块)
- 官方修复状态:仅 6.2.x 和 6.3.x 提供免费补丁;5.x 和 6.0/6.1 旧版本仅限付费企业支持,社区版用户无法直接升级修复
二、 漏洞详解
2.1 漏洞原理:静态资源的“第二把钥匙”
Spring WebFlux 是 Spring 框架中的响应式编程模块,在处理静态资源时有一套特殊的路径匹配规则。当开发者在静态资源上配置了非 permitAll 的授权规则,这套路径匹配机制与常规认证流程存在解析差异,攻击者可以构造特定请求,使安全过滤器链完全忽略该资源,直接放行。
这意味着:给静态资源上了锁,但攻击者却找到了一把没人知道的“第二把钥匙”,把锁当空气一样直接穿过去。
2.2 技术细节
该漏洞的根本原因是 Spring Security WebFlux 在解析模式所产生的权限绕过。Spring WebFlux 应用程序在满足以下条件时必须更新:
- 必须是 WebFlux 应用程序
- 必须使用 Spring 的静态资源支持
- 必须对静态资源支持应用非 permitAll 授权规则
攻击者可以构造恶意请求,绕过原本的身份认证机制,从而未授权访问本应受保护的资源。攻击全过程无需任何权限、无需用户交互,仅需网络可达。
- 漏洞利用方式:攻击者直接向目标站点的静态资源路径(例如静态文件目录)发起请求,不依赖任何用户侧的点击或交互行为。
- 攻击链路:自动化漏洞扫描工具发现存在漏洞的 Spring 应用 → 发起恶意请求 → 绕过认证获取核心配置文件。
三、 漏洞危害与影响范围
3.1 影响版本
| Spring Security 版本 | 是否受影响 |
|---|---|
| 5.7.0 – 5.7.12 | ✅ 是 |
| 5.8.0 – 5.8.14 | ✅ 是 |
| 6.0.0 – 6.0.12 | ✅ 是 |
| 6.1.0 – 6.1.10 | ✅ 是 |
| 6.2.0 – 6.2.6 | ✅ 是 |
| 6.3.0 – 6.3.3 | ✅ 是 |
| 较旧的、不受支持的版本 | ✅ 受影响 |
3.2 漏洞危害
- 敏感数据泄露:未授权访问
application.yml、application.properties,导致数据库密码等核心凭证暴露。 - 越权操作:结合 WebFlux 接口权限配置缺陷,攻击者可执行非授权数据库操作。
- 攻击跳板:利用窃取的配置文件作为跳板,向数据库服务器发起进一步攻击。
四、 修复困境:半数版本无法直接升级
4.1 “付费”修复公告
官方修复版本要求:
- Spring Security 5.7.x → 需升级到 5.7.13(仅限企业支持)
- Spring Security 5.8.x → 需升级到 5.8.15(仅限企业支持)
- Spring Security 6.0.x → 需升级到 6.0.13(仅限企业支持)
- Spring Security 6.1.x → 需升级到 6.1.11(仅限企业支持)
- Spring Security 6.2.x → 升级到 6.2.7
- Spring Security 6.3.x → 升级到 6.3.4
这意味着仍在使用 5.7.x 到 6.1.x 的大批企业和开发者,若不购买商业支持,根本无法获得官方安全更新。
4.2 版本升级的阻力
Spring Security 在 5.x 与 6.x 之间的配置方式差异巨大,完全不向下兼容。强行升级可能引发项目无法启动、权限配置全面失效等一系列连锁故障,升级成本极高——这是企业开发者不得不面对的残酷现实。
五、 百度云防护 WAF 防御方案
5.1 规则 ID 4229:已内置拦截
根据百度云防护内置规则库截图,CVE-2024-38821 的防御规则已上线:
| 规则名称 | 规则 ID | 风险等级 | 防护类型 | 规则描述 |
|---|---|---|---|---|
| Privilege_bypass.CVE-2024-38821.A | 4229 | 中风险 | 权限绕过 | 检测 Spring Security 静态资源未授权访问漏洞(CVE-2024-38821) |
5.2 规则的防御逻辑
该规则专门针对攻击者通过静态资源路径的恶意请求设计,能够精准识别并拦截针对此漏洞的攻击尝试,原因在于:
- 即使攻击者构造复杂的路径混淆请求,规则会自动解码,还原真实访问意图,通过语义分析精准命中恶意行为。
- 规则直接从网络层阻断所有企图绕过 Spring Security 静态资源认证的流量,无论攻击者如何变换代理 IP,都无法触及源站。
5.3 WAF 的多样化防御能力
百度云防护 WAF 构建了精细化的防护体系,可有效应对各类自动化、分布式攻击:
① 自定义规则(A)— URI / Header 精准匹配
允许用户基于业务特征自定义拦截规则,例如针对静态资源目录/static/、/api/public/(若接口不应被外部访问)和高危/admin/*进行精细化阻断。
② JA3 指纹拦截 — 从“识别 IP”升级到“识别工具”
百度云防护 WAF 的自定义规则现已支持 JA3 指纹识别。即使攻击者使用了代理池不断更换 IP,只要其攻击工具(如 SQLmap、AWVS 或自研脚本)未更换底层 TLS 通信库,JA3 指纹就会保持不变。WAF 可通过一条 JA3 规则,锁定攻击者使用的工具,实现“以不变应万变”的精准拦截。
③ IP 情报库 — 阻断代理、云服务、秒拨 IP
WAF 内置百度安全大脑 IP 情报库,每日分析千亿级全球网络流量。一条简单规则即可封杀代理 IP、云服务 IP、秒拨 IP 等常见攻击源,从源头减少 90% 以上攻击。
④ 请求频率与路径限速 — 精准自定义 CC
对受攻击的静态资源路径设置 CC 频率限制,如限制每分钟请求数或连续失败请求数,超出阈值则自动追加封禁。
5.4 部署步骤
如果已经接入百度云防护,通常基础防护引擎已默认开启规则 4229,无需额外配置。确认方法如下:
- 登录百度云防护控制台 → 防护配置 → Web 防护 → Web 基础防护,确认开启。
- 进入自定义规则搜索规则 ID 4229,确保状态为“开启”,动作为“拦截”。若初始为“观察”,应手动调整为“拦截”。
如果尚未接入百度云防护,请联系主机吧,工程师将协助快速部署。
六、 开发侧临时加固建议(无缝衔接 WAF 形成立体防御)
| 临时措施 | 操作要点 |
|---|---|
| 静态资源拆分域名 | 将所有静态资源放在独立域名(如 static.yourdomain.com),不携带任何 Cookie,通过 WAF 放行该域名并严格配置缓存策略 |
| HTTP Referer 校验 | 在 Nginx 或网关层校验静态资源请求的 Referer,拒绝跨站或空 Referer 的请求(WAF 自定义规则配合实现) |
| 监控与阻断 | 在 WAF 或防火墙中持续监控对静态资源目录的高频、异常扫描行为,及时更新拦截规则 |
七、 WAF 部署前后对比
| 对比项 | 部署前(仅依赖代码层) | 部署后(百度云防护 WAF) |
|---|---|---|
| CVE-2024-38821 攻击拦截 | 需官方补丁(半数版本需付费) | 规则 4229 已内置,即时生效 |
| 攻击成本 | 攻击者以极低成本自动化扫描即可入侵 | JA4 指纹+IP 情报库先发制人 |
| 源站负载 | 攻击流量直接穿透,耗尽数据库连接 | 边缘节点清洗,源站仅接收干净请求 |
| 升级压力 | 高版本不兼容,业务中断风险大 | 无感防护,业务零改造 |
CVE-2024-38821 再次提醒我们,依赖官方补丁链存在巨大的时间窗口和被忽视的“白名单”边界。 对于大量无法立即升级到安全版本的 Spring Security 老旧系统,百度云防护 WAF 是企业的不二之选。它不仅是应急的“虚拟补丁”,更是长期纵深防御的基石。通过规则 4229、JA4 指纹、IP 情报库和精准 CC 规则,即使攻击者绕过了开发层,流量的第一道防线依然会让他折戟。
如果企业暂时无法停止业务进行版本升级,欢迎联系主机吧,我们提供免费安全评估和百度云防护 WAF 应急接入方案。


