Skip to content

Commit cbaa813

Browse files
committed
Merge branch '3.2' into diffing_openssls
2 parents ba58458 + d115b2e commit cbaa813

12 files changed

Lines changed: 199 additions & 163 deletions

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
* Improved compatibility with Open/LibreSSL versions not supporting TLS 1.0-1.1 anymore
1313
* Renamed PFS/perfect forward secrecy --> FS/forward secrecy
1414
* Cipher list straightening
15+
* Support RFC 9150 cipher suites
1516
* Improved mass testing
1617
* Better align colors of ciphers with standard cipherlists
1718
* Save a few cycles for ROBOT
@@ -23,13 +24,16 @@
2324
* Test for STARTTLS injection vulnerabilities (SMTP, POP3, IMAP)
2425
* STARTTLS: XMPP server support, plus new set of OpenSSL-bad binaries
2526
* Several code improvements to STARTTLS, also better detection when no STARTTLS is offered
27+
* Renegotiation checks more reliable against different servers
2628
* STARTTLS on active directory service support
2729
* Security fixes: DNS and other input from servers
2830
* Don't penalize missing trust in rating when CA not in Java store
2931
* Added support for certificates with EdDSA signatures and public keys
3032
* Extract CA list shows supported certification authorities sent by the server
33+
* Wildcard certificates: detection and warning
3134
* TLS 1.2 and TLS 1.3 sig algs added
3235
* Check for ffdhe groups
36+
* Check for three KEMs in draft-kwiatkowski-tls-ecdhe-mlkem/draft-tls-westerbaan-xyber768d00
3337
* Show server supported signature algorithms
3438
* --add-ca can also now be a directory with \*.pem files
3539
* Warning of 398 day limit for certificates issued after 2020/9/1
@@ -41,6 +45,7 @@
4145
* DNS via proxy improvements
4246
* Client simulation runs in wide mode which is even better readable
4347
* Added --reqheader to support custom headers in HTTP requests
48+
* Search for more HTTP security headers on the server
4449
* Test for support for RFC 8879 certificate compression
4550
* Deprecating --fast and --ssl-native (warning but still av)
4651
* Compatible to GNU grep 3.8

CONTRIBUTING.md

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,25 @@
11

2-
### Contributions / participation
2+
### Contributing / participating
33

4-
is always welcome, here @ github or via e-mail.
4+
Contributing / participating is always welcome!
55

6-
Note please the following
6+
Please note the following:
77

8-
* Please read at least the [coding convention](https://github.com/testssl/testssl.sh/Coding_Convention.md).
9-
* One PR per feature or bug fix or improvement. Please do not mix issues.
10-
* Document your PR, both in the PR and/or commit message and in the code.
8+
* Please read the [coding convention](https://github.com/testssl/testssl.sh/blob/3.2/Coding_Convention.md).
9+
* If you have something new and/or bigger which you like to contribute, better open an issue first before you get frustrated.
10+
* Please one pull request per feature or bug fix or improvement. Please do not mix issues.
11+
* Documentation pays off in the long run. So please your document your code and the pull request and/or commit message.
1112
* Please test your changes thoroughly as reliability is important for this project. You may want to check different servers with different settings.
12-
* Travis runs automatically when anything is committed/PR'd. You should check any complains from Travis. Beforehand you can check with `prove -v`.
13-
* If it's a new feature please consider writing a unit test for it. You can use e.g. `t/20_baseline_ipv4_http.t` as a template. The general documentation for [Test::More](https://perldoc.perl.org/Test/More.html) is a good start.
14-
* If it's a new feature it would need to be documented in the appropriate section in `help()` and in `~/doc/testssl.1.md`
13+
* GitHub actions are running automatically when anything is committed. You should see any complains. Beforehand you can check with `prove -v` from the "root dir" of this project.
14+
* If it's a new feature, please consider writing a unit test for it. You can use e.g. `t/10_baseline_ipv4_http.t` or `t/61_diff_testsslsh.t` as a template. The general documentation for [Test::More](https://perldoc.perl.org/Test/More.html) is a good start.
15+
* If it's a new feature, it would need to be documented in the appropriate section in `help()` and in `~/doc/testssl.1.md`
1516

16-
For questions just open an issue or feel free to send me an e-mail.
17+
If you're interested in contributing and wonder how you can help, you can search for different tags in the issues (somewhat increasing degree of difficulty):
18+
* [documentation](https://github.com/testssl/testssl.sh/issues?q=is:issue%20state:open%20label:documentation)
19+
* [good first issue](https://github.com/testssl/testssl.sh/issues?q=is:issue%20state:open%20label:%22good%20first%20issue%22)
20+
* [help wanted](https://github.com/testssl/testssl.sh/issues?q=is:issue%20state:open%20label:%22help%20wanted%22)
21+
* [for grabs](https://github.com/testssl/testssl.sh/issues?q=is:issue%20state:open%20label:%22good%20first%20issue%22)
22+
23+
For questions just open an issue. Thanks for reading this!
1724

18-
#### Patches via e-mail
1925

20-
Of course it is fine when you want to send in patches to use e-mail. For the address please grep for SWCONTACT in testssl.sh .
21-
Let me know how you like them to be attributed.

bin/Readme.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ for some new / advanced cipher suites and/or features which are not in the
1010
official branch like (old version of the) CHACHA20+POLY1305 and CAMELLIA 256 bit ciphers.
1111

1212
The (stripped) binaries this directory are all compiled from my openssl snapshot
13-
(https://github.com/drwetter/openssl-1.0.2.bad) which adds a few bits to Peter
13+
(https://github.com/testssl/openssl-1.0.2.bad) which adds a few bits to Peter
1414
Mosman's openssl fork (https://github.com/PeterMosmans/openssl). Thx a bunch, Peter!
1515
The few bits are IPv6 support (except IPV6 proxy) and some STARTTLS backports.
1616

@@ -71,11 +71,11 @@ Compilation instructions
7171
If you want to compile OpenSSL yourself, here are the instructions:
7272

7373
1.)
74-
git git clone https://github.com/drwetter/openssl-1.0.2-bad
74+
git git clone https://github.com/testssl/openssl-1.0.2-bad
7575
cd openssl
7676

7777

78-
2.) configure the damned thing. Options I used (see https://github.com/drwetter/testssl.sh/blob/master/utils/make-openssl.sh)
78+
2.) configure the damned thing. Options I used (see https://github.com/testssl/testssl.sh/blob/master/utils/make-openssl.sh)
7979

8080
**for 64Bit including Kerberos ciphers:**
8181

doc/testssl.1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -607,4 +607,4 @@ All native Windows platforms emulating Linux are known to be slow\.
607607
.SH "BUGS"
608608
Probably\. Current known ones and interface for filing new ones: https://testssl\.sh/bugs/ \.
609609
.SH "SEE ALSO"
610-
\fBciphers\fR(1), \fBopenssl\fR(1), \fBs_client\fR(1), \fBx509\fR(1), \fBverify\fR(1), \fBocsp\fR(1), \fBcrl\fR(1), \fBbash\fR(1) and the websites https://testssl\.sh/ and https://github\.com/drwetter/testssl\.sh/ \.
610+
\fBciphers\fR(1), \fBopenssl\fR(1), \fBs_client\fR(1), \fBx509\fR(1), \fBverify\fR(1), \fBocsp\fR(1), \fBcrl\fR(1), \fBbash\fR(1) and the websites https://testssl\.sh/ and https://github\.com/testssl/testssl\.sh/ \.

doc/testssl.1.html

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

doc/testssl.1.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -587,4 +587,4 @@ Probably. Current known ones and interface for filing new ones: https://testssl.
587587

588588
## SEE ALSO
589589

590-
`ciphers`(1), `openssl`(1), `s_client`(1), `x509`(1), `verify`(1), `ocsp`(1), `crl`(1), `bash`(1) and the websites https://testssl.sh/ and https://github.com/drwetter/testssl.sh/ .
590+
`ciphers`(1), `openssl`(1), `s_client`(1), `x509`(1), `verify`(1), `ocsp`(1), `crl`(1), `bash`(1) and the websites https://testssl.sh/ and https://github.com/testssl/testssl.sh/ .

etc/tls_data.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
# data we need for socket based handshakes
33
# see #807 and #806 (especially
4-
# https://github.com/drwetter/testssl.sh/issues/806#issuecomment-318686374)
4+
# https://github.com/testssl/testssl.sh/issues/806#issuecomment-318686374)
55

66
# 7 ciphers defined for TLS 1.3 in RFCs 8446 and 9150
77
readonly TLS13_CIPHER="

t/11_baseline_ipv6_http.t.DISABLED

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/usr/bin/env perl
22

3-
# disabled as IPv6 is not supported by Travis, see https://github.com/drwetter/testssl.sh/issues/1177
3+
# disabled as IPv6 wasn't supported by Travis CI and isn't by GH action, see https://github.com/testssl/testssl.sh/issues/1177
44

55
# Just a functional test, whether there are any problems on the client side
66
# Probably we could also inspect the JSON for any problems for

t/61_diff_testsslsh.t

Lines changed: 26 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,10 @@
33
# Baseline diff test against testssl.sh (csv output)
44
#
55
# We don't use a full run yet and only the certificate section.
6-
# There we would need to blacklist at least:
6+
# There we would need to blacklist more, like:
77
# cert_serialNumber, cert_fingerprintSHA1, cert_fingerprintSHA256, cert
88
# cert_expirationStatus, cert_notBefore, cert_notAfter, cert_caIssuers, intermediate_cert
99
#
10-
# help is appreciated here
1110

1211
use strict;
1312
use Test::More;
@@ -16,55 +15,54 @@ use Text::Diff;
1615

1716
my $tests = 0;
1817
my $prg="./testssl.sh";
19-
my $master_socket_csv="./t/baseline_data/default_testssl.csvfile";
20-
my $socket_csv="tmp.csv";
21-
my $check2run="-p -s -P --fs -h -U -c -q --ip=one --color 0 --csvfile $socket_csv";
22-
#my $check2run="-p --color 0 --csvfile $socket_csv";
18+
my $baseline_csv="./t/baseline_data/default_testssl.csvfile";
19+
my $cat_csv="tmp.csv";
20+
my $check2run="-p -s -P --fs -h -U -c -q --ip=one --color 0 --csvfile $cat_csv";
2321
my $uri="testssl.sh";
2422
my $diff="";
2523

2624
die "Unable to open $prg" unless -f $prg;
27-
die "Unable to open $master_socket_csv" unless -f $master_socket_csv;
28-
25+
die "Unable to open $baseline_csv" unless -f $baseline_csv;
2926

3027
# Provide proper start conditions
31-
unlink "tmp.csv";
28+
unlink $cat_csv;
3229

33-
# Title
34-
printf "\n%s\n", "Diff unit test IPv4 against \"$uri\"";
30+
my @args=("$prg", "$check2run", "$uri", "2>&1");
3531

3632
#1 run
37-
`$prg $check2run $uri 2>&1`;
38-
39-
$diff = diff $socket_csv, $master_socket_csv;
33+
printf "\n%s\n", "Diff unit test (IPv4) against \"$uri\"";
34+
printf "@args\n";
35+
system("@args") == 0
36+
or die ("FAILED: \"@args\" ");
4037

41-
$socket_csv=`cat tmp.csv`;
42-
$master_socket_csv=`cat $master_socket_csv`;
38+
$cat_csv=`cat $cat_csv`;
39+
$baseline_csv=`cat $baseline_csv`;
4340

4441
# Filter for changes that are allowed to occur
45-
$socket_csv=~ s/HTTP_clock_skew.*\n//g;
46-
$master_socket_csv=~ s/HTTP_clock_skew.*\n//g;
42+
$cat_csv =~ s/HTTP_clock_skew.*\n//g;
43+
$baseline_csv =~ s/HTTP_clock_skew.*\n//g;
44+
45+
# HTTP time
46+
$cat_csv =~ s/HTTP_headerTime.*\n//g;
47+
$baseline_csv =~ s/HTTP_headerTime.*\n//g;
4748

4849
# DROWN
49-
$socket_csv=~ s/censys.io.*\n//g;
50-
$master_socket_csv=~ s/censys.io.*\n//g;
50+
$cat_csv =~ s/censys.io.*\n//g;
51+
$baseline_csv =~ s/censys.io.*\n//g;
5152

52-
# HTTP time
53-
$socket_csv=~ s/HTTP_headerTime.*\n//g;
54-
$master_socket_csv=~ s/HTTP_headerTime.*\n//g;
53+
$diff = diff \$cat_csv, \$baseline_csv;
5554

56-
# Compare the differences to the master file -- and print differences if there were detected.
55+
# Compare the differences to the baseline file -- and print differences if there were detected.
5756
#
58-
cmp_ok($socket_csv, "eq", $master_socket_csv, "Check whether CSV output matches master file from $uri") or
57+
ok($cat_csv eq $baseline_csv, "Check whether CSV output matches baseline file from $uri") or
5958
diag ("\n%s\n", "$diff");
6059

61-
$tests++;
62-
6360
unlink "tmp.csv";
6461

62+
$tests++;
6563
done_testing($tests);
6664
printf "\n";
6765

6866

69-
# vim:ts=5:sw=5:expandtab
67+
# vim:ts=5:sw=5:expandtab
7068

t/baseline_data/default_testssl.csvfile

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@
7070
"FS_TLS13_sig_algs","testssl.sh/81.169.166.184","443","INFO","RSA-PSS-RSAE+SHA256 RSA-PSS-RSAE+SHA384 RSA-PSS-RSAE+SHA512","",""
7171
"HTTP_status_code","testssl.sh/81.169.166.184","443","INFO","200 OK ('/')","",""
7272
"HTTP_clock_skew","testssl.sh/81.169.166.184","443","INFO","0 seconds from localtime","",""
73-
"HTTP_headerTime","testssl.sh/81.169.166.184","443","INFO","1654006271","",""
73+
"HTTP_headerTime","testssl.sh/81.169.166.184","443","INFO","1737570310","",""
7474
"HSTS_time","testssl.sh/81.169.166.184","443","OK","362 days (=31337000 seconds) > 15552000 seconds","",""
7575
"HSTS_subdomains","testssl.sh/81.169.166.184","443","INFO","only for this domain","",""
7676
"HSTS_preload","testssl.sh/81.169.166.184","443","INFO","domain is NOT marked for preloading","",""
@@ -81,6 +81,8 @@
8181
"X-Frame-Options","testssl.sh/81.169.166.184","443","OK","DENY","",""
8282
"X-Content-Type-Options","testssl.sh/81.169.166.184","443","OK","nosniff","",""
8383
"Content-Security-Policy","testssl.sh/81.169.166.184","443","OK","script-src 'unsafe-inline'; style-src 'unsafe-inline' 'self'; object-src 'self'; base-uri 'none'; form-action 'none'; img-src 'self' ; default-src 'self'; frame-ancestors 'self'; upgrade-insecure-requests;","",""
84+
"Cross-Origin-Opener-Policy","testssl.sh/81.169.166.184","443","INFO","same-origin-allow-popups","",""
85+
"Cross-Origin-Resource-Policy","testssl.sh/81.169.166.184","443","INFO","same-site","",""
8486
"banner_reverseproxy","testssl.sh/81.169.166.184","443","INFO","--","","CWE-200"
8587
"heartbleed","testssl.sh/81.169.166.184","443","OK","not vulnerable, no heartbeat extension","CVE-2014-0160","CWE-119"
8688
"CCS","testssl.sh/81.169.166.184","443","OK","not vulnerable","CVE-2014-0224","CWE-310"
@@ -95,7 +97,7 @@
9597
"SWEET32","testssl.sh/81.169.166.184","443","OK","not vulnerable","CVE-2016-2183 CVE-2016-6329","CWE-327"
9698
"FREAK","testssl.sh/81.169.166.184","443","OK","not vulnerable","CVE-2015-0204","CWE-310"
9799
"DROWN","testssl.sh/81.169.166.184","443","OK","not vulnerable on this host and port","CVE-2016-0800 CVE-2016-0703","CWE-310"
98-
"DROWN_hint","testssl.sh/81.169.166.184","443","INFO","Make sure you don't use this certificate elsewhere with SSLv2 enabled services, see https://search.censys.io/search?resource=hosts&virtual_hosts=INCLUDE&q=31B44391529821C6A77F3C78B02D716A07F99B8FDB342BF5A78F263C25375968","CVE-2016-0800 CVE-2016-0703","CWE-310"
100+
"DROWN_hint","testssl.sh/81.169.166.184","443","INFO","Make sure you don't use this certificate elsewhere with SSLv2 enabled services, see https://search.censys.io/search?resource=hosts&virtual_hosts=INCLUDE&q=5B4BC205947AED96ECB1879F2668F7F69D696C143BA8D1C69DBB4DC873C92AE9","CVE-2016-0800 CVE-2016-0703","CWE-310"
99101
"LOGJAM","testssl.sh/81.169.166.184","443","OK","not vulnerable, no DH EXPORT ciphers,","CVE-2015-4000","CWE-310"
100102
"LOGJAM-common_primes","testssl.sh/81.169.166.184","443","OK","--","CVE-2015-4000","CWE-310"
101103
"BEAST_CBC_TLS1","testssl.sh/81.169.166.184","443","MEDIUM","ECDHE-RSA-AES256-SHA ECDHE-RSA-AES128-SHA DHE-RSA-CAMELLIA256-SHA DHE-RSA-CAMELLIA128-SHA DHE-RSA-AES256-SHA DHE-RSA-AES128-SHA AES256-SHA","CVE-2011-3389","CWE-20"

0 commit comments

Comments
 (0)