diff --git a/testssl.sh b/testssl.sh index c955fe4..b5402db 100755 --- a/testssl.sh +++ b/testssl.sh @@ -12281,6 +12281,7 @@ run_tls_poodle() { run_tls_fallback_scsv() { local -i ret=0 + local p high_proto="" high_proto_str low_proto="" protos_to_try [[ $VULN_COUNT -le $VULN_THRESHLD ]] && outln && pr_headlineln " Testing for TLS_FALLBACK_SCSV Protection " && outln pr_bold " TLS_FALLBACK_SCSV"; out " (RFC 7507) " @@ -12292,66 +12293,118 @@ run_tls_fallback_scsv() { prln_local_problem "$OPENSSL lacks TLS_FALLBACK_SCSV support" return 4 fi - #TODO: this need some tuning: a) if one protocol is supported only it has practcally no value (theoretical it's interesting though) - # b) for IIS6 + openssl 1.0.2 this won't work - # c) best to make sure that we hit a specific protocol, see https://alpacapowered.wordpress.com/2014/10/20/ssl-poodle-attack-what-is-this-scsv-thingy/ - # d) minor: we should do "-state" here - # first: make sure SSLv3 or some TLS protocol is supported + # First determine the highest protocol that the server supports (not including TLSv1.3). if [[ "$OPTIMAL_PROTO" == "-ssl2" ]]; then prln_svrty_critical "No fallback possible, SSLv2 is the only protocol" return 7 fi - # second: make sure we have tls1_2: - $OPENSSL s_client $(s_client_options "$STARTTLS $BUGS -connect $NODEIP:$PORT $PROXY $SNI -no_tls1_2") >$TMPFILE 2>$ERRFILE $TMPFILE $TMPFILE 2>$ERRFILE $TMPFILE 2>$ERRFILE $TMPFILE