Commit Graph
100 Commits
Author SHA1 Message Date
Dirk Wetter ce820cdaf5 Update "sneaky" user agent
fixes #2926 for 3.3dev.
2025-10-28 10:26:06 +01:00
Dirk WetterandGitHub 08ed5521a9 Merge pull request #2922 from testssl/shellcheck1
Squash some shellcheck *errors*
2025-10-13 22:10:44 +02: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 WetterandGitHub 8bc2185a72 Merge pull request #2923 from testssl/drwetter-patch-1
Minor fine tuning
2025-10-12 11:49:26 +02:00
Dirk WetterandGitHub 2cfa23e7f7 Minor fine tuning
* version 3.2 was removed from links
* badges updated
* minor language improvements
2025-10-12 11:34:56 +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 WetterandGitHub ae69789ecb Merge pull request #2916 from testssl/update_Linux_CA_store
Update Linux CA store
2025-10-09 22:12:09 +02:00
Dirk WetterandGitHub 07a0aa4bef Merge pull request #2919 from testssl/update_GHAs
Update GHAs
2025-10-09 21:27:38 +02:00
Dirk 9ff79c472f Remove workflows/docker-3.2.yml for 3.3dev 2025-10-09 21:25:30 +02:00
Dirk d732088923 Roff pages won't trigger a unit test anymore 2025-10-09 21:24:45 +02:00
Dirk Wetter 0a7810ea47 Update Linux CA store
from Debian 13. Fixes #2915
2025-10-09 20:42:21 +02:00
Dirk WetterandGitHub df100d986b Merge pull request #2913 from testssl/fix_2909
Fix date for Ubuntu >= 25.10
2025-10-09 20:30:15 +02:00
Dirk WetterandGitHub 80d05c0831 Merge pull request #2912 from testssl/early_data
TLS 1.3 early data / 0-RTT
2025-10-09 18:55:14 +02:00
Dirk Wetter aacde5dadb Merge branch '3.3dev' into early_data 2025-10-09 15:50:12 +02:00
Dirk 3353627373 Fix unit test for Mac and Ubuntu Linux 2025-10-09 15:44:53 +02:00
Dirk Wetter 32defa1864 Ignore MLKEMs for TLS 1.3 2025-10-09 15:44:53 +02:00
Dirk Wetter eb915110c9 Update baseline 2025-10-09 15:44:53 +02:00
Dirk e226a56486 Update basline scan for unit test
This PR updates the baseline after switching to the new server.
2025-10-09 15:44:53 +02:00
Dirk WetterandGitHub 8534e72dc3 Merge pull request #2914 from testssl/unittest_new_baseline
Update baseline scan for unit test
2025-10-09 15:38:37 +02:00
Dirk 6201627298 Fix unit test for Mac and Ubuntu Linux 2025-10-09 13:29:36 +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 6af5377507 Ignore MLKEMs for TLS 1.3 2025-10-08 23:15:49 +02:00
Dirk Wetter f081db83e1 Update baseline 2025-10-08 23:14:54 +02:00
Dirk Wetter da7c713b08 Add 0-RTT
also:
* fine tuning protocol section
* reference RFC 8470 (well..) and FIPS 203
* add a general linkto TLS related  RFCs
2025-10-08 10:31:48 +02:00
Dirk Wetter d637daefeb Add 0-RTT 2025-10-08 10:15:14 +02:00
Dirk a4b6ded123 Update basline scan for unit test
This PR updates the baseline after switching to the new server.
2025-10-08 10:03:19 +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 WetterandGitHub 3ece1e4b11 Merge pull request #2911 from testssl/early_data_preparation
Define vars for early data
2025-10-05 21:34:53 +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 WetterandGitHub 637ad03a36 Merge pull request #2904 from testssl/jdvorak001-fix_file_naming
Jdvorak001 fix file naming
2025-09-30 17:31:33 +02:00
Dirk WetterandGitHub d6decc7f79 Merge pull request #2905 from testssl/fix_2884
Consistency for function ciphers_by_strength()
2025-09-30 15:53:34 +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
Dirk WetterandGitHub d66b67befe Merge pull request #2897 from dcooper16/fix2896
Fix #2896
2025-09-21 23:49:10 +02:00
Dirk WetterandGitHub 97faadf425 Merge pull request #2894 from testssl/faq_update
Restructure, load balancer issue, STARTTLS SMTP better explained
2025-09-18 10:59:25 +02:00
Dirk WetterandGitHub 8dec13ba62 Update FAQ.md 2025-09-18 10:57:35 +02:00
Dirk WetterandGitHub 94f03a1f1f Merge pull request #2891 from testssl/fix_indentation_3.3dev
Fix indentation @ Intermediate cert validity
2025-09-16 19:52:42 +02: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 WetterandGitHub a90b2cfd4e Merge pull request #2886 from testssl/fix_http_age
Fix garbled screen when HTTP Age is not a non-negative int
2025-09-15 17:37:20 +02:00
Dirk WetterandGitHub d08b54b5e1 Merge pull request #2882 from testssl/update_faq
Additions to FAQ
2025-09-15 17:37:07 +02:00
Dirk 52d24925e0 > was a problem
trying to get it right in GiHub MD and retext
2025-09-15 17:35:37 +02:00
Dirk f36462b14a fix spell checking 2025-09-15 17:26:06 +02:00
Dirk 0b47f24bbd Add STARTTLS + rating amend paragraphs
... and try to avoid "crypto"
2025-09-15 17:20:54 +02:00
Dirk ef82cd37be fix typo 2025-09-15 16:00:53 +02:00
Dirk 15ebceca84 Fix garbled screen when HTTP Age is not a non-negative int
As suggested in https://github.com/testssl/testssl.sh/pull/2885 parsing
of the server determined HTTP age var wasn't strict enough.

https://www.rfc-editor.org/rfc/rfc7234#section-1.2.1 requires the
variable to be a non-negative integer but testssl.sh assumed it was
like that but did't check whether that really was the case. This was
labled as a (potential) security problem. Potential as it didn't
look exploitable after review -- the header as a whole was already
sanitized.

This PR fixes the typs confusion and the garbled screen by checking
the variable early in run_http_header() and reset it to NaN. That
will be used later in run_http_date() to raise a low severity finding.

Kudos to @Tristanhx for catching this and for the suggested PR.

Also, only when running in debug mode, this PR fixes that during
service_detection() parts of the not-yet-sanitized header ended
up on the screen. The fix just calls sanitze_http_header() for the
temporary variable $TMPFILE.
2025-09-15 15:41:43 +02:00
Dirk WetterandGitHub 89a0d8d2c4 Micro additions 2025-09-03 10:51:55 +02:00
Dirk WetterandGitHub e75ef95547 Merge pull request #2879 from testssl/newfaq
Provide an FAQ
2025-09-02 15:46:11 +02:00
Dirk Wetter 0d8150e088 add faq to changes 2025-09-02 15:43:28 +02:00
Dirk Wetter b1a7c287e8 Include the FAQ 2025-09-02 15:40:54 +02:00
Dirk Wetter 08e6e4f1b5 typo / omitting few words 2025-09-02 15:31:38 +02:00
Dirk Wetter d367575511 Start over with FAQ
... see #2685
2025-09-02 15:29:06 +02:00
Dirk WetterandGitHub 5d959c1860 Merge pull request #2877 from testssl/drwetter-patch-1
Keep  feature_request.md up to date
2025-09-01 16:38:40 +02:00
Dirk WetterandGitHub 1fd86b1854 Update feature_request.md 2025-09-01 16:36:59 +02:00
Dirk WetterandGitHub b366d30b9e Merge pull request #2872 from testssl/dependabot/github_actions/actions/checkout-5
Bump actions/checkout from 4 to 5
2025-08-18 17:10:55 +02:00
Dirk WetterandGitHub de222f1241 Merge pull request #2870 from testssl/fraction_sleep
wait_kill() is now 0.1 seconds
2025-07-30 22:29:04 +02:00
Dirk Wetter 881ce7723e wait_kill() is now 0.1 seconds
... which leads to a performance gain., most noteably on Macs.

All times when calling were re-adjusted.

Also:
* PROXY_WAIT was decrease to 10 seconds. 20 seemed just too much
* passed var to `starttls_just_read()` was simplyfied
2025-07-30 18:34:37 +02:00
Dirk WetterandGitHub 8f036729ba Merge pull request #2868 from testssl/fix_MAX_SOCKET_FAIL
Fix additional parameter in shouldwedo_ipv6()
2025-07-30 15:14:53 +02:00
Dirk WetterandGitHub bd2312ec0d Merge pull request #2869 from testssl/drwetter-patch-1
Try badge for correct branch
2025-07-30 12:58:14 +02:00
Dirk WetterandGitHub ca8fdcca0e Try badge for correct branch 2025-07-30 12:57:19 +02:00
Dirk 279bc4ad91 Fix additional parameter in shouldwedo_ipv6()
.... for connectivity_problem() which may block testssl.sh
2025-07-30 12:53:13 +02:00
Dirk WetterandGitHub f14e24533b Merge pull request #2867 from testssl/check_ipv6_in_background
Exec IPv6 check in background
2025-07-29 22:54:01 +02:00
Dirk 2ce0110eee Exec IPv6 check in background
... as it can get stuck.

Also reduce MAX_WAITSOCK to 5 instead of 10.
2025-07-29 15:36:23 +02:00
Dirk WetterandGitHub 8c1ade5e38 Merge pull request #2865 from testssl/drwetter-patch-3
Modify OS bullet point + badge param
2025-07-29 12:43:25 +02:00
Dirk WetterandGitHub f64cef8871 typo 2025-07-29 12:43:00 +02:00
Dirk WetterandGitHub 8ff61c4898 Modify OS bullet point + badge param 2025-07-29 12:40:29 +02:00
Dirk WetterandGitHub 9e09d2cd58 Merge pull request #2863 from testssl/reliability_quic
More reliability for QUIC test
2025-07-28 19:03:04 +02:00
Dirk WetterandGitHub 31804ac424 Merge pull request #2857 from testssl/reliable_ut_host
Pick another host for unit tests
2025-07-28 16:37:16 +02:00
Dirk 0225bc3604 typo fix 2025-07-28 15:44:58 +02:00
Dirk 9166fc7174 Fix typo in comment 2025-07-28 15:43:01 +02:00
Dirk f8d3df7747 Make QUIC protocol detction more reliable
The site from that billioniare who made nazi gestures delivers a UDP
response without proper TLS handshake. This led to a false positive
as if the site supports QUIC via h3.

This PR makes the detection of QUIC more robust by adding a certificate check
and also take better the return values from `wait_kill()` into account.

It also introduces a function to remove any non printable chars (depending
on the LC_ALL var): `filter_printable()`

Also `sanitze_http_header()` doesn't operate anymore on a global variable
which is kind of not best practise as it is easily to avoid here.
2025-07-28 15:37:35 +02:00
Dirk Wetter 56c1e58567 Mask IP addresses, change host, compression
... for t/32_isHTML_valid.t .

Github.com seems to be most reliable from the ones tested so far.

bahn.de has one IP to the outside however Session resumption seems
to come from different hosts behind that IP. Bad choice for this
test.
2025-07-28 15:03:51 +02:00
Dirk WetterandGitHub b375755161 Merge pull request #2862 from testssl/drwetter-patch-1
Test with badge referring to the correct branch
2025-07-25 10:21:35 +02:00
Dirk WetterandGitHub c23cb6435a Update Readme.md 2025-07-25 10:17:42 +02:00
Dirk Wetter faa190354e Pick different host + openssl
* host is bahn.de
* debug message said Your ./bin/openssl.Linux.x86_64 doesn't support X25519 --> use /usr/bin/openssl
* skip debug msg check for Mac
2025-07-23 14:45:34 +02:00
Dirk Wetter b7584ea93a correct comment, update vulnerablites to include IDS friendly ones 2025-07-23 14:43:41 +02:00
Dirk WetterandGitHub 30134b223c Merge pull request #2860 from testssl/fix_2854_ipv6
Fix also IPv6 addresses for --nodns etc....
2025-07-22 22:33:34 +02:00
Dirk Wetter 57689611bf Fix also IPv6 addresses for --nodns etc....
Seems the patch in #2856 wasn't complete. So that it was forgotten to add also manually specified IPv6 addresses to the IP addresses to show and to scan.
This makes sure it does, so this fixes #2854 finally.

Also statements were added to reset do_ipv4_only and do_ipv6_only correctly so that later the output "Testing all IP** addresses" is correct.
2025-07-22 14:38:42 +02:00
Dirk WetterandGitHub d638843cc1 Merge pull request #2858 from testssl/code2network_socksend_x
Slightly improved strings @ pre-socket handling
2025-07-21 17:32:09 +02:00
Dirk WetterandGitHub 6c045e05ab Merge pull request #2855 from testssl/fix_2847+
Doing a better guess for Opossum when tcp/80 is not a/v
2025-07-21 16:24:37 +02:00
Dirk eb75ac23b6 Slightly improved strings @ pre-socket handling
* `code2network()` was improved to just use internal bash functions, except sed
* `socksend()` was renamed to `socksend_x()` to clarify that the string passed contains already a leading x

We might want to try using in `code2network()` only bash internal functions like in `socksend_x()`.
And maybe decide for onee format of hexbytes in the code -- with x or without.
2025-07-21 16:15:13 +02:00
Dirk Wetter 2c871f9ffa Pick another host for unit tests
heise.de seems too often run into to timeouts when doing
this unit test. Thus it is being changed to web.de, hoping
it works better.
2025-07-21 11:49:03 +02:00
Dirk WetterandGitHub ba6891e64a Merge pull request #2856 from testssl/fix_2854
Fix bug when --nodns none --ip <IP> is supplied
2025-07-21 11:39:34 +02:00
Dirk Wetter 727f6c9fa6 Fix bug when --nodns none --ip <IP> is supplied
Due to rebasing determine_ip_addresses() in #2852 it was
forgotten to add any manually specified IP address to
the IP addresses to show and to scan.

This fixes #2854 .
2025-07-21 10:27:23 +02:00
Dirk Wetter cb971b5336 Doing a better guess for Opossum when tcp/80 is not a/v
This labels the result of a failed test for reaching
port 80 when no direct connection is possible as likely not
vulnerable.

This seems safe to say, as there's another check whether
a proxy is configured, like for corporate environments where
a connection is only allowed though the proxy.
2025-07-21 10:08:25 +02:00
Dirk WetterandGitHub a549acd86d Merge pull request #2852 from testssl/full_ipv6
Enable IPv6 automagically
2025-07-20 20:56:34 +02:00
Dirk Wetter 1fff5226af Scan policy explained wrt IPv4/v6 addresses 2025-07-20 18:24:17 +02:00
Dirk WetterandGitHub 274a9ca5d6 Merge pull request #2853 from testssl/quic_httpfix
only exec QUIC when SERVICE= HTTP
2025-07-20 18:06:14 +02:00
Dirk WetterandGitHub e62949d39d Merge pull request #2851 from testssl/fix_2847
Fix port and block problem for Opossum
2025-07-20 18:05:19 +02:00
Dirk Wetter e09d79aad9 Fix error message on UI when testing Opossum
As `wait_kill()` returns with 0 when a TCP reset is encountered
and the process is not killed, we need to open the socket again
in a sub shell. Which is safe in the foreground.

If then the subshell returns with 0 we can safely connect to
port 80.
2025-07-20 15:40:35 +02:00
Dirk Wetter 7a6c652de0 only exec QUIC when SERVICE= HTTP
... and document wait_kill better
2025-07-20 15:28:12 +02:00
Dirk Wetter a05e697fd1 UI improvements IPv6
* IPv6 addresses which won't be scanned will be put in round brackets to feedback th UI
* logic bug fixed which always said "Testing all IPv4 addresses (port $PORT):". Simplyfied the MULTIPLE_CHECKS output
2025-07-20 14:46:48 +02:00
Dirk Wetter d0505e5006 Reflect IPv6 changes 2025-07-20 13:06:23 +02:00
Dirk Wetter bfb84a9320 Add Ipv6 automagic 2025-07-19 16:26:21 +02:00
Dirk Wetter 433ab5118b fix typo 2025-07-19 16:19:42 +02:00