L’ispezione con stato è una tecnica utilizzata nei firewall di rete di computer per proteggere una rete da accessi non autorizzati. A volte noto anche come filtraggio dinamico, il metodo è in grado di ispezionare un intero pacchetto di dati prima che entri nella rete. In questo modo, ogni pacchetto che entra in qualsiasi interfaccia sul firewall viene completamente controllato per verificarne la validità rispetto ai tipi di connessioni che possono passare dall’altra parte. Il processo prende il nome perché non solo ispeziona i pacchetti di dati, ma controlla anche lo stato di una connessione che è stata stabilita e consentita attraverso il firewall.
L’idea dell’ispezione stateful è stata ideata per la prima volta dal software Check Point®, a metà degli anni ‘1990. Prima del software del motore di Check Point® Firewall-1 INSPECT™, i firewall monitoravano il livello dell’applicazione, nella parte superiore del modello di interconnessione dei sistemi aperti (OSI). Questo tendeva a essere molto oneroso per il processore di un computer, quindi l’ispezione dei pacchetti si spostava dai livelli del modello OSI al terzo livello, il livello di rete. L’ispezione anticipata dei pacchetti controllava solo le informazioni di intestazione, l’indirizzamento e il protocollo dei pacchetti e non aveva modo di distinguere lo stato del pacchetto, ad esempio se si trattava di una nuova richiesta di connessione.
In un firewall Stateful Inspection, il metodo di filtraggio dei pacchetti veloce e rispettoso delle risorse si fonde in qualche modo con le informazioni più dettagliate dell’applicazione. Ciò fornisce un po’ di contesto al pacchetto, fornendo così più informazioni da cui basare le decisioni di sicurezza. Per memorizzare tutte queste informazioni, il firewall deve stabilire una tabella, che definisce quindi lo stato della connessione. I dettagli di ogni connessione, comprese le informazioni sull’indirizzo, le porte e i protocolli, nonché le informazioni sulla sequenza dei pacchetti, vengono quindi archiviati nella tabella. L’unico momento in cui le risorse vengono messe a dura prova è durante l’ingresso iniziale nella tabella di stato; dopodiché, ogni altro pacchetto confrontato con quello stato utilizza pochissime risorse di elaborazione.
Il processo di ispezione con stato inizia quando il primo pacchetto che richiede una connessione viene catturato e ispezionato. Il pacchetto viene confrontato con le regole del firewall, dove viene confrontato con una serie di possibili parametri di autorizzazione personalizzabili all’infinito per supportare software, servizi e protocolli precedentemente sconosciuti o ancora da sviluppare. Il pacchetto catturato inizializza l’handshake e il firewall invia una risposta all’utente richiedente confermando una connessione. Ora che la tabella è stata popolata con le informazioni sullo stato della connessione, il pacchetto successivo dal client viene confrontato con lo stato della connessione. Ciò continua fino a quando la connessione scade o viene terminata e la tabella viene cancellata dalle informazioni sullo stato per quella connessione.
Ciò comporta uno dei problemi affrontati dal firewall di ispezione con stato, l’attacco denial of service. Con questo tipo di attacco la sicurezza non viene compromessa in quanto il firewall viene bombardato da numerosi pacchetti iniziali che richiedono una connessione, costringendo la tabella di stato a riempirsi di richieste. Una volta piena, la tabella di stato non può più accettare alcuna richiesta e quindi tutte le altre richieste di connessione vengono bloccate. Un altro metodo di attacco contro un firewall stateful sfrutta le regole del firewall per bloccare il traffico in entrata, ma consentire il traffico in uscita. Un utente malintenzionato può indurre un host sul lato sicuro del firewall a richiedere connessioni dall’esterno, aprendo efficacemente tutti i servizi sull’host per l’utilizzo da parte dell’attaccante.