Skip to content

Translate 10/27 security news (es) #874

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

Merged
merged 3 commits into from
Oct 29, 2014
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
---
layout: news_post
title: "Cambio en las configuraciones por defecto de ext/openssl"
author: "usa"
translator: "David Padilla"
date: 2014-10-27 12:00:00 +0000
tags: security
lang: es
---

En Ruby 2.1.4, Ruby 2.0.0-p594 y Ruby 1.9.3-p550 cambiamos la configuración
por defecto de ext/openssl.
Con este cambio las opciones inseguras de SSL/TLS ahora están desabilitadas,
y por esto puede darse la posibilidad de tener problemas con las conexiones
de SSL.

## Detalles

OpenSSL implementa protocolos y cifrados que son considerados inseguros al dia
de hoy por circunstancias históricas. Un ejemplo es la vulnerabilidad POODLE
([CVE-2014-3566](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-3566)),
utilizar OpenSSL con este tipo de vulnerabilidades no garantiza la seguridad
de la comunicación en tu red.

Basados en la discusión del [Bug #9424](https://bugs.ruby-lang.org/issues/9424),
hemos decidido deshabilitar esas opciones inseguras de SSL/TLS por defecto.
Si necesitas cancelar este cambio (mostrado abajo) aplica el parche
inverso para revertirlo.

2.1.4
: [r48098](http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?revision=48098&view=revision)

2.0.0-p594
: [r48110](http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?revision=48110&view=revision)

1.9.3-p550
: [r48121](http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?revision=48121&view=revision)

Pero recuerda, si cancelas este cambio corres el riesgo de comprometer la seguridad
de la comunicación en tu red.

### Librerías empaquetadas de Ruby

Este cambio se refleja en net/http, net/imap y net/pop.
Debido a que DRb y WEBrick reciben la configuración por separado, este cambio no
los afecta.

### Rutinas que usan ext/openssl directamente

Este cambio se refleja cuando un objeto `OpenSSL::SSL::SSLContext` es instanciado
y se llama al método `set_params` de esa instacia.

En particular código como:

{% highlight ruby %}
ctx = OpenSSL::SSL::SSLContext.new
ctx.set_params # Si quieres cambiar algunas opciones como el modo de verificacion, el almacenamiento del certificado, puedes enviar esos parametros en un hash
ssl = OpenSSL::SSL::SSLSocket.new(socket, ctx)
{% endhighlight %}

Si utilizas ext/openssl como cliente, asumimos que no debe haber
problema con este cambio.
Pero si utilizas ext/openssl como servidor y aplicas este cambio, es posible
que algunos clientes viejos (Internet Explorer 6 en Windows XP, navegadores
en teléfonos celulares viejos, etc.) no puedan conectarse al servidor.

La decisión de habilitar o no este cambio es tuya, considera las consecuencias.

## Solución Alterna

Si por alguna razón no puedes actualizar Ruby pero tienes que manejar las
opciones inseguras de SSL/TLS, aplica a tu código el siguiente parche:

{% highlight ruby %}
module OpenSSL
module SSL
class SSLContext
remove_const(:DEFAULT_PARAMS)
DEFAULT_PARAMS = {
:ssl_version => "SSLv23",
:verify_mode => OpenSSL::SSL::VERIFY_PEER,
:ciphers => %w{
ECDHE-ECDSA-AES128-GCM-SHA256
ECDHE-RSA-AES128-GCM-SHA256
ECDHE-ECDSA-AES256-GCM-SHA384
ECDHE-RSA-AES256-GCM-SHA384
DHE-RSA-AES128-GCM-SHA256
DHE-DSS-AES128-GCM-SHA256
DHE-RSA-AES256-GCM-SHA384
DHE-DSS-AES256-GCM-SHA384
ECDHE-ECDSA-AES128-SHA256
ECDHE-RSA-AES128-SHA256
ECDHE-ECDSA-AES128-SHA
ECDHE-RSA-AES128-SHA
ECDHE-ECDSA-AES256-SHA384
ECDHE-RSA-AES256-SHA384
ECDHE-ECDSA-AES256-SHA
ECDHE-RSA-AES256-SHA
DHE-RSA-AES128-SHA256
DHE-RSA-AES256-SHA256
DHE-RSA-AES128-SHA
DHE-RSA-AES256-SHA
DHE-DSS-AES128-SHA256
DHE-DSS-AES256-SHA256
DHE-DSS-AES128-SHA
DHE-DSS-AES256-SHA
AES128-GCM-SHA256
AES256-GCM-SHA384
AES128-SHA256
AES256-SHA256
AES128-SHA
AES256-SHA
ECDHE-ECDSA-RC4-SHA
ECDHE-RSA-RC4-SHA
RC4-SHA
}.join(":"),
:options => -> {
opts = OpenSSL::SSL::OP_ALL
opts &= ~OpenSSL::SSL::OP_DONT_INSERT_EMPTY_FRAGMENTS if defined?(OpenSSL::SSL::OP_DONT_INSERT_EMPTY_FRAGMENTS)
opts |= OpenSSL::SSL::OP_NO_COMPRESSION if defined?(OpenSSL::SSL::OP_NO_COMPRESSION)
opts |= OpenSSL::SSL::OP_NO_SSLv2 if defined?(OpenSSL::SSL::OP_NO_SSLv2)
opts |= OpenSSL::SSL::OP_NO_SSLv3 if defined?(OpenSSL::SSL::OP_NO_SSLv3)
opts
}.call
}
end
end
end
{% endhighlight %}

## Versiones afectadas por este cambio

* Ruby 1.9.3 patchlevel 550 y posteriores
* Ruby 2.0.0 patchlevel 594 y posteriores
* Ruby 2.1.4 y posteriores
* revisión 48097 y posteriores

## Historia

* Publicado originalmente 2014-10-27 12:00:00 (UTC)

112 changes: 112 additions & 0 deletions es/news/_posts/2014-10-27-rexml-dos-cve-2014-8080.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
---
layout: news_post
title: "CVE-2014-8080: Negación de Servicio (DoS) por Expansión de XML"
author: "zzak"
translator: "David Padilla"
date: 2014-10-27 12:00:00 +0000
tags: security
lang: es
---

La expansión de entidades no restringidas puede causar una vulnerabilidad en
REXML. A esta vulnerabilidad se le ha asignado el identificador
[CVE-2014-8080](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-8080).
Nuestra recomendación es que actualices tu versión de Ruby lo antes posible.

## Detalles

Cuando se están leyendo nodos de texto en un documento XML, el intérprete REXML
puede ser forzado a colocar cadenas muy grandes lo que puede
consumir toda la memoria del servidor resultando en un ataque por negación
del servicio (DoS).

El código afectado puede verse algo así:

{% highlight ruby %}
require 'rexml/document'

xml = <<XML
<!DOCTYPE root [
# vector de expansión ENTITY
]>
<cd></cd>
XML

p REXML::Document.new(xml)
{% endhighlight %}

Todos los usuarios que utilizan una versión afectada deberían actualizar cuanto
antes o utilizar algunas de las soluciones alternas inmediatamente.

## Versiones afectadas

* Ruby 1.9.x todas las versiones anteriores a Ruby 1.9.3 patchlevel 550
* Ruby 2.0.x todas las versiones anteriores a Ruby 2.0.0 patchlevel 594
* Ruby 2.1.x todas las versiones anteriores a Ruby 2.1.4
* Todo lo anterior a la revisión 48161

## Soluciones alternas

Si por alguna razón no puedes actualizar Ruby, utiliza el siguiente parche como
solución alterna en versiones de Ruby 2.1.0+:

{% highlight ruby %}
class REXML::Entity
def value
if @value
matches = @value.scan(PEREFERENCE_RE)
rv = @value.clone
if @parent
sum = 0
matches.each do |entity_reference|
entity_value = @parent.entity( entity_reference[0] )
if sum + entity_value.bytesize > Security.entity_expansion_text_limit
raise "entity expansion has grown too large"
else
sum += entity_value.bytesize
end
rv.gsub!( /%#{entity_reference.join};/um, entity_value )
end
end
return rv
end
nil
end
end
{% endhighlight %}

Para versiones de Ruby anteriores a 2.1.0 puedes usar el siguiente parche:

{% highlight ruby %}
class REXML::Entity
def value
if @value
matches = @value.scan(PEREFERENCE_RE)
rv = @value.clone
if @parent
sum = 0
matches.each do |entity_reference|
entity_value = @parent.entity( entity_reference[0] )
if sum + entity_value.bytesize > Document.entity_expansion_text_limit
raise "entity expansion has grown too large"
else
sum += entity_value.bytesize
end
rv.gsub!( /%#{entity_reference.join};/um, entity_value )
end
end
return rv
end
nil
end
end
{% endhighlight %}

## Creditos

Agradecemos a Willis Vandevanter por reportar este problema.

## Historia

* Publicado originalmente 2014-10-27 12:00:00 (UTC)