Skip to content

A ClientHello length intolerance bug#1113

Merged
drwetter merged 2 commits intotestssl:2.9devfrom
dcooper16:clienthello_length_bug
Sep 12, 2018
Merged

A ClientHello length intolerance bug#1113
drwetter merged 2 commits intotestssl:2.9devfrom
dcooper16:clienthello_length_bug

Conversation

@dcooper16
Copy link
Copy Markdown
Collaborator

Just as some servers will fail if the length of the ClientHello is between 256 and 511 bytes (see RFC 7685), it seems that some servers (or a middlebox sitting in front of the servers) will fail if the length of the ClientHello is 522, 778, 1034, ... bytes (i.e., if length mod 256 = 10). I have also encountered one server that will also fail if the length of the ClientHello is 526, 782, 1038, ... bytes (i.e., if length mod 256 = 14).

In the case of that one server, the first ClientHello sent by run_pfs() was exactly 1038 bytes, and so run_pfs() was reporting that the server didn't support any PFS ciphers even though it did.

This PR addresses the problem in two ways. First, it modifies socksend_tls_clienthello() so that if the length of the ClientHello would be more than 511 bytes and length mod 256 would be 10 or 14, it adds a 5-byte padding extension in order to ensure that the final length of the ClientHello will not be a length that could trigger the bug.

Second, this PR adds a test to run_grease() to send ClientHello messages of the exact lengths that do trigger the bug so that users can be made aware that their servers have the problem.

Just as some servers will fail if the length of the ClientHello is between 256 and 511 bytes (see RFC 7685), it seems that some servers (or a middlebox sitting in front of the servers) will fail if the length of the ClientHello is 522, 778, 1034, ... bytes in length (i.e., if length mod 256 = 10). I have also encountered one server that will also fail if the length of the ClientHello is 526, 782, 1038, ... bytes in length (i.e., if length mod 256 = 14).

In the case of that one server, the first ClientHello sent by run_pfs() was exactly 1038 bytes, and so run_pfs() was reporting that the server didn't support any PFS ciphers even though it did..

This PR addresses the problem in two ways. First, it modifies socksend_tls_clienthello() so that if the length of the ClientHello would be more than 511 bytes and length mod 256 would be 10 or 14, it adds a 5-byte padding extension in order to ensure that the final length of the ClientHello will not be a length that could trigger the bug.

Second, this PR adds a test to run_grease() to send ClientHello messages of the exact lengths that do trigger the bug so that users can be made aware that their servers have the problem.
@dcooper16 dcooper16 force-pushed the clienthello_length_bug branch from 9abe30c to 25fef82 Compare September 11, 2018 18:59
@drwetter
Copy link
Copy Markdown
Collaborator

Has anybody else seen such an intolerance

@PeterMosmans @jurajsomorovsky?

@jurajsomorovsky
Copy link
Copy Markdown

@ic0ns recently spotted something similar in the wild. Is it true?

@ic0ns
Copy link
Copy Markdown

ic0ns commented Sep 12, 2018

Not directly like this, but some server only allow a certain number of ciphersuites. Eg. if you propose more than 256 (512 Byte) ciphersuites the server won't answer you.

@dcooper16
Copy link
Copy Markdown
Collaborator Author

Not directly like this, but some server only allow a certain number of ciphersuites. Eg. if you propose more than 256 (512 Byte) ciphersuites the server won't answer you.

Yes, that's a different issue that we already knew about. testssl.sh already checks for that and generally sends 128 or fewer cipher suites in each ClientHello message.

This commit updates the size bug GREASE test in a few ways:

* It removes the changes to socksend_tls_clienthello() - these will be submitted as a separate PR.

* It adds a test for a ClientHello message length of 266 bytes, but only if the server can generally handle messages with lengths between 256 and 511 bytes.

* It corrects the calculation of the length of the padding extension in cases in which a TLS 1 or TLS 1.1 ClientHello is being sent.
@dcooper16
Copy link
Copy Markdown
Collaborator Author

I just submitted a few updates to this PR:

  • I removed the changes to socksend_tls_clienthello() - these will be submitted as a separate PR.

  • I added a test for a ClientHello message length of 266 bytes, but only if the server can generally handle messages with lengths between 256 and 511 bytes.

  • I corrected the calculation of the length of the padding extension in cases in which a TLS 1 or TLS 1.1 ClientHello is being sent.

dcooper16 pushed a commit to dcooper16/testssl.sh that referenced this pull request Sep 12, 2018
As described in testssl#1113, some servers will fail if the length of the ClientHello message is 522, 778, 1034, ... bytes (i.e., if length mod 256 = 10) or 526, 782, 1038, ... bytes (i.e., if length mod 256 = 14). This commit avoid this issue for normal testing by adding a 5-byte padding extension to the message if the length would otherwise be one of these lengths.
@drwetter drwetter merged commit 23df63e into testssl:2.9dev Sep 12, 2018
@drwetter
Copy link
Copy Markdown
Collaborator

Thanks!

@drwetter
Copy link
Copy Markdown
Collaborator

@tomato42 : does this incompatibility (ClientHello 522, 778, 1034 / 526, 782, 1038 -- see above) ring a bell?

@dcooper16 dcooper16 deleted the clienthello_length_bug branch September 12, 2018 15:46
dcooper16 pushed a commit to dcooper16/testssl.sh that referenced this pull request Sep 12, 2018
As described in testssl#1113, some servers will fail if the length of the ClientHello message is 522, 778, 1034, ... bytes (i.e., if length mod 256 = 10) or 526, 782, 1038, ... bytes (i.e., if length mod 256 = 14). This commit avoid this issue for normal testing by adding a 5-byte padding extension to the message if the length would otherwise be one of these lengths.
@tomato42
Copy link
Copy Markdown

@drwetter it does, but very mildly - it might have been some kind of Cisco gear but I'm really not sure about it (one that would reject CH above 512B long)

but in general it looks like there are different implementations with bugs like this, see the size c#/ (count of ciphers in CH) and size c/ (size of the CH in bytes) lines in the last scan I did January 2017

if you have a machine like this on hand, what does the tls_prober say about it?

@drwetter
Copy link
Copy Markdown
Collaborator

drwetter commented Sep 12, 2018

@tomato42 : you mean Cisco ACE? yeah, that was the one with 512B restriction IIRC.

There are couple of servers @dcooper16 mentioned. Most often was 11.4 or 11.5 from F5's BigIP.
If that's true seems a different problem they have.

Shouldn't that cause hiccups elsewhere?

size c# | size c/ match: doesn't look like it but thanks

@tomato42
Copy link
Copy Markdown

tomato42 commented Sep 12, 2018

no, the rejection of 256-511 byte CH was the BigIP, rejection of the 512B CH was something typically not used for serving web, not the ACE – might have been for email...

Shouldn't that cause hiccups elsewhere?

it could, but browsers are usually really careful with changes to their CH and running multiple tests before actually deploying them (even to alpha channels)

size c# | size c/ match: doesn't look like it but thanks

hmm, could be because those values were arrived at with binary search so something regular would require one of the probes hitting it exactly, also IIRC, those probes were run only if the server was intolerant to very big CH (like 130kB big), so if they handled that well, it wouldn't be detected

@PeterMosmans
Copy link
Copy Markdown
Contributor

@drwetter I only know of the Cisco ACE issues with large Client Hellos..

@drwetter
Copy link
Copy Markdown
Collaborator

@tomato42 Yes, I remember very good the old problem. What I meant that it seems that maybe F5 has another padding problem

dcooper16 pushed a commit to dcooper16/testssl.sh that referenced this pull request Sep 14, 2018
As described in testssl#1113, some servers will fail if the length of the ClientHello message is 522, 778, 1034, ... bytes (i.e., if length mod 256 = 10) or 526, 782, 1038, ... bytes (i.e., if length mod 256 = 14). This commit avoid this issue for normal testing by adding a 5-byte padding extension to the message if the length would otherwise be one of these lengths.
dcooper16 pushed a commit to dcooper16/testssl.sh that referenced this pull request Sep 14, 2018
As described in testssl#1113, some servers will fail if the length of the ClientHello message is 522, 778, 1034, ... bytes (i.e., if length mod 256 = 10) or 526, 782, 1038, ... bytes (i.e., if length mod 256 = 14). This commit avoid this issue for normal testing by adding a 5-byte padding extension to the message if the length would otherwise be one of these lengths.
@drwetter
Copy link
Copy Markdown
Collaborator

FYI: It's in fact F5 BigIP. Kudos for @dcooper16 detecting this.

@saravananmk
Copy link
Copy Markdown

FYI: It's in fact F5 BigIP.

@drwetter @dcooper16 The ClientHello length intolerance on F5 BIGIP is due to https://support.f5.com/csp/article/K53322151

@tomato42
Copy link
Copy Markdown

@saravananmk you mean the F5 KB is incomplete? because I don't think the 522B Client Hello would be fragmented...

@drwetter
Copy link
Copy Markdown
Collaborator

I read that different, too

@saravananmk
Copy link
Copy Markdown

@saravananmk because I don't think the 522B Client Hello would be fragmented...

I observed the following (testssl.sh 3.0rc1)

ClientHello length is 266 bytes: TCP seg#1: 5 bytes, seg#2: 266 bytes.
ClientHello length is 522 bytes: TCP seg#1: 5 bytes, seg#2: 522 bytes.
ClientHello length is 778 bytes: TCP seg#1: 5 bytes, seg#2: 778 bytes.
ClientHello length is 1034 bytes: TCP seg#1: 5 bytes, seg#2: 1034 bytes.
ClientHello length is 1290 bytes: TCP seg#1: 5 bytes, seg#2: 1290 bytes.
ClientHello length is 1546 bytes: TCP seg#1: 5 bytes, seg#2: 1448 bytes, seg#3: 98 bytes.
ClientHello length is 1802 bytes: TCP seg#1: 5 bytes, seg#2: 1448 bytes, seg#3: 354 bytes.
ClientHello length is 2058 bytes: TCP seg#1: 5 bytes, seg#2: 1448 bytes, seg#3: 610 bytes.

So I still believe it is that F5 KB (K53322151).

@tomato42
Copy link
Copy Markdown

so the record layer header is sent in a separate TCP segment? that would seem like a bug in testssl.sh... But then if that split is constant it would make testssl.sh unable to scan any F5 hosts suffering from K53322151

@drwetter
Copy link
Copy Markdown
Collaborator

Isn't the TCP fragment size negotiated on a different (not TLS/SSL) layer?

dcooper16 pushed a commit to dcooper16/testssl.sh that referenced this pull request Feb 12, 2019
Some servers will reject a ClientHello if when sent the first TCP fragment is less than 9 bytes. This commit adds a test for that problem by sending ClientHello messages such such short TCP fragments. It tries initial fragments lengths of 5, 6, 7, and 8 bytes, and tries each of these lengths twice, and reports a problem only if the connection fails only every attempt. The reason for the repeated attempts is that some servers will occasionally fail these tests, and the goal is to only report a problem if testssl#1113 would have reported a problem.
dcooper16 pushed a commit to dcooper16/testssl.sh that referenced this pull request Feb 13, 2019
Some servers will reject a ClientHello if when sent the first TCP fragment is less than 9 bytes. This commit adds a test for that problem by sending ClientHello messages such such short TCP fragments. It tries initial fragments lengths of 5, 6, 7, and 8 bytes, and tries each of these lengths twice, and reports a problem only if the connection fails only every attempt. The reason for the repeated attempts is that some servers will occasionally fail these tests, and the goal is to only report a problem if testssl#1113 would have reported a problem.
dcooper16 pushed a commit to dcooper16/testssl.sh that referenced this pull request Feb 13, 2019
Some servers will reject a ClientHello if when sent the first TCP fragment is less than 9 bytes. This commit adds a test for that problem by sending ClientHello messages such such short TCP fragments. It tries initial fragments lengths of 5, 6, 7, and 8 bytes, and tries each of these lengths twice, and reports a problem only if the connection fails only every attempt. The reason for the repeated attempts is that some servers will occasionally fail these tests, and the goal is to only report a problem if testssl#1113 would have reported a problem.
dcooper16 pushed a commit to dcooper16/testssl.sh that referenced this pull request Feb 14, 2019
Some servers will reject a ClientHello if when sent the first TCP fragment is less than 9 bytes. This commit adds a test for that problem by sending ClientHello messages such such short TCP fragments. It tries initial fragments lengths of 5, 6, 7, and 8 bytes, and tries each of these lengths twice, and reports a problem only if the connection fails only every attempt. The reason for the repeated attempts is that some servers will occasionally fail these tests, and the goal is to only report a problem if testssl#1113 would have reported a problem.
dcooper16 pushed a commit to dcooper16/testssl.sh that referenced this pull request Feb 15, 2019
Some servers will reject a ClientHello if when sent the first TCP fragment is less than 9 bytes. This commit adds a test for that problem by sending ClientHello messages such such short TCP fragments. It tries initial fragments lengths of 5, 6, 7, and 8 bytes, and tries each of these lengths twice, and reports a problem only if the connection fails only every attempt. The reason for the repeated attempts is that some servers will occasionally fail these tests, and the goal is to only report a problem if testssl#1113 would have reported a problem.
dcooper16 pushed a commit to dcooper16/testssl.sh that referenced this pull request Feb 25, 2019
Some servers will reject a ClientHello if when sent the first TCP fragment is less than 9 bytes. This commit adds a test for that problem by sending ClientHello messages such such short TCP fragments. It tries initial fragments lengths of 5, 6, 7, and 8 bytes, and tries each of these lengths twice, and reports a problem only if the connection fails only every attempt. The reason for the repeated attempts is that some servers will occasionally fail these tests, and the goal is to only report a problem if testssl#1113 would have reported a problem.
dcooper16 pushed a commit to dcooper16/testssl.sh that referenced this pull request Feb 28, 2019
Some servers will reject a ClientHello if when sent the first TCP fragment is less than 9 bytes. This commit adds a test for that problem by sending ClientHello messages such such short TCP fragments. It tries initial fragments lengths of 5, 6, 7, and 8 bytes, and tries each of these lengths twice, and reports a problem only if the connection fails only every attempt. The reason for the repeated attempts is that some servers will occasionally fail these tests, and the goal is to only report a problem if testssl#1113 would have reported a problem.
dcooper16 pushed a commit to dcooper16/testssl.sh that referenced this pull request Mar 6, 2019
Some servers will reject a ClientHello if when sent the first TCP fragment is less than 9 bytes. This commit adds a test for that problem by sending ClientHello messages such such short TCP fragments. It tries initial fragments lengths of 5, 6, 7, and 8 bytes, and tries each of these lengths twice, and reports a problem only if the connection fails only every attempt. The reason for the repeated attempts is that some servers will occasionally fail these tests, and the goal is to only report a problem if testssl#1113 would have reported a problem.
dcooper16 pushed a commit to dcooper16/testssl.sh that referenced this pull request Mar 6, 2019
Some servers will reject a ClientHello if when sent the first TCP fragment is less than 9 bytes. This commit adds a test for that problem by sending ClientHello messages such such short TCP fragments. It tries initial fragments lengths of 5, 6, 7, and 8 bytes, and tries each of these lengths twice, and reports a problem only if the connection fails only every attempt. The reason for the repeated attempts is that some servers will occasionally fail these tests, and the goal is to only report a problem if testssl#1113 would have reported a problem.
dcooper16 pushed a commit to dcooper16/testssl.sh that referenced this pull request Mar 11, 2019
Some servers will reject a ClientHello if when sent the first TCP fragment is less than 9 bytes. This commit adds a test for that problem by sending ClientHello messages such such short TCP fragments. It tries initial fragments lengths of 5, 6, 7, and 8 bytes, and tries each of these lengths twice, and reports a problem only if the connection fails only every attempt. The reason for the repeated attempts is that some servers will occasionally fail these tests, and the goal is to only report a problem if testssl#1113 would have reported a problem.
dcooper16 pushed a commit to dcooper16/testssl.sh that referenced this pull request Mar 18, 2019
Some servers will reject a ClientHello if when sent the first TCP fragment is less than 9 bytes. This commit adds a test for that problem by sending ClientHello messages such such short TCP fragments. It tries initial fragments lengths of 5, 6, 7, and 8 bytes, and tries each of these lengths twice, and reports a problem only if the connection fails only every attempt. The reason for the repeated attempts is that some servers will occasionally fail these tests, and the goal is to only report a problem if testssl#1113 would have reported a problem.
dcooper16 pushed a commit to dcooper16/testssl.sh that referenced this pull request Mar 25, 2019
Some servers will reject a ClientHello if when sent the first TCP fragment is less than 9 bytes. This commit adds a test for that problem by sending ClientHello messages such such short TCP fragments. It tries initial fragments lengths of 5, 6, 7, and 8 bytes, and tries each of these lengths twice, and reports a problem only if the connection fails only every attempt. The reason for the repeated attempts is that some servers will occasionally fail these tests, and the goal is to only report a problem if testssl#1113 would have reported a problem.
dcooper16 pushed a commit to dcooper16/testssl.sh that referenced this pull request Mar 29, 2019
Some servers will reject a ClientHello if when sent the first TCP fragment is less than 9 bytes. This commit adds a test for that problem by sending ClientHello messages such such short TCP fragments. It tries initial fragments lengths of 5, 6, 7, and 8 bytes, and tries each of these lengths twice, and reports a problem only if the connection fails only every attempt. The reason for the repeated attempts is that some servers will occasionally fail these tests, and the goal is to only report a problem if testssl#1113 would have reported a problem.
dcooper16 pushed a commit to dcooper16/testssl.sh that referenced this pull request Apr 1, 2019
Some servers will reject a ClientHello if when sent the first TCP fragment is less than 9 bytes. This commit adds a test for that problem by sending ClientHello messages such such short TCP fragments. It tries initial fragments lengths of 5, 6, 7, and 8 bytes, and tries each of these lengths twice, and reports a problem only if the connection fails only every attempt. The reason for the repeated attempts is that some servers will occasionally fail these tests, and the goal is to only report a problem if testssl#1113 would have reported a problem.
dcooper16 pushed a commit to dcooper16/testssl.sh that referenced this pull request Apr 1, 2019
Some servers will reject a ClientHello if when sent the first TCP fragment is less than 9 bytes. This commit adds a test for that problem by sending ClientHello messages such such short TCP fragments. It tries initial fragments lengths of 5, 6, 7, and 8 bytes, and tries each of these lengths twice, and reports a problem only if the connection fails only every attempt. The reason for the repeated attempts is that some servers will occasionally fail these tests, and the goal is to only report a problem if testssl#1113 would have reported a problem.
dcooper16 pushed a commit to dcooper16/testssl.sh that referenced this pull request Apr 9, 2019
Some servers will reject a ClientHello if when sent the first TCP fragment is less than 9 bytes. This commit adds a test for that problem by sending ClientHello messages such such short TCP fragments. It tries initial fragments lengths of 5, 6, 7, and 8 bytes, and tries each of these lengths twice, and reports a problem only if the connection fails only every attempt. The reason for the repeated attempts is that some servers will occasionally fail these tests, and the goal is to only report a problem if testssl#1113 would have reported a problem.
dcooper16 pushed a commit to dcooper16/testssl.sh that referenced this pull request Apr 11, 2019
Some servers will reject a ClientHello if when sent the first TCP fragment is less than 9 bytes. This commit adds a test for that problem by sending ClientHello messages such such short TCP fragments. It tries initial fragments lengths of 5, 6, 7, and 8 bytes, and tries each of these lengths twice, and reports a problem only if the connection fails only every attempt. The reason for the repeated attempts is that some servers will occasionally fail these tests, and the goal is to only report a problem if testssl#1113 would have reported a problem.
dcooper16 pushed a commit to dcooper16/testssl.sh that referenced this pull request Apr 11, 2019
Some servers will reject a ClientHello if when sent the first TCP fragment is less than 9 bytes. This commit adds a test for that problem by sending ClientHello messages such such short TCP fragments. It tries initial fragments lengths of 5, 6, 7, and 8 bytes, and tries each of these lengths twice, and reports a problem only if the connection fails only every attempt. The reason for the repeated attempts is that some servers will occasionally fail these tests, and the goal is to only report a problem if testssl#1113 would have reported a problem.
dcooper16 pushed a commit to dcooper16/testssl.sh that referenced this pull request Apr 15, 2019
Some servers will reject a ClientHello if when sent the first TCP fragment is less than 9 bytes. This commit adds a test for that problem by sending ClientHello messages such such short TCP fragments. It tries initial fragments lengths of 5, 6, 7, and 8 bytes, and tries each of these lengths twice, and reports a problem only if the connection fails only every attempt. The reason for the repeated attempts is that some servers will occasionally fail these tests, and the goal is to only report a problem if testssl#1113 would have reported a problem.
dcooper16 pushed a commit to dcooper16/testssl.sh that referenced this pull request Apr 24, 2019
Some servers will reject a ClientHello if when sent the first TCP fragment is less than 9 bytes. This commit adds a test for that problem by sending ClientHello messages such such short TCP fragments. It tries initial fragments lengths of 5, 6, 7, and 8 bytes, and tries each of these lengths twice, and reports a problem only if the connection fails only every attempt. The reason for the repeated attempts is that some servers will occasionally fail these tests, and the goal is to only report a problem if testssl#1113 would have reported a problem.
dcooper16 pushed a commit to dcooper16/testssl.sh that referenced this pull request Apr 25, 2019
Some servers will reject a ClientHello if when sent the first TCP fragment is less than 9 bytes. This commit adds a test for that problem by sending ClientHello messages such such short TCP fragments. It tries initial fragments lengths of 5, 6, 7, and 8 bytes, and tries each of these lengths twice, and reports a problem only if the connection fails only every attempt. The reason for the repeated attempts is that some servers will occasionally fail these tests, and the goal is to only report a problem if testssl#1113 would have reported a problem.
dcooper16 pushed a commit to dcooper16/testssl.sh that referenced this pull request Apr 25, 2019
Some servers will reject a ClientHello if when sent the first TCP fragment is less than 9 bytes. This commit adds a test for that problem by sending ClientHello messages such such short TCP fragments. It tries initial fragments lengths of 5, 6, 7, and 8 bytes, and tries each of these lengths twice, and reports a problem only if the connection fails only every attempt. The reason for the repeated attempts is that some servers will occasionally fail these tests, and the goal is to only report a problem if testssl#1113 would have reported a problem.
dcooper16 pushed a commit to dcooper16/testssl.sh that referenced this pull request May 1, 2019
Some servers will reject a ClientHello if when sent the first TCP fragment is less than 9 bytes. This commit adds a test for that problem by sending ClientHello messages such such short TCP fragments. It tries initial fragments lengths of 5, 6, 7, and 8 bytes, and tries each of these lengths twice, and reports a problem only if the connection fails only every attempt. The reason for the repeated attempts is that some servers will occasionally fail these tests, and the goal is to only report a problem if testssl#1113 would have reported a problem.
dcooper16 pushed a commit to dcooper16/testssl.sh that referenced this pull request May 6, 2019
Some servers will reject a ClientHello if when sent the first TCP fragment is less than 9 bytes. This commit adds a test for that problem by sending ClientHello messages such such short TCP fragments. It tries initial fragments lengths of 5, 6, 7, and 8 bytes, and tries each of these lengths twice, and reports a problem only if the connection fails only every attempt. The reason for the repeated attempts is that some servers will occasionally fail these tests, and the goal is to only report a problem if testssl#1113 would have reported a problem.
dcooper16 pushed a commit to dcooper16/testssl.sh that referenced this pull request May 16, 2019
Some servers will reject a ClientHello if when sent the first TCP fragment is less than 9 bytes. This commit adds a test for that problem by sending ClientHello messages such such short TCP fragments. It tries initial fragments lengths of 5, 6, 7, and 8 bytes, and tries each of these lengths twice, and reports a problem only if the connection fails only every attempt. The reason for the repeated attempts is that some servers will occasionally fail these tests, and the goal is to only report a problem if testssl#1113 would have reported a problem.
dcooper16 pushed a commit to dcooper16/testssl.sh that referenced this pull request May 23, 2019
Some servers will reject a ClientHello if when sent the first TCP fragment is less than 9 bytes. This commit adds a test for that problem by sending ClientHello messages such such short TCP fragments. It tries initial fragments lengths of 5, 6, 7, and 8 bytes, and tries each of these lengths twice, and reports a problem only if the connection fails only every attempt. The reason for the repeated attempts is that some servers will occasionally fail these tests, and the goal is to only report a problem if testssl#1113 would have reported a problem.
dcooper16 pushed a commit to dcooper16/testssl.sh that referenced this pull request Jun 7, 2019
Some servers will reject a ClientHello if when sent the first TCP fragment is less than 9 bytes. This commit adds a test for that problem by sending ClientHello messages such such short TCP fragments. It tries initial fragments lengths of 5, 6, 7, and 8 bytes, and tries each of these lengths twice, and reports a problem only if the connection fails only every attempt. The reason for the repeated attempts is that some servers will occasionally fail these tests, and the goal is to only report a problem if testssl#1113 would have reported a problem.
dcooper16 pushed a commit to dcooper16/testssl.sh that referenced this pull request Jun 12, 2019
Some servers will reject a ClientHello if when sent the first TCP fragment is less than 9 bytes. This commit adds a test for that problem by sending ClientHello messages such such short TCP fragments. It tries initial fragments lengths of 5, 6, 7, and 8 bytes, and tries each of these lengths twice, and reports a problem only if the connection fails only every attempt. The reason for the repeated attempts is that some servers will occasionally fail these tests, and the goal is to only report a problem if testssl#1113 would have reported a problem.
dcooper16 pushed a commit to dcooper16/testssl.sh that referenced this pull request Jun 12, 2019
Some servers will reject a ClientHello if when sent the first TCP fragment is less than 9 bytes. This commit adds a test for that problem by sending ClientHello messages such such short TCP fragments. It tries initial fragments lengths of 5, 6, 7, and 8 bytes, and tries each of these lengths twice, and reports a problem only if the connection fails only every attempt. The reason for the repeated attempts is that some servers will occasionally fail these tests, and the goal is to only report a problem if testssl#1113 would have reported a problem.
dcooper16 pushed a commit to dcooper16/testssl.sh that referenced this pull request Jun 24, 2019
Some servers will reject a ClientHello if when sent the first TCP fragment is less than 9 bytes. This commit adds a test for that problem by sending ClientHello messages such such short TCP fragments. It tries initial fragments lengths of 5, 6, 7, and 8 bytes, and tries each of these lengths twice, and reports a problem only if the connection fails only every attempt. The reason for the repeated attempts is that some servers will occasionally fail these tests, and the goal is to only report a problem if testssl#1113 would have reported a problem.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants