Bug 1386350

Summary: OpenSSL incorrectly handles TLS_FALLBACK_SCSV if it is at the beginning of the cipher list in Client Hello [rhel-6]
Product: Red Hat Enterprise Linux 6 Reporter: Alicja Kario <hkario>
Component: opensslAssignee: Tomas Mraz <tmraz>
Status: CLOSED ERRATA QA Contact: Stanislav Zidek <szidek>
Severity: medium Docs Contact:
Priority: medium    
Version: 6.8CC: bressers, cww, mpoole, pbajenez, qe-baseos-security, szidek, tmraz
Target Milestone: rcKeywords: Reopened
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: openssl-1.0.1e-54.el6 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: 1386347 Environment:
Last Closed: 2017-03-21 10:14:00 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:
Bug Depends On: 1276310, 1386347    
Bug Blocks: 1269194    

Description Alicja Kario 2016-10-18 17:56:13 UTC
Description of problem:
When Client Hello with TLSv1.2 version and TLS_FALLBACK_SCSV at first or second position is received by the server, the server rejects the connection with a a handshake_failure alert.

Version-Release number of selected component (if applicable):
openssl-1.0.1e-48.el6.x86_64

How reproducible:
Always

Steps to Reproduce:
  openssl req -x509 -newkey rsa:2048 -keyout localhost.key -out localhost.crt -subj /CN=localhost -nodes -batch
  openssl s_server -key localhost.key -cert localhost.crt -www

In different console:
  git clone https://github.com/tomato42/tlsfuzzer.git
  pushd tlsfuzzer
  git clone https://github.com/tomato42/tlslite-ng.git .tlslite-ng
  ln -s .tlslite-ng/tlslite tlslite
  git clone https://github.com/warner/python-ecdsa.git .python-ecdsa
  ln -s .python-ecdsa/ecdsa ecdsa
  PYTHONPATH=. python scripts/test-fallback-scsv.py

Actual results:
...
FALLBACK - record TLSv1.2 hello TLSv1.2 - pos 1 ...
Error encountered while processing node <tlsfuzzer.expect.ExpectServerHello object at 0x7efc7ff18b50> (child: <tlsfuzzer.expect.ExpectCertificate object at 0x7efc7ff18b90>) with last message being: <tlslite.messages.Message object at 0x7efc7fec9750>
Error while processing
Traceback (most recent call last):
  File "scripts/test-fallback-scsv.py", line 342, in main
    runner.run()
  File "/home/hkario/dev/tlsfuzzer/tlsfuzzer/runner.py", line 166, in run
    RecordHeader2)))
AssertionError: Unexpected message from peer: Alert(fatal, handshake_failure)
...
Test end
successful: 17
failed: 8
  'FALLBACK - hello SSL3.4 - pos 0'
  'FALLBACK - hello SSL3.4 - pos 1'
  'FALLBACK - hello TLSv1.2 - pos 0'
  'FALLBACK - hello TLSv1.2 - pos 1'
  'FALLBACK - record SSL3.4 hello SSL3.4 - pos 0'
  'FALLBACK - record SSL3.4 hello SSL3.4 - pos 1'
  'FALLBACK - record TLSv1.2 hello TLSv1.2 - pos 0'
  'FALLBACK - record TLSv1.2 hello TLSv1.2 - pos 1'

Expected results:
...
FALLBACK - record TLSv1.2 hello TLSv1.2 - pos 1 ...
OK
...

Test end
successful: 25
failed: 0


Additional info:
Issue already fixed in upstream 1.0.1 branch

Comment 13 RHEL Program Management 2016-10-26 15:47:48 UTC
Product Management has reviewed and declined this request.
You may appeal this decision by reopening this request.

Comment 19 errata-xmlrpc 2017-03-21 10:14:00 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://rhn.redhat.com/errata/RHBA-2017-0660.html