Bug 1204404

Summary: Flaws in the disabling of SSL2 may break future versions of Firefox
Product: Red Hat Enterprise Linux 7 Reporter: Elio Maldonado Batiz <emaldona>
Component: nssAssignee: Elio Maldonado Batiz <emaldona>
Status: CLOSED DUPLICATE QA Contact: BaseOS QE Security Team <qe-baseos-security>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 7.2CC: hkario, kengert, ksrot, nkinder, rrelyea, stransky
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: nss-3.18.0-1.el7 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2015-09-02 19:26:14 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Elio Maldonado Batiz 2015-03-21 17:51:43 UTC
Description of problem: Flaws in the method for disabling SSL2 will likely render future version Firefox unusable.

Bug 1001841 was cloned as Bug 1189952 for Fedora to do the same work there.
While testing, I found that Firefox stopped working. 

Kai Engert's description and diagnosis of the problem can be found on https://bugzilla.redhat.com/show_bug.cgi?id=1189952#c11
which I copy here:

Kai Engert (:kaie) 2015-02-18 13:27:20 EST
Elio said, he ran into an issue with Firefox on Fedora.

The NSS changes that disable SSL2 caused Firefox to break completely.
No web pages could be loaded.

The Firefox error console indicated that several services couldn't be created (a sort of internal failure).

I found that Firefox calls NSS_SetDomesticPolicy(), which is NSS code that iterates over all the ciphers, and enables each of them.

However, the suggested change to NSS returns an error, as soon as an attempt is made to enable SSL 2 ciphers. This causes NSS to return a failure, which is forwarded to the application, which concludes that NSS failed to initialize.

Because NSS_SetDomesticPolicy() is an NSS internal function, it should be adjusted to not fail (or not trying to enable SSL 2 ciphers at all).

However, looking at the function SSL_CipherPolicySet() which your patch changes, a different strategy might be better.

SSL_CipherPolicySet() has code which says:
  If the cipher is one that has been removed, then don't enable it,
  and return success.

You could do the same for the SSL 2 ciphers.

However, an even better idea comes to mind:

Please consider to change the existing function ssl_IsRemovedCipherSuite()
to include the SSL 2 ciphers you are disabling.

Then you wouldn't need to change function SSL_CipherPolicySet() at all.

Comment 1 Elio Maldonado Batiz 2015-03-21 17:52:28 UTC
Another problem found is that though SSL2 was disabled the export cipher suites weren't. We need to bring those fixes back to RHEL-7.

Comment 3 Bob Relyea 2015-03-23 18:28:09 UTC
Hmm why weren't we seeing this in RHEL 7? Lots of things call NSS_SetDomesticPolicy().

Are we not failing when we try to set SSL2 in RHEL7 (which may be what I recommended to have minimal impact to applications).

bob

Comment 4 Elio Maldonado Batiz 2015-04-07 18:54:39 UTC
Bug 1123435 and this one are closely related. Fixes applied as part of work for rebasing nss to 3.18 for Firefox 38 ESR - Bug 1200898.

Comment 6 Elio Maldonado Batiz 2015-08-18 17:03:49 UTC
Since then fix has evolved and this bug should be closed as duplicate of Bug 1123435 which has a more comprehensive fix.

Comment 7 Nathan Kinder 2015-09-02 19:26:14 UTC

*** This bug has been marked as a duplicate of bug 1123435 ***