Skip to content

Commit f7abb92

Browse files
author
David Padilla
committed
Merge pull request ruby#874 from dabit/master
Translate 10/27 security news (es)
2 parents 77e2bf6 + 11bd5a8 commit f7abb92

File tree

2 files changed

+253
-0
lines changed

2 files changed

+253
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
---
2+
layout: news_post
3+
title: "Cambio en las configuraciones por defecto de ext/openssl"
4+
author: "usa"
5+
translator: "David Padilla"
6+
date: 2014-10-27 12:00:00 +0000
7+
tags: security
8+
lang: es
9+
---
10+
11+
En Ruby 2.1.4, Ruby 2.0.0-p594 y Ruby 1.9.3-p550 cambiamos la configuración
12+
por defecto de ext/openssl.
13+
Con este cambio las opciones inseguras de SSL/TLS ahora están desabilitadas,
14+
y por esto puede darse la posibilidad de tener problemas con las conexiones
15+
de SSL.
16+
17+
## Detalles
18+
19+
OpenSSL implementa protocolos y cifrados que son considerados inseguros al dia
20+
de hoy por circunstancias históricas. Un ejemplo es la vulnerabilidad POODLE
21+
([CVE-2014-3566](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-3566)),
22+
utilizar OpenSSL con este tipo de vulnerabilidades no garantiza la seguridad
23+
de la comunicación en tu red.
24+
25+
Basados en la discusión del [Bug #9424](https://bugs.ruby-lang.org/issues/9424),
26+
hemos decidido deshabilitar esas opciones inseguras de SSL/TLS por defecto.
27+
Si necesitas cancelar este cambio (mostrado abajo) aplica el parche
28+
inverso para revertirlo.
29+
30+
2.1.4
31+
: [r48098](http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?revision=48098&view=revision)
32+
33+
2.0.0-p594
34+
: [r48110](http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?revision=48110&view=revision)
35+
36+
1.9.3-p550
37+
: [r48121](http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?revision=48121&view=revision)
38+
39+
Pero recuerda, si cancelas este cambio corres el riesgo de comprometer la seguridad
40+
de la comunicación en tu red.
41+
42+
### Librerías empaquetadas de Ruby
43+
44+
Este cambio se refleja en net/http, net/imap y net/pop.
45+
Debido a que DRb y WEBrick reciben la configuración por separado, este cambio no
46+
los afecta.
47+
48+
### Rutinas que usan ext/openssl directamente
49+
50+
Este cambio se refleja cuando un objeto `OpenSSL::SSL::SSLContext` es instanciado
51+
y se llama al método `set_params` de esa instacia.
52+
53+
En particular código como:
54+
55+
{% highlight ruby %}
56+
ctx = OpenSSL::SSL::SSLContext.new
57+
ctx.set_params # Si quieres cambiar algunas opciones como el modo de verificacion, el almacenamiento del certificado, puedes enviar esos parametros en un hash
58+
ssl = OpenSSL::SSL::SSLSocket.new(socket, ctx)
59+
{% endhighlight %}
60+
61+
Si utilizas ext/openssl como cliente, asumimos que no debe haber
62+
problema con este cambio.
63+
Pero si utilizas ext/openssl como servidor y aplicas este cambio, es posible
64+
que algunos clientes viejos (Internet Explorer 6 en Windows XP, navegadores
65+
en teléfonos celulares viejos, etc.) no puedan conectarse al servidor.
66+
67+
La decisión de habilitar o no este cambio es tuya, considera las consecuencias.
68+
69+
## Solución Alterna
70+
71+
Si por alguna razón no puedes actualizar Ruby pero tienes que manejar las
72+
opciones inseguras de SSL/TLS, aplica a tu código el siguiente parche:
73+
74+
{% highlight ruby %}
75+
module OpenSSL
76+
module SSL
77+
class SSLContext
78+
remove_const(:DEFAULT_PARAMS)
79+
DEFAULT_PARAMS = {
80+
:ssl_version => "SSLv23",
81+
:verify_mode => OpenSSL::SSL::VERIFY_PEER,
82+
:ciphers => %w{
83+
ECDHE-ECDSA-AES128-GCM-SHA256
84+
ECDHE-RSA-AES128-GCM-SHA256
85+
ECDHE-ECDSA-AES256-GCM-SHA384
86+
ECDHE-RSA-AES256-GCM-SHA384
87+
DHE-RSA-AES128-GCM-SHA256
88+
DHE-DSS-AES128-GCM-SHA256
89+
DHE-RSA-AES256-GCM-SHA384
90+
DHE-DSS-AES256-GCM-SHA384
91+
ECDHE-ECDSA-AES128-SHA256
92+
ECDHE-RSA-AES128-SHA256
93+
ECDHE-ECDSA-AES128-SHA
94+
ECDHE-RSA-AES128-SHA
95+
ECDHE-ECDSA-AES256-SHA384
96+
ECDHE-RSA-AES256-SHA384
97+
ECDHE-ECDSA-AES256-SHA
98+
ECDHE-RSA-AES256-SHA
99+
DHE-RSA-AES128-SHA256
100+
DHE-RSA-AES256-SHA256
101+
DHE-RSA-AES128-SHA
102+
DHE-RSA-AES256-SHA
103+
DHE-DSS-AES128-SHA256
104+
DHE-DSS-AES256-SHA256
105+
DHE-DSS-AES128-SHA
106+
DHE-DSS-AES256-SHA
107+
AES128-GCM-SHA256
108+
AES256-GCM-SHA384
109+
AES128-SHA256
110+
AES256-SHA256
111+
AES128-SHA
112+
AES256-SHA
113+
ECDHE-ECDSA-RC4-SHA
114+
ECDHE-RSA-RC4-SHA
115+
RC4-SHA
116+
}.join(":"),
117+
:options => -> {
118+
opts = OpenSSL::SSL::OP_ALL
119+
opts &= ~OpenSSL::SSL::OP_DONT_INSERT_EMPTY_FRAGMENTS if defined?(OpenSSL::SSL::OP_DONT_INSERT_EMPTY_FRAGMENTS)
120+
opts |= OpenSSL::SSL::OP_NO_COMPRESSION if defined?(OpenSSL::SSL::OP_NO_COMPRESSION)
121+
opts |= OpenSSL::SSL::OP_NO_SSLv2 if defined?(OpenSSL::SSL::OP_NO_SSLv2)
122+
opts |= OpenSSL::SSL::OP_NO_SSLv3 if defined?(OpenSSL::SSL::OP_NO_SSLv3)
123+
opts
124+
}.call
125+
}
126+
end
127+
end
128+
end
129+
{% endhighlight %}
130+
131+
## Versiones afectadas por este cambio
132+
133+
* Ruby 1.9.3 patchlevel 550 y posteriores
134+
* Ruby 2.0.0 patchlevel 594 y posteriores
135+
* Ruby 2.1.4 y posteriores
136+
* revisión 48097 y posteriores
137+
138+
## Historia
139+
140+
* Publicado originalmente 2014-10-27 12:00:00 (UTC)
141+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
---
2+
layout: news_post
3+
title: "CVE-2014-8080: Negación de Servicio (DoS) por Expansión de XML"
4+
author: "zzak"
5+
translator: "David Padilla"
6+
date: 2014-10-27 12:00:00 +0000
7+
tags: security
8+
lang: es
9+
---
10+
11+
La expansión de entidades no restringidas puede causar una vulnerabilidad en
12+
REXML. A esta vulnerabilidad se le ha asignado el identificador
13+
[CVE-2014-8080](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-8080).
14+
Nuestra recomendación es que actualices tu versión de Ruby lo antes posible.
15+
16+
## Detalles
17+
18+
Cuando se están leyendo nodos de texto en un documento XML, el intérprete REXML
19+
puede ser forzado a colocar cadenas muy grandes lo que puede
20+
consumir toda la memoria del servidor resultando en un ataque por negación
21+
del servicio (DoS).
22+
23+
El código afectado puede verse algo así:
24+
25+
{% highlight ruby %}
26+
require 'rexml/document'
27+
28+
xml = <<XML
29+
<!DOCTYPE root [
30+
# vector de expansión ENTITY
31+
]>
32+
<cd></cd>
33+
XML
34+
35+
p REXML::Document.new(xml)
36+
{% endhighlight %}
37+
38+
Todos los usuarios que utilizan una versión afectada deberían actualizar cuanto
39+
antes o utilizar algunas de las soluciones alternas inmediatamente.
40+
41+
## Versiones afectadas
42+
43+
* Ruby 1.9.x todas las versiones anteriores a Ruby 1.9.3 patchlevel 550
44+
* Ruby 2.0.x todas las versiones anteriores a Ruby 2.0.0 patchlevel 594
45+
* Ruby 2.1.x todas las versiones anteriores a Ruby 2.1.4
46+
* Todo lo anterior a la revisión 48161
47+
48+
## Soluciones alternas
49+
50+
Si por alguna razón no puedes actualizar Ruby, utiliza el siguiente parche como
51+
solución alterna en versiones de Ruby 2.1.0+:
52+
53+
{% highlight ruby %}
54+
class REXML::Entity
55+
def value
56+
if @value
57+
matches = @value.scan(PEREFERENCE_RE)
58+
rv = @value.clone
59+
if @parent
60+
sum = 0
61+
matches.each do |entity_reference|
62+
entity_value = @parent.entity( entity_reference[0] )
63+
if sum + entity_value.bytesize > Security.entity_expansion_text_limit
64+
raise "entity expansion has grown too large"
65+
else
66+
sum += entity_value.bytesize
67+
end
68+
rv.gsub!( /%#{entity_reference.join};/um, entity_value )
69+
end
70+
end
71+
return rv
72+
end
73+
nil
74+
end
75+
end
76+
{% endhighlight %}
77+
78+
Para versiones de Ruby anteriores a 2.1.0 puedes usar el siguiente parche:
79+
80+
{% highlight ruby %}
81+
class REXML::Entity
82+
def value
83+
if @value
84+
matches = @value.scan(PEREFERENCE_RE)
85+
rv = @value.clone
86+
if @parent
87+
sum = 0
88+
matches.each do |entity_reference|
89+
entity_value = @parent.entity( entity_reference[0] )
90+
if sum + entity_value.bytesize > Document.entity_expansion_text_limit
91+
raise "entity expansion has grown too large"
92+
else
93+
sum += entity_value.bytesize
94+
end
95+
rv.gsub!( /%#{entity_reference.join};/um, entity_value )
96+
end
97+
end
98+
return rv
99+
end
100+
nil
101+
end
102+
end
103+
{% endhighlight %}
104+
105+
## Creditos
106+
107+
Agradecemos a Willis Vandevanter por reportar este problema.
108+
109+
## Historia
110+
111+
* Publicado originalmente 2014-10-27 12:00:00 (UTC)
112+

0 commit comments

Comments
 (0)