ayushghatkar8080/MadeYouReset_Tester
GitHub: ayushghatkar8080/MadeYouReset_Tester
MadeYouReset漏洞检测工具,用于检测Web服务器是否易受CVE-2025-8671漏洞影响。
Stars: 2 | Forks: 0
# MadeYouReset 检查器
一个轻量级的 Python 脚本,用于检测 Web 服务器是否可能受到 **MadeYouReset** HTTP/2 拒绝服务漏洞的影响——追踪为 **CVE-2025-8671**(CVSS 7.5 高)。
## 背景
**MadeYouReset** 是一个 HTTP/2 拒绝服务漏洞,于 2025 年 8 月由特拉维夫大学和 Imperva 的研究人员披露。它利用了 HTTP/2 流会计与许多流行服务器实现内部后端处理之间的不匹配。
攻击会发送故意损坏的 HTTP/2 控制帧(例如,一个 `WINDOW_UPDATE` 帧的 `increment=0`,根据 RFC 9113 §6.9.1 是非法的),迫使 **服务器本身** 发出 `RST_STREAM` 帧。因为服务器在协议层面上将流视为已关闭,同时继续在后台处理请求,攻击者可以绕过 `MAX_CONCURRENT_STREAMS` 限制并耗尽服务器资源——而不发送单个客户端 `RST_STREAM`。
这使得它绕过了为早期 **Rapid Reset** 攻击(CVE-2023-44487)引入的缓解措施。
**已知受影响的软件:**
| 产品 | CVE |
|---|---|
| Apache Tomcat 9.x / 10.x / 11.x | CVE-2025-48989 |
| Netty < 4.1.124.Final / 4.2.4.Final | CVE-2025-55163 |
| F5 BIG-IP | CVE-2025-54500 |
| IBM WebSphere Application Server Liberty | CVE-2025-36047 |
| Varnish, Fastly, Jetty, SUSE, Wind River | CVE-2025-8671 |
## 检查器的工作原理
1. 打开目标主机的 TCP 连接。
2. 通过 ALPN 协商执行 TLS 握手。
3. 发送 HTTP/2 客户端前言和 `SETTINGS` 帧。
4. 使用 `HEADERS` 帧打开请求流。
5. 在打开的流上发送损坏的 `WINDOW_UPDATE` 帧(`increment=0`)。
6. 分析服务器响应:
- **流上的 `RST_STREAM`(没有 `GOAWAY`)** → 可能存在漏洞。
- **`GOAWAY`** → 正确的 RFC 行为;可能已修复。
- **无响应/不确定** → 建议手动跟进。
## 要求
- Python **3.7+**
- 无外部包——仅纯标准库。
## 安装
```
git clone https://github.com/ayushghatkar8080/MadeYouReset_Tester.git
cd MadeYouReset_Tester
# 无需pip安装 — 无依赖
```
## 使用
```
python3 main.py [OPTIONS]
```
### 选项
| 标志 | 默认 | 描述 |
|---|---|---|
| `--timeout SECONDS` | `8` | 套接字读取超时 |
| `--no-color` | off | 禁用 ANSI 颜色输出 |
### 示例
```
# 基本检查
python3 main.py https://example.com
# 自定义端口和更长的超时
python3 main.py https://example.com:8443 --timeout 15
# CI友好(无颜色)
python3 main.py https://example.com --no-color
```
## 退出代码
| 代码 | 含义 |
|---|---|
| `0` | 服务器响应了 `GOAWAY`(正确的 RFC 行为)——无漏洞 |
| `1` | **可能存在漏洞**——服务器在流上发送了 `RST_STREAM` 但没有 `GOAWAY` |
| `2` | 不确定——没有 HTTP/2、连接错误或模糊的响应 |
退出代码使得将其集成到 CI 管道或自动化脚本变得简单。
## 示例输出
```
========================================================
MadeYouReset (CVE-2025-8671) Checker
========================================================
Target : https://vulnerable-server.example.com
Host : vulnerable-server.example.com:443
Path : /
Timeout : 8.0s
────────────────────────────────────────────────────────
[*] Connecting to vulnerable-server.example.com:443 ...
✓ TCP connection established
[*] Performing TLS handshake (ALPN: h2, http/1.1) ...
→ Negotiated protocol : h2
✓ HTTP/2 (h2) negotiated via ALPN
[*] Sending HTTP/2 client preface ...
✓ Preface + SETTINGS sent
[*] Waiting for server SETTINGS ...
← Frame type=0x04 stream=0 length=18
✓ Server SETTINGS received
✓ Sent SETTINGS ACK
[*] Opening HTTP/2 stream 1 (HEADERS frame) ...
✓ HEADERS sent on stream 1
[*] Sending malformed WINDOW_UPDATE (increment=0) on stream 1 ...
RFC 9113 §6.9.1: increment=0 is a stream-level FLOW_CONTROL_ERROR
✓ Malformed WINDOW_UPDATE sent
[*] Analysing server response (timeout=8.0s) ...
← RST_STREAM stream=1 error_code=0x00000003
────────────────────────────────────────────────────────
RESULT
────────────────────────────────────────────────────────
[LIKELY VULNERABLE]
Server responded with RST_STREAM on stream 1
(error_code=0x00000003) but did NOT send GOAWAY.
Recommended actions:
• Patch: Apache Tomcat ≥10.1.44/11.0.10/9.0.108,
Netty ≥4.1.124.Final / 4.2.4.Final,
and other vendor advisories for CVE-2025-8671.
• Interim: disable HTTP/2 or deploy a WAF/proxy that
validates HTTP/2 frames before forwarding.
========================================================
```
## 补救措施
| 操作 | 详情 |
|---|---|
| **修补** | 应用您 HTTP/2 栈的最新供应商更新(见上表) |
| **禁用 HTTP/2** | 暂时回退到 HTTP/1.1 作为缓解措施 |
| **WAF / 代理** | 在边缘部署反向代理或 WAF 以验证 HTTP/2 帧 |
| **速率限制** | 强制每个客户端连接上限和 RST_STREAM 速率限制 |
## 免责声明
## 参考资料
- [CERT/CC VU#767506](https://kb.cert.org/vuls/id/767506)
- [Netty 安全公告 — GHSA-prj3-ccx8-p6x4](https://github.com/netty/netty/security/advisories/GHSA-prj3-ccx8-p6x4)
- [Jetty 安全公告 — GHSA-mmxm-8w33-wc4h](https://github.com/jetty/jetty.project/security/advisories/GHSA-mmxm-8w33-wc4h)
- [NVD — CVE-2025-8671](https://nvd.nist.gov/vuln/detail/CVE-2025-8671)
- [RFC 9113 — HTTP/2 §6.9.1 流控制](https://www.rfc-editor.org/rfc/rfc9113#section-6.9.1)
标签:Apache Tomcat, CVE-2025-8671, DoS攻击, F5 BIG-IP, Fastly, GOAWAY, HTTP/2, HTTP/2 Denial-of-Service, HTTP/2协议, IBM WebSphere Application Server Liberty, Imperva, Jetty, MadeYouReset, Maven, Netty, Rapid Reset, RST_STREAM, SUSE, Tel Aviv University, Varnish, WINDOW_UPDATE, Wind River, 安全测试, 控制帧, 攻击性安全, 服务端安全, 漏洞验证, 系统漏洞, 网络安全, 资源耗尽, 软件漏洞, 逆向工具, 隐私保护