Commit Graph

5156 Commits

Author SHA1 Message Date
Dirk d767188dc8 Create SECURITY.md 2026-07-14 22:09:33 +02:00
Dirk Wetter 97763a411c Merge pull request #3094 from testssl/ready_for_3.2.4
Ready for 3.2.4
v3.2.4
2026-07-12 20:44:11 +02:00
Dirk Wetter ee6bf83c30 Merge branch '3.2' into ready_for_3.2.4 2026-07-12 19:22:39 +02:00
Dirk Wetter 4020f6362f Merge pull request #3093 from testssl/03_mini_syntax_check_3.2
Small check for semantic unit tests (3.2)
2026-07-12 19:21:51 +02:00
Dirk Wetter 1e3c726af7 Bump version 2026-07-12 17:12:16 +02:00
Dirk Wetter e3c3f9e89c order by last name 2026-07-12 17:09:50 +02:00
Dirk Wetter 56484e30e3 precision rules, especially when security bug is fixed 2026-07-12 17:08:17 +02:00
Dirk Wetter 6f02dcdcf4 Merge pull request #3092 from ericcgu/fix/3090-html-xss-pr-url-3.2
Fix stored XSS in HTML report via unescaped Location: header (#3090)
2026-07-12 16:17:10 +02:00
Dirk Wetter 21d5c30147 Add $ to SYSTEM 2026-07-12 15:44:22 +02:00
Dirk Wetter 5518ea9da8 Small check for semantic unit tests (3.2)
Starting with a few simple patterns, like for checking for non-variables at left hand side like [[ LHS == $value ]]. The file is supposed be amended in the future.

This fixes #3074 for 3.2
2026-07-12 14:36:45 +02:00
Eric Gu 406e87a0a4 Fix stored XSS in HTML report via unescaped Location: header (#3090)
Backport of the 3.3dev fix to the 3.2 branch.

pr_url() and pr_boldurl() interpolated their argument directly into
<a href="$1">$1</a> without HTML escaping. The most notable caller
passes the raw HTTP Location: header from the scanned server, so a
malicious HTTPS target could inject arbitrary HTML/JS into an
operator's --htmlfile report. Route both the href attribute and the
link text through the existing html_reserved() escaper, matching the
pattern already used by every other pr_* HTML-output function.
2026-07-11 23:22:42 -04:00
Dirk Wetter eb4d8183ee Merge pull request #3083 from ericcgu/ericcgu-patch-1
fix: inverted return check in sym-encrypt() at testssl.sh:14741
2026-07-09 12:26:24 +02:00
Eric Gu (@ericguuu) 7f6adec5e4 fix: inverted return check in sym-encrypt() at testssl.sh:14741 2026-07-08 21:28:45 -04:00
Dirk Wetter b5a83f5f10 Merge pull request #3067 from logopk/fix/issuer-cn-linecount-3.2
[Bug] FIXME: issuer_CN error with more than 5 lines in Issuer #3065
2026-06-18 11:30:25 +02:00
Peter Kreuser 9aeafa4c6e [Bug] FIXME: issuer_CN error with more than 5 lines in Issuer #3065 2026-06-17 22:53:25 +02:00
Dirk Wetter 0ff7a3463c Merge pull request #3048 from SteveVaneeckhout/fix-permissions-policy-duplicate-3.2
Backport: Fix Permissions-Policy header listed twice in output
2026-06-01 09:45:44 +02:00
Steve 7ed99ad0a7 Fix Permissions-Policy header listed twice in output
run_security_headers() listed "Permissions-Policy" twice in its
header_and_svrty checklist: once as OK and again as INFO. The loop
matched the same header on both iterations, emitting two entries to JSON
(headerResponse) and the terminal output. Remove the duplicate INFO
entry, keeping the intended OK classification.

Backport of the 3.3dev fix to the 3.2 branch.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-30 18:55:29 +02:00
Dirk Wetter 4f06e1d7af Merge pull request #3033 from testssl/fix_unicode_3003_3.2
Fix DN conversion when reading certificate issuer (3.2)
2026-04-25 11:20:40 +02:00
Dirk Wetter 1a00cd98da Fix DN conversion when reading certificate issuer (3.2)
This fixes #3003 for 3.2 .

The conversion to proper UTF-8 should have taken place by just using -nameopt RFC2253, see manpage openssl-namedisplay-options(1ssl).
As @dcooper16 suggested removing esc_msb should help. This may look counterintuitive but works.
2026-04-22 22:07:45 +02:00
Dirk Wetter e0d00766b5 Merge pull request #3032 from testssl/fix_doc-problem_3029_3.2
Fix doc error regarding MAX_SOCKET_FAIL + MAX_OSSL_FAIL (3.2)
2026-04-20 18:59:04 +02:00
Dirk a2470b01af Fix doc error regarding MAX_SOCKET_FAIL + MAX_OSSL_FAIL (3.2)
The trailing error messages were swapped in the paragraphs / description for MAX_SOCKET_FAIL + MAX_OSSL_FAIL .
This fixes the confusion for 3.2 , see #3028 .
2026-04-20 18:56:51 +02:00
Dirk Wetter 30cddcd604 Merge pull request #3025 from dcooper16/missing_groups_32
Add missing TLS 1.3 Brainpool groups
2026-04-15 11:40:39 +02:00
David Cooper 45cf9e9de9 Add missing TLS 1.3 Brainpool groups
This commit adds recognition of the TLS 1.3 Brainpool groups when parsing the supported_groups extension in the server's extensions.
2026-04-14 13:26:46 -07:00
Dirk Wetter d9cf5da934 Merge pull request #3022 from dcooper16/missing_sigschemes_32
Add missing TLS signature schemes
2026-04-14 10:10:19 +02:00
David Cooper 62d032134f Add missing TLS signature schemes
This commit adds a few TLS signature schemes that were not added to certificate_transparency() in the 3.2 branch.
2026-04-13 11:54:03 -07:00
Dirk Wetter 2f69d24ca0 Merge pull request #3019 from dcooper16/ossl4_ocsp_32
OpenSSL 4 compatibility for stapled OCSP responses
2026-04-13 09:37:46 +02:00
David Cooper 81afe6cac3 OpenSSL 4 compatibility for stapled OCSP responses
It seems that OpenSSL 4.0.0 allows for the possibility that a server's response to the status request extension may include more than one OCSP response (presumably one for each certificate in the certification path).

As a result, the line indicating that the server does not provide status information was changed from "OCSP response: no response sent" to "OCSP responses: no responses sent". If a response was included, "OCSP responses:" is followed by an indication of the number of responses included.

This commit addresses the change from "response" to "responses".

I do not know of any servers that provide more than one OCSP response, so I have not tried to make any changes to handle more than one response.
2026-04-12 11:37:50 -07:00
Dirk Wetter afcdab9f9a Merge pull request #3013 from testssl/fix_3009_date-detection
Make sure date -r hits a readable dir (3.2)
2026-04-07 18:42:09 +02:00
Dirk d146c56bfd Make sure date -r hits a readable dir (3.2)
When checking early for date flavors, there might be an edge case when a directory with a referred file (for the date command) isn't readable which might cause testssl.sh not to detect the date flavor correctly.

This fixes that (#3009) by cd'ing to / in a subshell which should be cd'able and readable under every platform.
2026-04-07 16:02:48 +02:00
Dirk Wetter 6efc4c9a85 Merge pull request #3011 from testssl/patch-2
Fix typo
2026-04-07 09:52:49 +02:00
Dirk Wetter 19fbe436e4 Fix typo 2026-04-07 09:49:51 +02:00
Dirk Wetter 52dc2d5e57 Merge pull request #3006 from dcooper16/ossl4_32
OpenSSL 4 compatibility
2026-03-25 09:50:10 +01:00
David Cooper 6e9854df71 OpenSSL 4 compatibility
This commit addresses two issues created by changes in certificate printing in OpenSSL 4 (based on testing with OpenSSL 4.0.0-alpha1).

With OpenSSL 4, the public key type for ML-DSA keys is now shown with a string (e.g., ML-DSA-44) rather than an OID. The first change in this commit ensures that the public key size is set correctly in this case.

Second, different information is printed about the size of elliptic curve public keys. All previous versions of OpenSSL (and LibreSSL) just provided the size of the public key:

    Public-Key: (256 bit)

OpenSSL 4.0.0-alpha includes additional information:

    Public-Key: (256 bit field, 128 bit security level)

The second change in this commit removes this additional information.
2026-03-23 13:57:04 -07:00
Dirk Wetter 2d2e665650 Merge pull request #2996 from testssl/drwetter-patch-1
docker + IPv6, incl. host networking
2026-02-18 10:39:22 +01:00
Dirk Wetter 8d8b6556a5 docker + IPv6, incl. host networking 2026-02-18 10:37:31 +01:00
Dirk Wetter d2d9d2a041 Merge pull request #2988 from testssl/v3.2.3
Bump version (3.2)
v3.2.3
2026-02-12 13:21:40 +01:00
Dirk Wetter 9a2b224d0e Bump version 2026-02-12 12:10:35 +01:00
Dirk Wetter c01ff1fd77 Merge pull request #2984 from testssl/fix_2983_robot_vars_3.2
Finalize renaming MAX_WAITSOCK --> ROBOT_TIMEOUT (3.2)
2026-02-11 21:36:55 +01:00
Dirk 0c92842024 Google has KEMs wjhich openssl doesn't have yet 2026-02-11 20:12:41 +01:00
Dirk dd83792c58 Fix typo which fixes potential false positives 2026-02-11 19:38:00 +01:00
Dirk 03b0f483dc Finalize the renaming MAX_WAITSOCK --> ROBOT_TIMEOUT (3.2)
The commit 6753a95c939359f9e06fb9f3dd199a0 changed some variables however for consistency
MAX_WAITSOCK should have been completely changed to ROBOT_TIMEOUT .

This PR suggests that. Moreover it changes the local variable robottimeout to robot_timeout.

This fixes #2983 for 3.2 .
2026-01-22 18:36:41 +01:00
Dirk Wetter 40c1edbd13 Merge pull request #2976 from testssl/mitigate_2083_3.2
Mitigate inconsistent test results for ROBOT (3.2)
2025-12-21 16:13:37 +01:00
Dirk Wetter 1ca2d624d9 Update docs to reflect ROBOT_TIMEOUT 2025-12-20 14:04:37 +01:00
Dirk Wetter 2ab0f3153f Mitigate inconsistent test results for ROBOT (3.2)
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 alert is two bytes and it is an TLS alert. PR for 3.3dev was #2969 .

Also this PR now uses a separate variable for the timeout. Using a separate global variable may offer some possibility for tuning the check when the latency to the target is high. This is still subject of research.
The variable is 10 seconds here to be in line with MAX_WAITSOCK which (name) was used previously.
2025-12-20 13:43:06 +01:00
Dirk Wetter e4566796a6 Merge pull request #2970 from testssl/fix_missing_vulnLF_3.2
Add missing counter to ROBOT (3.2)
2025-12-19 13:58:42 +01:00
Dirk Wetter 06fd88f67a Add missing counter to ROBOT (3.2)
We missed somehow to add in the big while loop to add the fact that ROBOT is a vulnerability which became
apparent with #2967 (3.3dev).

This PR adds that for 3.2 also. See #2968.
2025-12-15 14:54:20 +01:00
Dirk Wetter 67ee3d9e9a Merge pull request #2966 from testssl/fix_2944_3.2
Add missing LF after pwnkeys DB check (3.2)
2025-12-14 21:03:35 +01:00
Dirk Wetter 7b30757d84 Add missing LF after pwnkeys DB check (3.2)
This fixes #2944 for 3.2 .

Also for the CRL check there were 2 LFs in the code added for readability.
2025-12-14 17:52:45 +01:00
Dirk Wetter e22872fff9 Merge pull request #2964 from dcooper16/fix2959_32
Fix #2959
2025-12-14 00:11:43 +01:00
David 7e43eb6e0c 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-13 08:53:53 -08:00