Skip to content

Commit 0db6f79

Browse files
berrangeFabiano Rosas
authored andcommitted
crypto: add tracing & warning about GNUTLS countermeasures
We want some visibility on stderr when the GNUTLS thread safety countermeasures are activated, to encourage people to get the real fix deployed (once it exists). Some trace points will also help if we see any further wierd crash scenario we've not anticipated. Reviewed-by: Daniel P. Berrangé <[email protected]> Signed-off-by: Daniel P. Berrangé <[email protected]> Reviewed-by: Fabiano Rosas <[email protected]> Link: https://lore.kernel.org/qemu-devel/[email protected] [add missing include] Signed-off-by: Fabiano Rosas <[email protected]>
1 parent eb3618e commit 0db6f79

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

crypto/tlssession.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
*/
2020

2121
#include "qemu/osdep.h"
22+
#include "qemu/error-report.h"
2223
#include "qemu/thread.h"
2324
#include "crypto/tlssession.h"
2425
#include "crypto/tlscredsanon.h"
@@ -615,10 +616,20 @@ qcrypto_tls_session_handshake(QCryptoTLSSession *session,
615616
* only have to protect against automatic rekeying
616617
* which doesn't trigger with CHACHA20
617618
*/
619+
trace_qcrypto_tls_session_parameters(
620+
session,
621+
session->requireThreadSafety,
622+
gnutls_protocol_get_version(session->handle),
623+
cipher);
624+
618625
if (session->requireThreadSafety &&
619626
gnutls_protocol_get_version(session->handle) ==
620627
GNUTLS_TLS1_3 &&
621628
cipher != GNUTLS_CIPHER_CHACHA20_POLY1305) {
629+
warn_report("WARNING: activating thread safety countermeasures "
630+
"for potentially broken GNUTLS with TLS1.3 cipher=%d",
631+
cipher);
632+
trace_qcrypto_tls_session_bug1717_workaround(session);
622633
session->lockEnabled = true;
623634
}
624635
#endif

crypto/trace-events

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ qcrypto_tls_creds_x509_load_cert_list(void *creds, const char *file) "TLS creds
2121
# tlssession.c
2222
qcrypto_tls_session_new(void *session, void *creds, const char *hostname, const char *authzid, int endpoint) "TLS session new session=%p creds=%p hostname=%s authzid=%s endpoint=%d"
2323
qcrypto_tls_session_check_creds(void *session, const char *status) "TLS session check creds session=%p status=%s"
24+
qcrypto_tls_session_parameters(void *session, int threadSafety, int protocol, int cipher) "TLS session parameters session=%p threadSafety=%d protocol=%d cipher=%d"
25+
qcrypto_tls_session_bug1717_workaround(void *session) "TLS session bug1717 workaround session=%p"
2426

2527
# tls-cipher-suites.c
2628
qcrypto_tls_cipher_suite_priority(const char *name) "priority: %s"

0 commit comments

Comments
 (0)