CVE-2026-94419 in wolfSSL
Resumen
por VulDB • 2026-09-27
Sin NO_SESSION_CACHE_REF, wolfSSL_get_session() no devuelve un objeto de sesión, sino una referencia ClientSession con la forma {row, index, hash(sessionID)} en el SessionCache global del proceso, y ClientSessionToSession() lo valida únicamente contra ese hash. Dado que el ID de sesión TLS 1.2 es elegido por el servidor y enviado en texto claro, AddSessionToCache() coincide con cualquier otra sesión de otro servidor en el mismo ID y sobrescribe la entrada del lado cliente con la clave maestra, la suite de cifrado y la versión de ese servidor, mientras que el handle sigue resolviéndose; nada en la ruta de escritura compara al par, el ID de servidor de la aplicación o WOLFSSL_CTX. La reanudación a través del handle produce un handshake abreviado en el que no se envía ningún mensaje Certificate, por lo que ni la verificación de cadena ni wolfSSL_check_domain_name() se ejecutan, y el atacante es aceptado como el servidor original durante toda esa conexión. Las compilaciones afectadas son aquellas donde NO_SESSION_CACHE_REF, NO_SESSION_CACHE, NO_CLIENT_CACHE y TITAN_SESSION_CACHE permanecen sin definir, lo que incluye una configuración estándar con ./configure, --enable-opensslextra y --enable-opensslall; quince opciones de integración definen NO_SESSION_CACHE_REF y por tanto no están afectadas, entre ellas --enable-all, --enable-distro, --enable-curl, --enable-nginx, --enable-haproxy, --enable-stunnel, --enable-wpas y el resto del grupo OPENSSL_COMPATIBLE_DEFAULTS; además, --enable-leanpsk, --enable-leantls, --enable-lowresource y --enable-tinytls13 desactivan la caché por completo. La aplicación debe utilizar el flujo de referencia heredado: wolfSSL_get_session() o SSL_get_session() seguido de wolfSSL_set_session(); wolfSSL_get1_session() devuelve el propio objeto de sesión y no está afectado, al igual que las búsquedas mediante wolfSSL_SetServerID(). Solo TLS 1.2 e inferiores y DTLS 1.2 e inferiores son vulnerables, ya que TLS 1.3 y la reanudación con ticket utilizando un ID de SessionHello vacío emplean una clave de caché elegida por el cliente. La entrada envenenada reside en la caché global del proceso, por lo que cruza los límites WOLFSSL_CTX y persiste hasta que la entrada sea eliminada o expire la sesión (500 segundos por defecto). Las versiones v5.3.0 a v5.9.2 están afectadas; el parche añade un contador de generación por escritura en la caché e incrementa WOLFSSL_CACHE_VERSION de 2 a 3, de modo que una caché persistida por una compilación anterior es rechazada por una versión corregida.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.