Skip to content

Commit a4953d6

Browse files
committed
Redo PR for Opossum
Fixes #2833 This does a check for the opossum vulnerability, see https://opossum-attack.com/ . It uses a separate function to send the payload and retrieve the result via `http_header_printf()`. It doesn't use curl or wget. The latter wouldn't work anyway as according to the manpage as the HTTP header which needs to be sent must not contain LFs. This function was introduced because `http_get_header()` -- which was renamed to `http_head()` -- could use wget if curl is not available. On the way to this PR `http_head()` was improved, so that timeouts were used for curl and wget for better maturity. `http_header_printf()` now uses bach sockets , strips the URI so that a plaintext request is made. This will be done in the background because not every host will answer. Done also: - handling when PROXY is requested (try anyway directly as the payload is not "proxyable") - print a message when no HTTP service is present - try hard to use plaintext HTTP when auth is required for HTTPS and service HTTP would not be defined otherwise - manpages - help Also when pwnedkeys are checked a not pwned certificate is labled not neutral but OK=green.
1 parent c467398 commit a4953d6

File tree

7 files changed

+166
-41
lines changed

7 files changed

+166
-41
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
* QUIC protocol check
77
* bump SSLlabs rating guide to 2009r
8+
* Check for Opossum vulnerability
89

910
### Features implemented / improvements in 3.2
1011

doc/testssl.1

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -659,6 +659,9 @@ variable \f[CR]CCS_MAX_WAITSOCK\f[R].
659659
\f[CR]\-T, \-\-ticketbleed\f[R] Checks for Ticketbleed memory leakage in
660660
BigIP loadbalancers.
661661
.PP
662+
\f[CR]\-\-OP, \-\-opossum\f[R] Checks for HTTP to HTTPS upgrade
663+
vulnerability named Opossum.
664+
.PP
662665
\f[CR]\-\-BB, \-\-robot\f[R] Checks for vulnerability to ROBOT /
663666
(\f[I]Return Of Bleichenbacher\[cq]s Oracle Threat\f[R]) attack.
664667
.PP
@@ -1312,6 +1315,8 @@ RFC 2246: The TLS Protocol Version 1.0
13121315
.IP \[bu] 2
13131316
RFC 2595: Using TLS with IMAP, POP3 and ACAP
13141317
.IP \[bu] 2
1318+
RFC 2817: Upgrading to TLS Within HTTP/1.1
1319+
.IP \[bu] 2
13151320
RFC 2818: HTTP Over TLS
13161321
.IP \[bu] 2
13171322
RFC 2830: Lightweight Directory Access Protocol (v3): Extension for

doc/testssl.1.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -590,6 +590,8 @@ <h3 id="vulnerabilities">VULNERABILITIES</h3>
590590
<code>CCS_MAX_WAITSOCK</code>.</p>
591591
<p><code>-T, --ticketbleed</code> Checks for Ticketbleed memory
592592
leakage in BigIP loadbalancers.</p>
593+
<p><code>--OP, --opossum</code> Checks for HTTP to HTTPS upgrade
594+
vulnerability named Opossum.</p>
593595
<p><code>--BB, --robot</code> Checks for vulnerability to ROBOT
594596
/ (<em>Return Of Bleichenbacher’s Oracle Threat</em>)
595597
attack.</p>
@@ -1131,6 +1133,7 @@ <h2 id="rfcs-and-other-standards">RFCs and other standards</h2>
11311133
<ul>
11321134
<li>RFC 2246: The TLS Protocol Version 1.0</li>
11331135
<li>RFC 2595: Using TLS with IMAP, POP3 and ACAP</li>
1136+
<li>RFC 2817: Upgrading to TLS Within HTTP/1.1</li>
11341137
<li>RFC 2818: HTTP Over TLS</li>
11351138
<li>RFC 2830: Lightweight Directory Access Protocol (v3):
11361139
Extension for Transport Layer Security</li>

doc/testssl.1.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -236,9 +236,11 @@ Also for multiple server certificates are being checked for as well as for the c
236236

237237
`-T, --ticketbleed` Checks for Ticketbleed memory leakage in BigIP loadbalancers.
238238

239-
`--BB, --robot` Checks for vulnerability to ROBOT / (*Return Of Bleichenbacher's Oracle Threat*) attack.
239+
`--OP, --opossum` Checks for HTTP to HTTPS upgrade vulnerability named Opossum.
240240

241-
`--SI, --starttls-injection` Checks for STARTTLS injection vulnerabilities (SMTP, IMAP, POP3 only). `socat` and OpenSSL >=1.1.0 is needed.
241+
`--BB, --robot` Checks for vulnerability to ROBOT / (*Return Of Bleichenbacher's Oracle Threat*) attack.
242+
243+
`--SI, --starttls-injection` Checks for STARTTLS injection vulnerabilities (SMTP, IMAP, POP3 only). `socat` and OpenSSL >=1.1.0 is needed.
242244

243245
`-R, --renegotiation` Tests renegotiation vulnerabilities. Currently there's a check for *Secure Renegotiation* and for *Secure Client-Initiated Renegotiation*. Please be aware that vulnerable servers to the latter can likely be DoSed very easily (HTTP). A check for *Insecure Client-Initiated Renegotiation* is not yet implemented.
244246

@@ -490,6 +492,7 @@ Please note that for plain TLS-encrypted ports you must not specify the protocol
490492

491493
* RFC 2246: The TLS Protocol Version 1.0
492494
* RFC 2595: Using TLS with IMAP, POP3 and ACAP
495+
* RFC 2817: Upgrading to TLS Within HTTP/1.1
493496
* RFC 2818: HTTP Over TLS
494497
* RFC 2830: Lightweight Directory Access Protocol (v3): Extension for Transport Layer Security
495498
* RFC 3207: SMTP Service Extension for Secure SMTP over Transport Layer Security
@@ -551,7 +554,6 @@ Please note that for plain TLS-encrypted ports you must not specify the protocol
551554

552555
**etc/client-simulation.txt** contains client simulation data.
553556

554-
555557
**etc/cipher-mapping.txt** provides a mandatory file with mapping from OpenSSL cipher suites names to the ones from IANA / used in the RFCs.
556558

557559
**etc/tls_data.txt** provides a mandatory file for ciphers (bash sockets) and key material.

t/32_isHTML_valid.t

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ $edited_html =~ s/&apos;/'/g;
4848

4949
$diff = diff \$edited_html, \$out;
5050

51-
cmp_ok($edited_html, "eq", $out, "Checking if HTML file matches terminal output") or
51+
ok($edited_html eq $out, "Checking if HTML file matches terminal output") or
5252
diag ("\n%s\n", "$diff");
5353

5454
$tests++;
@@ -82,7 +82,7 @@ $debughtml =~ s/.*Using bash .*\n//g;
8282

8383
$diff = diff \$debughtml, \$html;
8484

85-
cmp_ok($debughtml, "eq", $html, "Checking if HTML file created with --debug 4 matches HTML file created without --debug") or
85+
ok($debughtml eq $html, "Checking if HTML file created with --debug 4 matches HTML file created without --debug") or
8686
diag ("\n%s\n", "$diff");
8787
$tests++;
8888

t/baseline_data/default_testssl.csvfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@
9090
"heartbleed","testssl.sh/81.169.166.184","443","OK","not vulnerable, no heartbeat extension","CVE-2014-0160","CWE-119"
9191
"CCS","testssl.sh/81.169.166.184","443","OK","not vulnerable","CVE-2014-0224","CWE-310"
9292
"ticketbleed","testssl.sh/81.169.166.184","443","OK","no session ticket extension","CVE-2016-9244","CWE-200"
93+
"opossum","testssl.sh/81.169.166.184","443","OK","not vulnerable","CVE-2025-49812","CWE-287"
9394
"ROBOT","testssl.sh/81.169.166.184","443","OK","not vulnerable","CVE-2017-17382 CVE-2017-17427 CVE-2017-17428 CVE-2017-13098 CVE-2017-1000385 CVE-2017-13099 CVE-2016-6883 CVE-2012-5081 CVE-2017-6168","CWE-203"
9495
"secure_renego","testssl.sh/81.169.166.184","443","OK","supported","","CWE-310"
9596
"secure_client_renego","testssl.sh/81.169.166.184","443","OK","not vulnerable","CVE-2011-1473","CWE-310"

0 commit comments

Comments
 (0)