FS#68357 - [nss] TLS Handshake fails in Pidgin with nss 3.58
Attached to Project:
Arch Linux
Opened by Iru Dog (mytbk) - Wednesday, 21 October 2020, 05:46 GMT
Last edited by Jan Alexander Steffens (heftig) - Monday, 02 November 2020, 15:42 GMT
Opened by Iru Dog (mytbk) - Wednesday, 21 October 2020, 05:46 GMT
Last edited by Jan Alexander Steffens (heftig) - Monday, 02 November 2020, 15:42 GMT
|
Details
Description:
Pidgin fails to do a TLS handshake in IRC and XMPP connections. The debug windows says nss handshake failure. After downgrade to nss 3.57, Pidgin works fine again. Additional info: * package: nss 3.58-1, pidgin 2.14.1-3 |
This task depends upon
Closed by Jan Alexander Steffens (heftig)
Monday, 02 November 2020, 15:42 GMT
Reason for closing: Fixed
Additional comments about closing: nss 3.58-2
Monday, 02 November 2020, 15:42 GMT
Reason for closing: Fixed
Additional comments about closing: nss 3.58-2
nss: Handshake failed (-12251)
...
NSS and SSL Error Codes:
SSL_ERROR_RX_MALFORMED_CHANGE_CIPHER -12251 "SSL received a malformed Change Cipher Spec record."
another workaround is to limit the TLS/SSL Version to TLS 1.2.
You can do this with the Pidgin Plugin 'NSS Preferences' (nss-prefs.so).
The error is thrown at this point, nss-3.58/nss/lib/ssl/ssl3con.c:
13064 ...... if (ss->version >= SSL_LIBRARY_VERSION_TLS_1_3 &&
13065 .......... cText->hdr[0] == ssl_ct_change_cipher_spec &&
13066 .......... ss->ssl3.hs.ws != idle_handshake &&
13067 .......... cText->buf->len == 1 &&
13068 .......... cText->buf->buf[0] == change_cipher_spec_choice) {
13069 .......... if (ss->ssl3.hs.allowCcs) {
13070 .............. /* Ignore the first CCS. */
13071 .............. ss->ssl3.hs.allowCcs = PR_FALSE;
13072 ............. return SECSuccess;
13073 .......... }
13074
13075 .......... /* Compatibility mode is not negotiated. */
13076 .......... alert = unexpected_message;
13077 .......... PORT_SetError(SSL_ERROR_RX_MALFORMED_CHANGE_CIPHER);
13078 ...... }
But I'm not deep enough into NSS and SSL to know exactly what is causing the problem.
```
g_object_unref: assertion 'G_IS_OBJECT (object)' failed
rc_update_cookies: assertion 'headers != NULL' failed
g_strstr_len: assertion 'haystack != NULL' failed
```
Downgrading NSS solved those problems
[1] https://github.com/nss-dev/nss/commit/e10a362f69191506e73bfa31778da45f4c5df482
Edit:
Does applying the attached patch have any effect?
By the way -> https://bugzilla.mozilla.org/show_bug.cgi?id=1672703
They are working on a patch for NSS (3.58.1).
It seems that Firefox also uses SSL_ENABLE_TLS13_COMPAT_MODE,
so a patch for Pidgin would also be advisable.
chatted with the admin of jabber.de to search for the cause,
he tested same pidgin / libpurple versions on some different
distro, which worked for him. Also I tested jabber chat with
thunderbird on my affected computer - works (so its not router,
firewall, whatever)
[1] https://bugzilla.mozilla.org/show_bug.cgi?id=1672703#c10
Edit:
Sorry missed deadite66 had already confirmed it.