-
Notifications
You must be signed in to change notification settings - Fork 18k
crypto/tls: TLS 1.0 is not min version by default in HTTP server #33837
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
CC @FiloSottile |
Change https://golang.org/cl/191877 mentions this issue: |
Is this vulnerable? In default, HTTP server in Go 1.12 has a possibility of downgrade attack? |
No, SSLv3 is broken, but not so broken that TLS connections can be downgraded to it arbitrarily by an attacker. Virtually all clients don't do insecure fallbacks anymore (and haven't for years), and in any case we support TLS_FALLBACK_SCSV. This does not pose a threat to clients that support TLS, but it will allow clients that only support SSLv3 to connect insecurely, which should not be the case. |
Change https://golang.org/cl/191998 mentions this issue: |
It was mistakenly re-enabled in CL 146217. Updates #33837 Change-Id: I8c0e1787114c6232df5888e51e355906622295bc Reviewed-on: https://go-review.googlesource.com/c/go/+/191877 Run-TryBot: Filippo Valsorda <filippo@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org> (cherry picked from commit 2ebc3d8) Reviewed-on: https://go-review.googlesource.com/c/go/+/191998
@FiloSottile Thank you very much for your explanation and fix! |
Thank you for catching this just in time for Go 1.13! |
@FiloSottile I'm looking forward to Go 1.13 release! |
It was mistakenly re-enabled in CL 146217. Fixes golang#33837 Change-Id: I8c0e1787114c6232df5888e51e355906622295bc Reviewed-on: https://go-review.googlesource.com/c/go/+/191877 Run-TryBot: Filippo Valsorda <filippo@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
It was mistakenly re-enabled in CL 146217. Fixes golang#33837 Change-Id: I8c0e1787114c6232df5888e51e355906622295bc Reviewed-on: https://go-review.googlesource.com/c/go/+/191877 Run-TryBot: Filippo Valsorda <filippo@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
What version of Go are you using (
go version
)?Does this issue reproduce with the latest release?
Yes. 1.12.9 is the latest release now.
What did you do? - Test code
Here is very simple HTTPS server code. You can choose
&tls.Config{}
or&tls.Config{MinVersion: tls.VersionTLS10}
by the comment.Run
What did you expect to see? & What did you see instead?
Testing
I use the following command to confirm whether SSLv3 is supported or not.
When using
&tls.Config{}
, SSLv3 is NOT rejected.When using
&tls.Config{MinVersion: tls.VersionTLS10}
, SSLv3 is rejected and the server emits"http: TLS handshake error from 127.0.0.1:65528: tls: client offered only unsupported versions: [300]"
, which is my expectation.I expect both
&tls.Config{}
and&tls.Config{MinVersion: tls.VersionTLS10}
cases reject SSLv3, but that was not true. The official document says "If zero, then TLS 1.0 is taken as the minimum" like the following.Document
from: tls - The Go Programming Language
In the document,
MinVersion
should be TLS 1.0, so I think it rejects SSLv3. However, the server allows SSLv3.The text was updated successfully, but these errors were encountered: