Missing SNI/ALPN binding on stateful (session-ID) resumption, which previously skipped the binding check performed for ticket-based resumption. A cached session could be resumed under a different SNI/ALPN than originally negotiated and, where client-authentication policy differs across virtual hosts, carry the cached peer-authentication state into a context it was not established for. Resumption now verifies the SNI/ALPN binding for all paths and declines (falling back to a full handshake) on mismatch.
In the OpenSSL compatibility layer implementation, the function RANDpoll() was not behaving as expected and leading to the potential for predictable values returned from RANDbytes() after fork() is called. This can lead to weak or predictable random numbers generated in applications that are both using RANDbytes() and doing fork() operations. This only affects applications explicitly calling RANDbytes() after fork() and does not affect any internal TLS operations. Although RANDbytes() documentation in OpenSSL calls out not being safe for use with fork() without first calling RANDpoll(), an additional code change was also made in wolfSSL to make RANDbytes() behave similar to OpenSSL after a fork() call without calling RANDpoll(). Now the Hash-DRBG used gets reseeded after detecting running in a new process. If making use of RANDbytes() and calling fork() we recommend updating to the latest version of wolfSSL. Thanks to Per Allansson from Appgate for the report.