Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/aws/http-desync-guardian
静态分析漏洞分析API安全测试Web安全
GitHubaws/http-desync-guardian

http-desync-guardian

分析HTTP请求以降低HTTP解同步攻击的风险(HTTP请求走私/拆分的前兆)。

查看仓库
2742232个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Apache 2 License Crate Clippy/Fmt Tests Coverage Status

概览

HTTP/1.1 从 1991 年到 2014 年经历了漫长的演进:

  • HTTP/0.9 – 1991
  • HTTP/1.0 – 1996
  • HTTP/1.1
    • RFC 2068 – 1997
    • RFC 2616 - 1999
    • RFC 7230 - 2014

这意味着存在多种服务器和客户端,它们对请求边界的理解可能不同,从而产生反同步攻击(即 HTTP Desync)的机会。

遵循最新的 RFC 建议看似简单。然而,对于已运行多年的大型系统,这可能会带来不可接受的可用性影响。

http_desync_guardian 库旨在分析 HTTP 请求以防范 HTTP Desync 攻击,在安全性与可用性之间取得平衡。 它将请求分类为不同的类别,并提供各层级应如何处理建议。

该库可用于原始 HTTP 请求头,也可用于已由 HTTP 引擎解析的请求。 使用者可以配置日志记录和指标收集。 日志记录有速率限制,所有用户数据均经过脱敏处理。

如果您认为自己发现了可能影响安全的问题,请遵循我们的安全通知流程。

优先级

  • 跨服务的一致性至关重要。 这意味着请求分类、日志记录和指标收集必须在底层进行,且仅需最少的可配置设置(例如日志文件目标)。
  • 注重可审查性。 测试套件不应要求了解库或编程语言,只需了解 HTTP 协议即可。因此易于审查、贡献和复用。
  • 安全在易于使用时才高效。 我们的目标是尽可能简化库的集成过程。
  • 超轻量。 开销必须最小化,不得对请求处理造成明显的负担(参见基准测试)。

支持的 HTTP 版本

本库主要关注 HTTP/1.1。所有涵盖的案例参见测试。HTTP/1.1 的前身不支持连接复用,这限制了 HTTP Desync 的机会, 但某些代理可能会将此类请求升级为 HTTP/1.1 并复用后端连接,从而可能构造恶意的 HTTP/1.0 请求。 因此它们使用与 HTTP/1.1 相同的标准进行分析。其他协议版本有以下例外:

  • HTTP/0.9 请求从不被视为 合规,而是归类为 可接受。如果存在 Content-Length/Transfer-Encoding 中的任意一个,则归类为 歧义。
  • HTTP/1.0 - 存在 Transfer-Encoding 会使请求成为 歧义。
  • HTTP/2+ 不在范围内。但如果您的代理将 HTTP/2 降级为 HTTP/1.1,请确保出站请求被分析。

更多内容请参阅文档。

从 C 语言使用

本库设计为主要用于 C/C++ 编写的 HTTP 引擎。

  1. 安装 cbindgen:cargo install --force cbindgen
  2. 生成头文件:
    • 对于 C 语言:运行 cbindgen --output http_desync_guardian.h --lang c
    • 对于 C++ 语言:运行 cbindgen --output http_desync_guardian.h --lang c++
  3. 运行 cargo build --release。生成的二进制文件位于 ./target/release/libhttp_desync_guardian.* 文件中。

更多信息请参见:通用示例 和 Nginx 示例。

root@kitploit:~
#include "http_desync_guardian.h"

/* 
 * http_engine_request_t - 由 HTTP 引擎解析后的请求 
 */
static int check_request(http_engine_request_t *req) {
    http_desync_guardian_request_t guardian_request = construct_http_desync_guardian_from(req); 
    http_desync_guardian_verdict_t verdict = {0};

    http_desync_guardian_analyze_request(&guardian_request, &verdict);

    switch (verdict.tier) {
        case REQUEST_SAFETY_TIER_COMPLIANT:
            // 请求正常,绿灯
            break;
        case REQUEST_SAFETY_TIER_ACCEPTABLE:
            // 如果 mode == STRICTEST 则拒绝
            // 否则允许
            break;
        case REQUEST_SAFETY_TIER_AMBIGUOUS:
            // 请求存在歧义。
            // 如果 mode == STRICTEST 则拒绝
            // 否则发送,但不复用前端/后端连接。
            break;
        case REQUEST_SAFETY_TIER_SEVERE:
            // 返回 400 并关闭前端连接。
            break;
        default:
            // 不可达代码
            abort();
    }
}

从 Rust 语言使用

参见基准测试 作为从 Rust 使用的示例。

安全漏洞通知

如果您在 http_desync_guardian 中发现潜在的安全问题,请通过我们的漏洞报告页面通知 AWS Security。请不要公开创建 GitHub Issue。

安全

更多信息请参见 CONTRIBUTING。

许可证

本项目采用 Apache-2.0 许可证。

下载工具