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, 安全测试, 控制帧, 攻击性安全, 服务端安全, 漏洞验证, 系统漏洞, 网络安全, 资源耗尽, 软件漏洞, 逆向工具, 隐私保护