自分が現象を忘れないようにするためのオチの全くないメモです。
testssl.sh はとても便利に使えるサーバの SSL/TLS 関連のセキュリティチェックのツールです。
ですが、このチェックの中で "Secure Client-Initiated Renegotiation" と呼ばれるチェック (おそらくは CVE-2011-1473 ではないかと) が一部のサーバで脆弱であると報告されます (VULNERABLE (NOT ok), potential DoS threat
と出る)。
ここで行っているチェックはこんなコマンドを実行しています。
echo R | openssl s_client -legacy_renegotiation -starttls smtp -msg -connect server:port
脆弱なホストの場合、この返り値が 0 に、そうでない場合は 1 になるようです。
Apache の mod_ssl の場合はこれでうまくチェックがいくようですが、以下のサーバの場合、対策されているバージョンであっても、ここで 0 が返る (つまり openssl s_client が成功する) ようです。
- postfix
- exim (の一部?)
- vsftpd
- proftpd (公式では "not" と書かれてる気がするけど手元では脆弱と報告される)
手元の postfix (2.11.8) に対してやってみると
$ ./testssl.sh -R -t smtp myserver.example.com:587
: (snip)
Using "OpenSSL 1.0.2-chacha (1.0.2i-dev)" [~183 ciphers]
: (snip)
Testing for Renegotiation vulnerabilities
Secure Renegotiation (CVE-2009-3555) not vulnerable (OK)
Secure Client-Initiated Renegotiation VULNERABLE (NOT ok), potential DoS threat
: (snip)
proftpd 1.3.5 も同じでした。
-
False positive generated by Secure Client-Initiated Renegotiation? #234
- ここで問題は認識されているが、フツーダメなサーバはダメと出て、良いサーバは良いと出るみたいで終わってる。ただし…
-
Understand Secure Client-Initiated Renegotiation results for STARTTLS/smtp #465
- 問題は認識されていて、なぜ NG になるのかちゃんと理解しないとね、となっている (2017-03-06 現在)