lunes, 11 de agosto de 2008

La última versión de Ruby corrige múltiples fallos de seguridad

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.


Pablo Molina
pmolina@hispasec.com



No hay comentarios:

Publicar un comentario en la entrada