Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
http-desync-guardian — Analyser les requêtes HTTP pour minimiser les risques d'attaques HTTP Desync (précurseur des attaques de type HTTP request smuggling/splitting). | Kitploit
Outils/GitHubGitHub/aws/http-desync-guardian
Analyse StatiqueAnalyse des VulnérabilitésTests de Sécurité des APISécurité Web
GitHubaws/http-desync-guardian

http-desync-guardian

Analyser les requêtes HTTP pour minimiser les risques d'attaques HTTP Desync (précurseur des attaques de type HTTP request smuggling/splitting).

Voir le dépôt
27422il y a 2 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Apache 2 License Crate Clippy/Fmt Tests Coverage Status

Aperçu

HTTP/1.1 a connu une longue évolution de 1991 à 2014 :

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

Cela signifie qu'il existe une variété de serveurs et de clients, qui peuvent avoir des vues différentes sur les limites des requêtes, créant des opportunités d'attaques de désynchronisation (a.k.a. HTTP Desync).

Cela peut sembler simple de suivre les dernières recommandations RFC. Cependant, pour les systèmes à grande échelle qui existent depuis un certain temps, cela peut avoir un impact inacceptable sur la disponibilité.

La bibliothèque http_desync_guardian est conçue pour analyser les requêtes HTTP afin de prévenir les attaques HTTP Desync, en équilibrant sécurité et disponibilité. Elle classe les requêtes en différentes catégories et fournit des recommandations sur la manière de gérer chaque niveau.

Elle peut être utilisée pour les en-têtes de requêtes HTTP brutes ou déjà analysées par un moteur HTTP. Les consommateurs peuvent configurer la journalisation et la collecte de métriques. La journalisation est limitée en débit et toutes les données utilisateur sont obscurcies.

Si vous pensez avoir trouvé un problème de sécurité, veuillez suivre notre processus de notification de sécurité.

Priorités

  • L'uniformité entre les services est essentielle. Cela signifie que la classification des requêtes, la journalisation et les métriques doivent se faire en coulisse avec des paramètres minimalement disponibles (par exemple, la destination du fichier de journal).
  • Accent sur la revue de code. La suite de tests ne doit nécessiter aucune connaissance de la bibliothèque/des langages de programmation, mais seulement du protocole HTTP. Il est donc facile de réviser, contribuer et réutiliser.
  • La sécurité est efficace lorsqu'elle est facile pour les utilisateurs. Notre objectif est de rendre l'intégration de la bibliothèque aussi simple que possible.
  • Ultra-léger. La surcharge doit être minimale et ne pas imposer de pénalité tangible sur le traitement des requêtes (voir benchmarks).

Versions HTTP prises en charge

L'objectif principal de cette bibliothèque est HTTP/1.1. Voir tests pour tous les cas couverts. Les prédécesseurs de HTTP/1.1 ne supportent pas la réutilisation de connexion, ce qui limite les opportunités de HTTP Desync, cependant certains proxys peuvent mettre à niveau ces requêtes vers HTTP/1.1 et réutiliser les connexions backend, ce qui peut permettre de créer des requêtes HTTP/1.0 malveillantes. C'est pourquoi elles sont analysées selon les mêmes critères que HTTP/1.1. Pour les autres versions de protocole, il y a les exceptions suivantes :

  • HTTP/0.9 - les requêtes ne sont jamais considérées comme Compliant, mais sont classées comme Acceptable. Si l'un des en-têtes Content-Length/Transfer-Encoding est présent, alors c'est Ambiguous.
  • HTTP/1.0 - la présence de Transfer-Encoding rend une requête Ambiguous.
  • HTTP/2+ est hors de portée. Mais si votre proxy downgrade HTTP/2 vers HTTP/1.1, assurez-vous que la requête sortante est analysée.

Voir documentation pour en savoir plus.

Utilisation depuis C

Cette bibliothèque est conçue pour être principalement utilisée depuis des moteurs HTTP écrits en C/C++.

  1. Installez cbindgen : cargo install --force cbindgen
  2. Générez le fichier d'en-tête :
    • Exécutez cbindgen --output http_desync_guardian.h --lang c pour C.
    • Exécutez cbindgen --output http_desync_guardian.h --lang c++ pour C++.
  3. Exécutez cargo build --release. Les binaires sont dans les fichiers ./target/release/libhttp_desync_guardian.*.

En savoir plus : exemples générique et Nginx.

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

/* 
 * http_engine_request_t - already parsed by the HTTP engine 
 */
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:
            // The request is good. green light
            break;
        case REQUEST_SAFETY_TIER_ACCEPTABLE:
            // Reject, if mode == STRICTEST
            // Otherwise, OK
            break;
        case REQUEST_SAFETY_TIER_AMBIGUOUS:
            // The request is ambiguous.
            // Reject, if mode == STRICTEST 
            // Otherwise send it, but don't reuse both FE/BE connections.
            break;
        case REQUEST_SAFETY_TIER_SEVERE:
            // Send 400 and close the FE connection.
            break;
        default:
            // unreachable code
            abort();
    }
}

Utilisation depuis Rust

Voir benchmarks comme exemple d'utilisation depuis Rust.

Notifications de problèmes de sécurité

Si vous découvrez un potentiel problème de sécurité dans http_desync_guardian, nous vous demandons d'en informer AWS Security via notre page de signalement de vulnérabilités. Veuillez ne pas créer de ticket public sur GitHub.

Sécurité

Voir CONTRIBUTING pour plus d'informations.

Licence

Ce projet est sous licence Apache-2.0.

Télécharger l’outil