Skip to content

[BUG] Using a port suffix for the URI causes some file descriptor errors #2847

@GottemHams

Description

@GottemHams

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] and Using bash 5.2.15

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions