harley-ghostie/safe-check-CVE-2025-23419
GitHub: harley-ghostie/safe-check-CVE-2025-23419
针对 CVE-2025-23419(NGINX mTLS 会话恢复绕过漏洞)的非侵入式安全检测脚本,通过启发式分析外部可观测指标判断目标是否存在暴露风险。
Stars: 0 | Forks: 0
# CVE-2025-23419 安全检查 - NGINX mTLS 会话恢复
用于安全验证 **CVE-2025-23419** 的脚本仓库,该漏洞与 **NGINX**、**mTLS** 和 **TLS 会话恢复**相关。
该脚本执行启发式检查,以识别潜在的漏洞暴露,而不会执行主动利用,也不会尝试绕过基于客户端证书的身份验证。
其目的是支持在授权环境中进行技术分诊、防御性验证和暴露面分析。
## 涉及的 CVE
| CVE | 技术 | 类型 | 受影响组件 |
|---|---|---|---|
| `CVE-2025-23419` | NGINX | 可能绕过 mTLS 身份验证 | 虚拟主机中的 TLS 会话恢复 |
## 漏洞概述
**CVE-2025-23419** 影响以下场景:当多个 NGINX `server blocks` 共享相同的 IP 和端口,且环境使用客户端证书身份验证(也称为 **mTLS**)时。
在某些特定配置中,攻击者可能会重新使用先前建立的 TLS 会话,以绕过另一个虚拟主机上下文中的客户端证书身份验证要求。
该漏洞与 **TLS 会话恢复** 的使用有关,特别是当启用了 `ssl_session_cache` 或 `ssl_session_tickets` 时。
实际上,漏洞暴露取决于 NGINX 易受攻击的版本、TLS 1.3 的使用、TLS 会话配置、多个虚拟主机以及环境特定部分中 mTLS 的应用这几者之间的组合情况。
## 受影响版本
根据公开的安全公告,该问题影响:
```
NGINX 1.11.4 e versões posteriores
```
当存在以下条件时:
```
NGINX compilado com OpenSSL
TLS 1.3 habilitado
Session resumption habilitado
Uso de ssl_session_cache ou ssl_session_tickets
Múltiplos server blocks compartilhando o mesmo IP e porta
Autenticação mTLS/client certificate em algum virtual host
```
修复版本已发布在:
```
NGINX 1.26.3
NGINX 1.27.4
```
因此,以下版本:
```
nginx/1.24.0
```
只要其配置场景也符合该漏洞的特征,就应被视为 **潜在受影响版本**。
重要提示:仅凭受影响版本不能确认漏洞可被利用。它表明需要对配置进行验证。
## 可用脚本
| 脚本 | 目的 | 何时使用 |
|---|---|---|
| `safe-check-CVE-2025-23419.py` | 对潜在 CVE-2025-23419 暴露进行安全启发式检查。 | 在目标暴露了潜在受影响的 NGINX,且怀疑使用了 mTLS/TLS 会话恢复时使用。 |
## 脚本功能
该脚本执行安全验证以收集漏洞的迹象:
- 尝试识别 `Server` 标头;
- 验证服务是否类似于 NGINX;
- 提取公开的 NGINX 版本;
- 将版本与潜在受影响范围进行比较;
- 尝试推断端点是否需要 mTLS;
- 检查 TLS 会话恢复的迹象;
- 测试随机 SNI/Host,以识别同一 IP 和端口上可能存在的未配置 mTLS 的 vhost/default;
- 返回简单输出,指示为 `POSSIVEL` 或 `NAO_INDICADO`。
## 脚本不会执行的操作
此脚本不会利用该漏洞。
它不会尝试:
- 绕过 mTLS 身份验证;
- 访问受保护区域;
- 使用有效的客户端证书;
- 以攻击性方式在不同 vhost 之间重用会话;
- 造成服务不可用;
- 执行暴力破解;
- 修改环境中的数据。
其目的只是收集技术迹象,以支持防御性分诊和验证。
## 使用的理想场景
当存在以下一个或多个迹象时,请使用此脚本:
```
Servidor expõe nginx/1.24.0
Ambiente utiliza mTLS
Existem múltiplos virtual hosts no mesmo IP e porta
Há uso de TLS 1.3
Há suspeita de ssl_session_cache ou ssl_session_tickets habilitados
Ferramenta automatizada apontou CVE-2025-23419
```
适当目标的示例:
```
https://api.exemplo.com.br/
https://admin.exemplo.com.br/
https://mtls.exemplo.com.br/
https://gateway.exemplo.com.br/
```
# 脚本使用
## 基本示例
```
python3 safe-check-CVE-2025-23419.py https://exemplo.com.br/
```
## 详细输出示例
```
python3 safe-check-CVE-2025-23419.py https://exemplo.com.br/ --verbose
```
## JSON 输出示例
```
python3 safe-check-CVE-2025-23419.py https://exemplo.com.br/ --json
```
## 修改超时示例
```
python3 safe-check-CVE-2025-23419.py https://exemplo.com.br/ --timeout 10
```
# 结果解读
## POSSIVEL 结果
```
POSSIVEL
```
指示脚本发现了与潜在 **CVE-2025-23419** 暴露迹象相符的特征。
这并不确认漏洞可被利用。这意味着该环境需要人工分析 NGINX 配置,并由负责团队进行验证。
详细输出示例:
```
POSSIVEL
nginx_header: nginx/1.24.0
nginx_ver: (1, 24, 0) (vuln? True)
mtls_hint: True
tls: TLSv1.3
resumption_reused: True
other_vhost_no_mtls_hint: True
```
这些数据有助于理解为什么该端点被分类为潜在暴露。
## NAO_INDICADO 结果
```
NAO_INDICADO
```
指示脚本未在该端点发现足够的迹象来指出其存在潜在暴露。
这并不绝对保证没有漏洞,特别是在以下情况:
- `Server` 标头被隐藏;
- NGINX 版本未公开;
- mTLS 配置在另一个虚拟主机上;
- 负载均衡器/CDN 掩盖了真实的 NGINX;
- 验证在错误的端点上执行;
- 无法从外部推断真实的 NGINX 配置。
# 脚本中的可调字段
可以调整的主要部分包括:
```
CERT_ERROR_STATUS = {400, 401, 403, 495, 496}
```
此列表表示可能与缺少或无效客户端证书故障相关的 HTTP 状态码。
也可以通过命令行调整 `timeout`:
```
--timeout 10
```
# 依赖项
## 依赖
该脚本仅使用 Python 标准库。
主要依赖:
```
python3
ssl
socket
argparse
urllib
```
无需通过 `pip` 安装外部库。
# 缓解建议
将 NGINX 更新到已修复的版本,根据所使用的发布渠道,最好更新至 `1.26.3`、`1.27.4` 或更高版本。
检查共享相同 IP 和端口的 `server blocks` 配置,特别是当只有部分虚拟主机配置了 mTLS 时。
评估使用以下配置:
```
ssl_session_cache
ssl_session_tickets
TLS 1.3
server blocks compartilhando IP e porta
mTLS aplicado em virtual hosts específicos
```
还建议隔离需要客户端证书的上下文,并验证 mTLS 身份验证是否应用于正确的虚拟主机。
此外,请检查 proxies、gateways、load balancers、ingress controllers 和 CDN 中的配置,因为终止 TLS 的组件可能不是最终响应应用程序的同一组件。
# 参考资料
```
https://mailman.nginx.org/pipermail/nginx-announce/2025/NYEUJX7NCBCGJGXDFVXNMAAMJDFSE45G.html
https://nvd.nist.gov/vuln/detail/CVE-2025-23419
https://ubuntu.com/security/CVE-2025-23419
https://github.com/advisories/GHSA-84xh-pwc6-7g4g
https://access.redhat.com/security/cve/cve-2025-23419
```
# 免责声明
此脚本只能在授权环境中使用。
其目的是支持安全分诊、安全验证、授权渗透测试、防御性分析以及配置暴露的确认。
严禁在未经授权的情况下针对系统使用。
标签:AES-256, CISA项目, CVE-2025-23419, Heuristic Check, mTLS, NGINX, PoC, Python, Scanner, SSL_SESSION_CACHE, TLS 1.3, TLS Session Resumption, URL发现, Web服务器安全, 安全检测, 无后门, 暴力破解, 漏洞评估, 虚拟主机, 身份验证绕过, 逆向工具, 防御分析