Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
http-desync-guardian — Analizza le richieste HTTP per minimizzare i rischi di attacchi HTTP Desync (precursore di HTTP request smuggling/splitting). | Kitploit
Strumenti/GitHubGitHub/aws/http-desync-guardian
Analisi StaticaAnalisi delle VulnerabilitàTest di Sicurezza delle APISicurezza Web
GitHubaws/http-desync-guardian

http-desync-guardian

Analizza le richieste HTTP per minimizzare i rischi di attacchi HTTP Desync (precursore di HTTP request smuggling/splitting).

Vedi Repository
274222 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Apache 2 License Crate Clippy/Fmt Tests Coverage Status

Panoramica

HTTP/1.1 ha attraversato una lunga evoluzione dal 1991 al 2014:

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

Ciò significa che esistono vari server e client, che potrebbero avere visioni diverse sui confini delle richieste, creando opportunità per attacchi di desincronizzazione (noti come HTTP Desync).

Potrebbe sembrare semplice seguire le ultime raccomandazioni RFC. Tuttavia, per sistemi su larga scala che esistono da tempo, ciò potrebbe comportare un impatto inaccettabile sulla disponibilità.

La libreria http_desync_guardian è progettata per analizzare le richieste HTTP al fine di prevenire gli attacchi HTTP Desync, bilanciando sicurezza e disponibilità. Classifica le richieste in diverse categorie e fornisce raccomandazioni su come gestire ciascun livello.

Può essere utilizzata sia per intestazioni di richieste HTTP grezze, sia per richieste già parse da un motore HTTP. I consumatori possono configurare la raccolta di log e metriche. La registrazione è limitata in frequenza e tutti i dati utente sono offuscati.

Se pensi di aver trovato un problema di sicurezza, segui il nostro processo di notifica di sicurezza.

Priorità

  • L'uniformità tra i servizi è fondamentale. Ciò significa che la classificazione delle richieste, la registrazione e le metriche devono avvenire sotto il cofano e con impostazioni minimamente disponibili (ad esempio, come la destinazione del file di log).
  • Focus sulla revisionabilità. La suite di test non deve richiedere conoscenze sulla libreria/linguaggi di programmazione, ma solo sul protocollo HTTP. Quindi è facile da revisionare, contribuire e riutilizzare.
  • La sicurezza è efficiente quando è facile per gli utenti. Il nostro obiettivo è rendere l'integrazione della libreria il più semplice possibile.
  • Ultraleggero. L'overhead deve essere minimo e non imporre alcun costo tangibile sulla gestione delle richieste (vedi benchmark).

Versioni HTTP supportate

L'obiettivo principale di questa libreria è HTTP/1.1. Vedi test per tutti i casi coperti. I predecessori di HTTP/1.1 non supportano il riutilizzo della connessione, il che limita le opportunità di HTTP Desync, tuttavia alcuni proxy potrebbero aggiornare tali richieste a HTTP/1.1 e riutilizzare le connessioni di backend, il che potrebbe permettere di creare richieste HTTP/1.0 dannose. Ecco perché vengono analizzate utilizzando gli stessi criteri di HTTP/1.1. Per altre versioni del protocollo, ci sono le seguenti eccezioni:

  • Le richieste HTTP/0.9 non sono mai considerate Compliant, ma sono classificate come Accettabili. Se è presente Content-Length/Transfer-Encoding, allora è Ambiguo.
  • HTTP/1.0 - la presenza di Transfer-Encoding rende una richiesta Ambiguo.
  • HTTP/2+ è fuori dall'ambito. Ma se il tuo proxy degrada HTTP/2 a HTTP/1.1, assicurati che la richiesta in uscita sia analizzata.

Vedi documentazione per saperne di più.

Utilizzo da C

Questa libreria è progettata per essere utilizzata principalmente da motori HTTP scritti in C/C++.

  1. Installa cbindgen: cargo install --force cbindgen
  2. Genera il file header:
    • Esegui cbindgen --output http_desync_guardian.h --lang c per C.
    • Esegui cbindgen --output http_desync_guardian.h --lang c++ per C++.
  3. Esegui cargo build --release. I binari si trovano nei file ./target/release/libhttp_desync_guardian.*.

Scopri di più: esempi generico e Nginx.

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

/* 
 * http_engine_request_t - già parsed dal motore 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:
            // La richiesta è buona. via libera
            break;
        case REQUEST_SAFETY_TIER_ACCEPTABLE:
            // Rifiuta, se mode == STRICTEST
            // Altrimenti, OK
            break;
        case REQUEST_SAFETY_TIER_AMBIGUOUS:
            // La richiesta è ambigua.
            // Rifiuta, se mode == STRICTEST 
            // Altrimenti inviala, ma non riutilizzare le connessioni FE/BE.
            break;
        case REQUEST_SAFETY_TIER_SEVERE:
            // Invia 400 e chiudi la connessione FE.
            break;
        default:
            // codice irraggiungibile
            abort();
    }
}

Utilizzo da Rust

Vedi benchmark come esempio di utilizzo da Rust.

Notifiche di problemi di sicurezza

Se scopri un potenziale problema di sicurezza in http_desync_guardian, ti chiediamo di informare AWS Security tramite la nostra pagina di segnalazione delle vulnerabilità. Per favore, non creare un issue pubblico su github.

Sicurezza

Vedi CONTRIBUTING per maggiori informazioni.

Licenza

Questo progetto è concesso in licenza secondo la Apache-2.0 License.

Scarica lo strumento