ssl_preread è una funzionalità di NGINX Stream che ispeziona il TLS ClientHello prima che la connessione venga gestita completamente. Può leggere dettagli dell'handshake come la server name indication (SNI) e altri metadati iniziali senza terminare il TLS in sé. Questo consente a un proxy di prendere decisioni di instradamento prima di decrittografare il traffico.
Questo è importante perché l'analisi precoce della connessione è codice critico per la sicurezza: elabora byte controllati dall'attaccante molto presto nella sessione. Nelle implementazioni reali, ssl_preread viene usato per il routing TLS passthrough, l'hosting virtuale e la segmentazione del traffico. Chi difende i sistemi lo apprezza per il bilanciamento del carico flessibile, ma aumenta anche la superficie di attacco quando viene combinato con variabili, espressioni regolari o logiche di configurazione complesse. Se l'analisi o la gestione dei buffer sono difettose, dati ClientHello malformati possono causare crash o peggio. Per questo motivo, i sistemi che usano ssl_preread dovrebbero essere mantenuti aggiornati con patch e testati con le regole di routing esatte che usano in produzione.


