-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Description
I am running version commit a719c46bcb49caa32fd08e4a1301da48f6b013ae
.
I couldn't find any issues or PRs mentioning this exact problem. When using a URI like host:port
some errors occur for certain tests, when it tries to set up a file descriptor. For demonstration purposes I'll just use a public domain and the default port of 443, in which case the problem also occurs merely because the port is present. The relevant section from the output:
Testing vulnerabilities
Heartbleed (CVE-2014-0160) not vulnerable (OK), no heartbeat extension
CCS (CVE-2014-0224) not vulnerable (OK)
Ticketbleed (CVE-2016-9244), experiment. not vulnerable (OK), no session ticket extension
Opossum (CVE-2025-49812) /usr/local/src/testssl.sh/testssl.sh: line 1940: github.com:443: Name or service not known
/usr/local/src/testssl.sh/testssl.sh: line 1940: /dev/tcp/github.com:443/80: Invalid argument
Line 1940 is exec 33<>/dev/tcp/$node/80
, but $node
is github.com:443
so that won't work. :> I think the same problem might also occur on line 1849, given that it's exactly the same but other code uses $nodeip
instead. I'm not sure under what circumstances that might trigger though.
Command line / docker command to reproduce
/usr/local/src/testssl.sh/testssl.sh --parallel github.com:443
Expected behavior
Looking at the CVE for Opossum it seems to require an initial plaintext connection. In that case I'm actually not too sure if this particular test is very useful when running on a non-standard port, since there's a good chance port 80 won't be in use anyway (or it even belongs to a different web server on the same IP). Trying to guess the port is likely to be incorrect, and the specific host I actually want to test doesn't even use any plaintext ports.
Instead of causing a "strange" looking error, perhaps testssl.sh could simply detect the port suffix and emit a warning of its own? Then users could either skip the test, or provide an extra argument for the plaintext port. I'm just running with the default tests though so I'm not sure how to skip just the Opossum test, besides manually specifying all the other tests (requiring a lot of maintenance).
Your system
- OS:
Debian GNU/Linux 12 (bookworm)
- Platform:
Linux 6.1.0-37-amd64 x86_64
- OpenSSL + bash:
Using OpenSSL 3.0.16 (Apr 15 2025) [~94 ciphers]
andUsing bash 5.2.15