Bug 1386347

Summary: OpenSSL incorrectly handles TLS_FALLBACK_SCSV if it is at the beginning of the cipher list in Client Hello [rhel-7]
Product: Red Hat Enterprise Linux 7 Reporter: Hubert Kario <hkario>
Component: opensslAssignee: Tomas Mraz <tmraz>
Status: CLOSED ERRATA QA Contact: Stefan Dordevic <sdordevi>
Severity: low Docs Contact:
Priority: low    
Version: 7.3CC: mgrepl, mpoole, sdordevi, szidek
Target Milestone: rcKeywords: Reopened
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of:
: 1386350 (view as bug list) Environment:
Last Closed: 2017-08-01 18:16:10 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:
Bug Depends On:    
Bug Blocks: 1386350, 1420851    

Description Hubert Kario 2016-10-18 17:52:40 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-60.el7.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:
...

Test end
successful: 25
failed: 0


Additional info:
Issue already fixed in upstream 1.0.1 branch

Comment 1 Tomas Mraz 2017-04-03 14:30:56 UTC

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

Comment 5 errata-xmlrpc 2017-08-01 18:16:10 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://access.redhat.com/errata/RHBA-2017:1929