CVE-2026-94419 in wolfSSL
요약
\~에 의해 VulDB • 2026. 09. 27.
NO_SESSION_CACHE_REF가 설정되지 않은 경우, wolfSSL_get_session()은 세션 객체를 반환하지 않고 프로세스 전역의 SessionCache에 대한 {row, index, hash(sessionID)} 형태의 ClientSession 참조를 반환하며, ClientSessionToSession()는 이를 해당 해시만으로 검증합니다. TLS 1.2에서 세션 ID는 서버가 선택하여 평문으로 전송되므로, AddSessionToCache()는 동일한 ID의 다른 서버 세션과 일치하여 클라이언트 측 엔트리를 해당 서버의 마스터 시크릿, 암호 스위트 및 버전으로 덮어씁니다. 반면 핸들은 계속 해결(resolve)되며, 쓰기 경로(write path)에는 피어(peer), 애플리케이션의 서버 ID 또는 WOLFSSL_CTX를 비교하는 항목이 없습니다. 따라서 핸들을 통해 재개하면 인증서 메시지가 전송되지 않는 축약된 핸드셰이크가 발생하므로 체인 검증이나 wolfSSL_check_domain_name() 실행이 이루어지지 않으며, 공격자가 해당 연결 전체에 걸쳐 원래 서버로 인정됩니다.
영향을 받는 빌드는 NO_SESSION_CACHE_REF, NO_SESSION_CACHE, NO_CLIENT_CACHE 및 TITAN_SESSION_CACHE가 모두 정의되지 않은 경우이며, 여기에는 기본 ./configure, --enable-opensslextra 및 --enable-opensslall이 포함됩니다. 반면 15개의 통합 옵션은 NO_SESSION_CACHE_REF를 정의하므로 영향을 받지 않으며, 그 중에는 --enable-all, --enable-distro, --enable-curl, --enable-nginx, --enable-haproxy, --enable-stunnel, --enable-wpas 및 OPENSSL_COMPATIBLE_DEFAULTS 계열의 나머지 옵션이 포함됩니다. 또한 --enable-leanpsk, --enable-leantls, --enable-lowresource 및 --enable-tinytls13는 캐시를 아예 비활성화합니다. 애플리케이션은 레거시 참조 흐름(wolfSSL_get_session() 또는 SSL_get_session()에 이어 wolfSSL_set_session())을 사용해야 합니다. wolfSSL_get1_session()은 세션 객체 자체를 반환하므로 영향을 받지 않으며, wolfSSL_SetServerID() 조회도 영향을 받지 않습니다. TLS 1.3과 빈 ServerHello 세션 ID를 사용한 티켓 재개는 모두 클라이언트 선택 캐시 키를 사용하므로, 이 취약점은 TLS 1.2 이하 및 DTLS 1.2 이하에서만 공격 가능합니다.
오염된 엔트리는 프로세스 전역 캐시에 존재하므로 WOLFSSL_CTX 경계를 넘어 지속되며, 엔트가 제거되거나 세션이 만료될 때까지(기본값은 500초) 유지됩니다. v5.3.0부터 v5.9.2까지의 릴리스가 영향을 받습니다. 수정 버전은 캐시에 쓰기별 생성 카운터(per-write generation counter)를 추가하고 WOLFSSL_CACHE_VERSION을 2에서 3으로 상향 조정하여, 이전 빌드에 의해 지속된 캐시가 고정된 빌드에서 거부되도록 합니다.
Once again VulDB remains the best source for vulnerability data.