Commit Graph

2881 Commits

Author SHA1 Message Date
Dirk
094c61caea Change banner back to 3.3dev 2026-02-13 14:25:58 +01:00
Dirk
c895a5c268 Add "dev" to the version banner to clarify
And modify the banner accordingly depending on whether it's a
snapshot release or not.
2026-02-13 11:18:13 +01:00
Dirk
c600b2cb38 Prepare for a snapshot release
- "3.3" still signals it's not oldstable
- "snapshot-YYMM" speaks for itself
2026-02-12 23:15:07 +01:00
Dirk
98d3c8399f Fix typo in ROBOT_TIMEOUT
... which may led to false positives

Also in a number of tests the timeout was re-adjusted so that the robot check
performs ~25% faster -- on MacOS. On Linux it's about the same.
2026-02-11 19:00:38 +01:00
Dirk
496373a60f Finalize renaming MAX_WAITSOCK --> ROBOT_TIMEOUT
The commit 51a35b0344 changed variable names but there were leftovers. Also
before the tiemout values were reduced, so that the check may run faster. What was left were that some
timeout values were still too long. Thus MAX_WAITSOCK is now completely changed to ROBOT_TIMEOUT .
Also when the ROBOT check identified something as potentially vulnerable, the timeout value ist increased to
8 seconds which is less than in 3.2 . Tests however showed so far that there were no false positives or
negatives.

Moreover it changes the local variable robottimeout to robot_timeout.

This PR fixes #2983 for 3.3dev .
2026-01-22 19:57:32 +01:00
Dirk
52ffa95696 Flag absence of extended master secret extension
This PR fixes #2806 and implements a feature request. TLS >=1.2 MUST support
support the extended_master_secret extension to address an attack resulting
from TLS session parameters not being properly authenticated in a Triple
Handshake scanario (https://ieeexplore.ieee.org/document/6956559).

Only if the extension is missing there will be a medium severity level
finding. JSON output will be generated in any case.

Also in determine_tls_extensions() some documenation about tls extensions
to be send were added.
2026-01-14 20:22:59 +01:00
Dirk
cf77cd2ad4 fix spelling 2026-01-13 17:33:33 +01:00
Dirk
3e10b3a9a2 Remove VULN_THRESHLD relic
This fixes #2973.

There was a while back an extra headline when one or a defined other
number of vulnerabilities were checked. The extra headline was removed
n #2967 but some leftover code needed to be removed as well.

In the aforementioned previous PR it seems run_starttls_injection()
and run_rc4() were forgotten. This PR removes extra headlines in
those functions as well.
2026-01-13 17:24:27 +01:00
Dirk
45b27872c9 fix typo 2026-01-12 21:22:45 +01:00
Dirk
d360b27b83 Suggest alternative $OPENSSL2 when $OPENSSL fails
.. as an UI improvement for the user.

Implemented for Ticketbleed and during startup in determine_optimal_proto() .
For the latter it could be considered later to automagically pick $OPENSSL2 .
2026-01-12 21:07:15 +01:00
Dirk Wetter
6cd5b4364c Merge branch '3.3dev' into mitigate_2083 2025-12-15 13:13:50 +01:00
Dirk Wetter
81f25a6674 Mitigate inconsistent test results for ROBOT
As reported a longer while back in #2083 there were trailing bytes
when receiving a TLS alert by the ROBOT check.

This PR corrects and thus normalizes the length of the TLS alert message to the
correct value, supposed the length in the TLS alart is two bytes and it is an
TLS alert.

Also this PR now uses a separate variable for the timeout. In 2ce0110e the timeout
was changed by mistake as MAX_WAITSOCK was reduced from 10 to 5. For this check it
is still 5 which seemed fine (TBC). Using a separate global variable however may offer
some possibility for tuning the check when the latency to the target is high.
2025-12-15 12:52:41 +01:00
Dirk Wetter
51a35b0344 ROBOT is also a vulnerability
We missed somehow to add in the big while loop to add the fact that
ROBOT is a vulnerability which become apparent with #2967.

This PR adds that.
2025-12-15 11:44:42 +01:00
Dirk Wetter
26e90d44c3 Remove underlined headline for each vulnerability
This PR removes this legacy feature. There's a single
headline for vulnerabilties instead.

Fixes #2943.
2025-12-14 21:24:30 +01:00
Dirk Wetter
3430bd97d2 Merge pull request #2965 from testssl/fix_2944
Add missing LF after pwnkeys DB check
2025-12-14 21:03:51 +01:00
Dirk Wetter
eeb8e7dbf1 Add missing LF after pwnkeys DB check
This fixes #2940 .
2025-12-14 17:43:44 +01:00
David
2b93c9e6bb Fix #2959
This commit fixes #2959 by modifying TLS12_CIPHER, TLS12_CIPHER_2ND_TRY, and TLS12_CIPHER_3RD_TRY so that they each have 118 ciphers (including "00,ff"). It also modifies run_cipherlists(), run_server_defaults(), and run_beast() so that, when $SERVER_SIZE_LIMIT_BUG is true, no more than 125 ciphers are sent.
2025-12-11 08:00:32 -08:00
Dirk Wetter
03f43ecd68 Label missing KEMs as LOW severity 2025-12-09 10:15:50 +01:00
Dirk
ece7bce138 Merge branch '3.3dev' into fix_early_data_empty 2025-11-29 20:55:56 +01:00
Dirk Wetter
d648a0851d Fix error when early data empty
This PR fixes an error when early data was empty
which caused testssl.sh to exit instead of marking
that there was no file returned.

Also it changes HEAD to GET as the latter is probably
more often supported.

There needs to be a unit test for 0-RTT / early data!
2025-11-28 01:46:16 +01:00
Dirk Wetter
fc499cb67f Akamai keeps connection open (opossum check problem) 2025-11-27 18:21:26 +01:00
Dirk Wetter
7423aa8add Merge pull request #2951 from testssl/fixAndImprove_opossum_check_2950
Fix and improve Opossum check
2025-11-21 15:11:07 +01:00
Dirk
76824b5762 Fix and improve Opossum
Under some circumstances the opossum vulnerability check got stuck
because the cat commdn was waiting for reading from the descriptor.
In some case like #2950 this happened when the HTTP head command
was incorrectly send in the first place.

This PR makes sure that the HTTP head is correct and it replaces
cat by read in a loop so that the HTTP response is read without
being blocked.

Also for http_head_printf() the argumensats passed were cleaned up.
2025-11-19 20:55:20 +01:00
Andreas Landgraf
91caad69c5 Improve regex for private key check in mTLS 2025-11-17 08:26:15 +01:00
Andreas Landgraf
7c62ae5d2e Add support for EC private key in mTLS check 2025-11-13 16:57:11 +01:00
Magnus Larsen
640444e1fc feat: --rating-only flag to only test checks required for rating 2025-11-12 11:14:16 +01:00
Dirk Wetter
2fcd01c693 fix FP 2025-11-10 12:15:58 +01:00
Dirk
da8a6f2f34 Fix pattern for matching /etc/hosts entries
`grep -w` matches also `string1-whatsoever` so that entries like

```
192.168.0.10 anystring anystring-apache
192.168.0.11 anystring-tomcat
```

matched 3 entries over 2 lines.

This PR fixes #2937 by improving the match pattern, so that
`string1` needs a trailing whitespace or a EOL -- besides a
leaing whitespace.
2025-11-03 22:30:26 +01:00
Dirk
da436e7d87 Fix date parsing bc of locale problem
The new block making sure that rust coreutils work properly (PR #2913)
introduced a new check in order to determine which date functions
to use.

The function however parsed only for English error messages ("No such file").
This PR fixes that by setting LC_ALL to C.

Fixes #2929 .
2025-10-30 13:30:08 +01:00
Dirk Wetter
ce820cdaf5 Update "sneaky" user agent
fixes #2926 for 3.3dev.
2025-10-28 10:26:06 +01:00
Dirk Wetter
c53e7a3955 Fix more shellcheck complaints (high severity)
... and fine tune some comments in the beginning
2025-10-13 21:06:02 +02:00
Dirk Wetter
672493ebe7 Fix check for /bin/sh 2025-10-11 18:59:51 +02:00
Dirk Wetter
7090d5fbdd Saving everything before commit/push is supposed to be better ;-) 2025-10-11 18:00:48 +02:00
Dirk Wetter
8392a4aed5 Squash some shellcheck *errors*
and some warnings.

Five errors of type [SC2145](https://www.shellcheck.net/wiki/SC2145) are left as I am not sure whether
it'll be safe to follow the recommendation
2025-10-11 13:19:28 +02:00
Dirk Wetter
df100d986b Merge pull request #2913 from testssl/fix_2909
Fix date for Ubuntu >= 25.10
2025-10-09 20:30:15 +02:00
Dirk Wetter
accd1f20cd Rearrange order of date checks
works for all "older" Linux systems, MacOS, OpenBSD and according to #teki69
also Ubuntu 25.10 .
2025-10-08 23:26:48 +02:00
Dirk Wetter
36bc08ce18 Fix date for Ubuntu >= 25.10
works for
- ubuntu 24.04
- Debian 13
- openbsd 6.6 / 7.x
- macos 15.7.1

Fixes #2909
2025-10-07 23:23:09 +02:00
Dirk Wetter
e0401b6207 TLS 1.3 early data / 0-RTT
This PR implements a check for TLS early data. It needs a compatible OpenSSL or
LibreSSL version. For modern OS versionis it should automagically pick the right,
modern binary for the check.

Mitigations like Defer processing or HTTP 425 are not yet tested.

To clarify is
* whether to penalize SSLlabs rating (@magnuslarsen). testssl.net has it
   enabled but the Web UI claims it's not a/v, see
  https://www.ssllabs.com/ssltest/analyze.html?d=testssl.net&s=172.67.205.231&hideResults=on&latest
* Man pages

To be in line with other HAS2_* global vars (HAS2_QUIC, HAS2_UDS), the following
vars were renamed from their OPENSSL2_HAS_* counter parts:

- HAS2_TLS13
- HAS2_CHACHA20=false
- HAS2_AES128_GCM=false
- HAS2_AES256_GCM=false
2025-10-06 17:03:56 +02:00
Dirk Wetter
ffa1ffdbb3 fix syntax 2025-10-05 20:16:39 +02:00
Dirk Wetter
5b0b771c52 Define vars for early data
It seems needed to introduce two variables for upcoming early data tests,
see #1186. This is not needed for OpenSSL as it introduced that
together with TLS 1.3. For LibreSSL it is though.
2025-10-05 18:19:41 +02:00
Dirk Wetter
637ad03a36 Merge pull request #2904 from testssl/jdvorak001-fix_file_naming
Jdvorak001 fix file naming
2025-09-30 17:31:33 +02:00
Dirk
78ecf53b67 Consistency for function ciphers_by_strength()
* keys now always with v, like supportedciphers_TLSv1_2 and also
  ciphers (e.g. TLSv1.2   x35     AES256-SHA)
* add word "server" to file output so that it reads "NOT a server cipher order configured"

Fixes #2884
2025-09-30 14:30:52 +02:00
Dirk
123684f554 make spellchecker and myself happy ;-) 2025-09-30 13:58:28 +02:00
Dirk
e8ab2c74e6 straighten global definitions in the very bottom 2025-09-30 13:56:25 +02:00
Dirk
1d6ddfb352 rename datetime_started
.. to fname_date as it's more consitent with fname_prefix
2025-09-30 13:35:08 +02:00
Jan Dvorak
e0009cf0cb Adapt variable naming (datetime_started now) 2025-09-26 12:18:44 +02:00
Jan Dvorak
67aba03a41 Use common datetime part when naming output files across all formats
- the datetime is fetched just once
- it is then passed to the functions that start the output files, always as arg1
2025-09-25 23:26:33 +02:00
David Cooper
41db430c46 Fix #2896
This commit fixes #2896. This commit avoids modifying the ADDTL_CA_FILES environment variable, and instead substitutes spaces for commas whenever the variable is used.
2025-09-21 13:23:55 -07:00
Dirk Wetter
75feb05a0c Fix indentation @ Intermediate cert validity
... when there were two server and >1 intermediate CA certificates.
2025-09-16 13:03:48 +02:00
Dirk
ef82cd37be fix typo 2025-09-15 16:00:53 +02:00