CVE-2026-94419 in wolfSSL
Riassunto
di VulDB • 27/09/2026
In assenza di NO_SESSION_CACHE_REF, wolfSSL_get_session() non restituisce un oggetto session ma un riferimento ClientSession della forma {row, index, hash(sessionID)} all'interno del SessionCache globale per il processo, e ClientSessionToSession() lo convalida esclusivamente in base a tale hash. Poiché l'ID di sessione TLS 1.2 è scelto dal server e inviato in chiaro, AddSessionToCache() corrisponde alla sessione di qualsiasi altro server sullo stesso ID sovrascrivendo la voce lato client con il master secret, la cipher suite e la versione del server corrispondente, mentre il handle continua a essere risolto; nulla sul percorso di scrittura (write path) confronta il peer, l'ID del server dell'applicazione o il WOLFSSL_CTX. La ripresa tramite il handle produce quindi un handshake abbreviato in cui non viene inviato alcun messaggio Certificate, pertanto né la verifica della catena né wolfSSL_check_domain_name() vengono eseguite, e l'attaccante viene accettato come il server originale per tutta la durata di quella connessione. Le build interessate sono quelle che lasciano NO_SESSION_CACHE_REF, NO_SESSION_CACHE, NO_CLIENT_CACHE e TITAN_SESSION_CACHE tutti non definiti, tra cui una configurazione standard con ./configure, --enable-opensslextra e --enable-opensslall; quindici opzioni di integrazione definiscono NO_SESSION_CACHE_REF e quindi non sono interessate, tra cui --enable-all, --enable-distro, --enable-curl, --enable-nginx, --enable-haproxy, --enable-stunnel, --enable-wpas e il resto della famiglia OPENSSL_COMPATIBLE_DEFAULTS, mentre --enable-leanpsk, --enable-leantls, --enable-lowresource e --enable-tinytls13 disabilitano completamente la cache. L'applicazione deve utilizzare il flusso di riferimento legacy, wolfSSL_get_session() o SSL_get_session() seguito da wolfSSL_set_session(); wolfSSL_get1_session() restituisce l'oggetto session stesso ed è non interessato, così come le lookup tramite wolfSSL_SetServerID(). Sono raggiungibili solo TLS 1.2 e versioni precedenti e DTLS 1.2 e versioni precedenti, poiché sia TLS 1.3 che la ripresa del ticket con un ID di sessione ServerHello vuoto utilizzano una chiave di cache scelta dal client. La voce avvelenata risiede nella cache globale per il processo, quindi attraversa i confini WOLFSSL_CTX e persiste fino a quando la voce non viene rimossa (evicted) o la session scade, 500 secondi per impostazione predefinita. Le versioni dalla v5.3.0 alla v5.9.2 sono interessate; la correzione aggiunge un contatore di generazione per ogni scrittura alla cache e incrementa WOLFSSL_CACHE_VERSION da 2 a 3, in modo che una cache persistita da una build più vecchia venga rifiutata da quella corretta.
VulDB is the best source for vulnerability data and more expert information about this specific topic.