summaryrefslogtreecommitdiffstats
path: root/net/http/http_network_transaction.cc
diff options
context:
space:
mode:
authoragl@chromium.org <agl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-10-02 19:42:28 +0000
committeragl@chromium.org <agl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-10-02 19:42:28 +0000
commit951e7c45e47737c4c1bca8f6e97f358bf1b06b7a (patch)
treea317ca1fafb1d186497869f5a45636082b4e8865 /net/http/http_network_transaction.cc
parenta5e6349556b491bde631c592f69fc3ac13fc5b1e (diff)
downloadchromium_src-951e7c45e47737c4c1bca8f6e97f358bf1b06b7a.zip
chromium_src-951e7c45e47737c4c1bca8f6e97f358bf1b06b7a.tar.gz
chromium_src-951e7c45e47737c4c1bca8f6e97f358bf1b06b7a.tar.bz2
net: remove TLS fallback for Google properties.
With Chrome 31, Chrome will not accept a fallback to SSLv3 for Google properties. If we wish to be able to depend on AES-GCM and ChaCha20+Poly1305 support then we need to ensure that an attacker cannot downgrade us to TLS 1.1 (which doesn't include those options). This change prototypes a signal to indicate that fallback should not be allowed. We know that Google properties don't need fallback and this change allows us to test that networks are not too broken to deploy such a scheme. It's possible that defective MITM proxies will cause issues with this. The --enable-unrestricted-ssl3-fallback option exists for diagnosis of any bug reports. BUG=302739 Review URL: https://codereview.chromium.org/25547003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@226529 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/http/http_network_transaction.cc')
-rw-r--r--net/http/http_network_transaction.cc32
1 files changed, 17 insertions, 15 deletions
diff --git a/net/http/http_network_transaction.cc b/net/http/http_network_transaction.cc
index 9e24da8..707751a 100644
--- a/net/http/http_network_transaction.cc
+++ b/net/http/http_network_transaction.cc
@@ -1243,21 +1243,7 @@ int HttpNetworkTransaction::HandleSSLHandshakeError(int error) {
// version_max should match the maximum protocol version supported
// by the SSLClientSocket class.
version_max--;
-
- // Fallback to the lower SSL version.
- // While SSL 3.0 fallback should be eliminated because of security
- // reasons, there is a high risk of breaking the servers if this is
- // done in general.
- // For now SSL 3.0 fallback is disabled for Google servers first,
- // and will be expanded to other servers after enough experiences
- // have been gained showing that this experiment works well with
- // today's Internet.
- if (version_max > SSL_PROTOCOL_VERSION_SSL3 ||
- (server_ssl_config_.unrestricted_ssl3_fallback_enabled ||
- !TransportSecurityState::IsGooglePinnedProperty(
- request_->url.host(), true /* include SNI */))) {
- should_fallback = true;
- }
+ should_fallback = true;
}
break;
case ERR_SSL_BAD_RECORD_MAC_ALERT:
@@ -1273,6 +1259,22 @@ int HttpNetworkTransaction::HandleSSLHandshakeError(int error) {
break;
}
+ // While fallback should be eliminated because of security reasons,
+ // there is a high risk of breaking the servers if this is done in
+ // general.
+ //
+ // For now fallback is disabled for Google servers first, and will be
+ // expanded to other servers after enough experiences have been gained
+ // showing that this experiment works well with today's Internet.
+ //
+ // The --enable-unrestricted-ssl3-fallback command-line flag exists to allow
+ // fallback to any version, all the way down to SSLv3.
+ if (!server_ssl_config_.unrestricted_ssl3_fallback_enabled &&
+ TransportSecurityState::IsGooglePinnedProperty(request_->url.host(),
+ true /* include SNI */)) {
+ should_fallback = false;
+ }
+
if (should_fallback) {
net_log_.AddEvent(
NetLog::TYPE_SSL_VERSION_FALLBACK,