Han sido descubiertas varias vulnerabilidades en Ruby 1.8 y 1.9 que podrÃan permitir a un atacante remoto saltarse restricciones de seguridad, envenenar la caché DNS o causar una denegación de servicio.
Ruby es un lenguaje de programación interpretado y reflexivo que combina una sintaxis inspirada en Python y Perl con caracterÃsticas de programación orientada a objetos similares a Smalltalk. Ruby interpreta el código en una sola pasada y su implementación oficial es distribuida bajo una licencia de software libre.
Los problemas de seguridad corregidos en la última versión son los siguientes:
* La primera vulnerabilidad consiste en varios errores al implementar ciertas restricciones correspondientes a los de niveles de seguridad. Esto podrÃa ser aprovechado para llamar a la función untrace_var, realizar operaciones con los logs del sistema o modificar “$PROGRAM_NAME” desde el nivel de seguridad 4; O para llamar a otras funciones no seguras desde los niveles 1, 2 y 3.
* La segunda vulnerabilidad está causada por un error en la función WEBrick::HTTPUtils.split_header_value al usar expresiones regulares. Un atacante remoto podrÃa provocar un consumo excesivo de recursos de la CPU mediante una petición HTTP especialmente manipulada, causando una denegación se servicio.
* Existe un error en DL (librerÃa para Ruby que provee un interfaz para dynamic linker) que podrÃa ser aprovechado por un atacante remoto para saltarse restricciones de seguridad y llamar a funciones potencialmente peligrosas.
* La cuarta vulnerabilidad está causada porque resolv.rb no aplica suficiente entropÃa a la hora de elegir los números de puerto usados en consultas DNS, lo que podrÃa ser aprovechado por un atacante remoto para envenenar la caché DNS. El parche se encarga de implementar una de las contramedidas recomendadas para el problema descubierto por Kaminsky, añadiendo mayor aleatoriedad a la elección de los puertos para hacer mas difÃcil un posible ataque.
Todas las vulnerabilidades están confirmadas para las versiones 1.8.5, 1.8.6-p286,1.8.7-p71, 1.9 r18423 y para las versiones anteriores.
Se recomienda actualizar a las siguientes versiones no vulnerables:
Para la rama 1.8.6 actualizar a la versión 1.8.6-p287, disponible desde:
ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p287.tar.gz
Para la rama 1.8.7 actualizar a la versión 1.8.7-p72, disponible desde:
ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p72.tar.gz
Para la rama 1.9 la última revisión está disponible a través del repositorio SVN.
Más información
Multiple vulnerabilities in Ruby
http://www.ruby-lang.org/en/news/2008/08/08/multiple-vulnerabilities-in-ruby/
Pablo Molina
pmolina@hispasec.com