[#65451] [ruby-trunk - Feature #10333] [PATCH 3/1] optimize: "yoda literal" == string — ko1@...

Issue #10333 has been updated by Koichi Sasada.

9 messages 2014/10/07

[ruby-core:65711] [ruby-trunk - Bug #9424] ruby 1.9 & 2.x has insecure SSL/TLS client defaults

From: stephen@...
Date: 2014-10-14 21:13:08 UTC
List: ruby-core #65711
Issue #9424 has been updated by Stephen Touset.


This patch looks broken.

	:options =3D> -> {
	  opts =3D =E2=80=A6
	  opts |=3D OpenSSL::SSL::OP_NO_SSLv3 if defined?(OpenSSL::SSL::OP_NO_SSLv=
3)
	}.call

If that last constant isn't defined, the lambda will return nil and no opti=
ons will be overridden.

----------------------------------------
Bug #9424: ruby 1.9 & 2.x has insecure SSL/TLS client defaults=20
https://bugs.ruby-lang.org/issues/9424#change-49441

* Author: Jeff Hodges
* Status: Closed
* Priority: Normal
* Assignee: Martin Bosslet
* Category: ext/openssl
* Target version: current: 2.2.0
* ruby -v: -
* Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN, 2.1: UNKNOWN
----------------------------------------
Ruby 1.9, 2.0, and 2.1 use insecure defaults for SSL/TLS client connections=
. They have inherited or overridden configs that make the OpenSSL-controlle=
d connections insecure. Note: both OpenSSL's and Ruby's defaults in all tes=
ted versions are currently insecure. Confirmation of the issues with Ruby's=
 TLS client can be done with the code in [1].

Ruby is using TLS compression by default. This opens Ruby clients to the CR=
IME attack[2].

Ruby also uses a variety of insecure cipher suites. These cipher suites eit=
her use key sizes much smaller than the currently recommended size, making =
brute forcing a decryption easy, or do not check the veracity of the server=
's certificate making them susceptible to man-in-the-middle attacks[3][4].

Ruby also appears to allow SSLv2 connections by default. It does so by firs=
t trying to connect with a SSLv2 client hello with a higher SSL/TLS version=
 inside of it which allows SSLv2 servers to work. SSLv2 was broken in the 1=
990s and is considered unsafe.

These issues expose Ruby users to attacks that have been known for many yea=
rs, and are trivial to discover. These defaults are often build specific, a=
nd are not the same across platforms, but are consistently poor (the code i=
n [1] can evaluate the build). A patch from a core developer on the securit=
y@ list is attached. However, the patch does not correct the suspect SSLv2 =
configuration. It is believed that Ruby 1.8 is also a concern, but, since i=
t was obsoleted, it's not been investigated.

A report similar to this was sent to [email protected] four days ago. =
The Ruby core developers have been unable to patch these problems in a time=
ly manner for it for what I and others believe are concerning reasons. This=
 ticket is being made to allow engineers outside of the small group that ar=
e on security@ to protect themselves from these attacks.

[1] https://gist.github.com/cscotta/8302049
[2] https://www.howsmyssl.com/s/about.html#tls-compression
[3] https://www.howsmyssl.com/s/about.html#insecure-cipher-suites
[4] TLS_DHE_DSS_WITH_DES_CBC_SHA - small keys
TLS_DHE_RSA_WITH_DES_CBC_SHA - small keys
TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA - MITM
TLS_ECDH_anon_WITH_AES_128_CBC_SHA - MITM
TLS_ECDH_anon_WITH_AES_256_CBC_SHA - MITM
TLS_ECDH_anon_WITH_RC4_128_SHA - MITM
TLS_RSA_WITH_DES_CBC_SHA - small keys
TLS_SRP_SHA_WITH_3DES_EDE_CBC_SHA - MITM
TLS_SRP_SHA_WITH_AES_128_CBC_SHA - MITM
TLS_SRP_SHA_WITH_AES_256_CBC_SHA - MITM

---Files--------------------------------
ruby_ssl.patch (1.08 KB)
change_ssl_defaults.diff (1.24 KB)
change_ssl_defaults.2.diff (2.13 KB)


--=20
https://bugs.ruby-lang.org/

In This Thread

Prev Next