Bug 1673975

Summary: gnutls does not support multiple KeyUpdate messages on a connection
Product: Red Hat Enterprise Linux 8 Reporter: Alicja Kario <hkario>
Component: gnutlsAssignee: Daiki Ueno <dueno>
Status: CLOSED ERRATA QA Contact: Tomas Mraz <tmraz>
Severity: high Docs Contact:
Priority: high    
Version: 8.0CC: ansasaki, dueno, omoris, tmraz
Target Milestone: rcKeywords: Triaged
Target Release: 8.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: gnutls-3.6.8-4.el8 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2019-11-05 22: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:
Bug Depends On: 1682477, 1689967    
Bug Blocks:    

Description Alicja Kario 2019-02-08 16:01:38 UTC
Description of problem:
When gnutls receives multiple (e.g. 32) KeyUpdate messages on a connection, it closes the connection

Version-Release number of selected component (if applicable):
gnutls-3.6.5-2.el8.x86_64

How reproducible:
always

Steps to Reproduce:
1. run test-tls13-keyupdate.py from tlsfuzzer
2.
3.

Actual results:
multiple KeyUpdate messages ...
Error encountered while processing node <tlsfuzzer.messages.KeyUpdateGenerator object at 0x7f7534ebc828> (child: <tlsfuzzer.messages.KeyUpdateGenerator object at 0x7f7534ebc860>) with last message being: <tlslite.messages.KeyUpdate object at 0x7f753299f518>
Error while processing
Traceback (most recent call last):
  File "/root/tlsfuzzer/tlsfuzzer/runner.py", line 234, in run
    self.state.msg_sock.sendMessageBlocking(msg)
  File "/root/tlsfuzzer/tlslite/messagesocket.py", line 186, in sendMessageBlocking
    for _ in self.sendMessage(msg):
  File "/root/tlsfuzzer/tlslite/messagesocket.py", line 181, in sendMessage
    for res in self.flush():
  File "/root/tlsfuzzer/tlslite/messagesocket.py", line 121, in flush
    for res in self.sendRecord(msg):
  File "/root/tlsfuzzer/tlslite/recordlayer.py", line 630, in sendRecord
    for result in self._recordSocket.send(encryptedMessage, padding):
  File "/root/tlsfuzzer/tlslite/recordlayer.py", line 103, in send
    for result in self._sockSendAll(data):
  File "/root/tlsfuzzer/tlslite/recordlayer.py", line 69, in _sockSendAll
    bytesSent = self.sock.send(data)
  File "/root/tlsfuzzer/tlslite/bufferedsocket.py", line 34, in send
    return self.socket.send(data)
BrokenPipeError: [Errno 32] Broken pipe

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "scripts/test-tls13-keyupdate.py", line 575, in main
    runner.run()
  File "/root/tlsfuzzer/tlsfuzzer/runner.py", line 248, in run
    raise AssertionError("Unexpected closure from peer")
AssertionError: Unexpected closure from peer


Expected results:
OK

Additional info:

Comment 14 errata-xmlrpc 2019-11-05 22:26:14 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/RHSA-2019:3600