El lenguaje de programación Ruby ha actualizado sus ramas 2.1x, 2.x y 1.9.x para resolver una vulnerabilidad remota que permitiría realizar una denegación de servicio y potencialmente la ejecución de código arbitrario.
La vulnerabilidad, con CVE-2013-4164, común a todas las versiones indicadas, se debe a un fallo a la hora de procesar valores en coma flotante, localizado en el archivo ‘util.c‘ (función ruby_strtod).
Según su descubridor Charlie Somerville (@charliesome), desarrollador de Ruby, cuando se realiza una conversión de determinadas cadenas a valores en coma flotante se produce un desbordamiento de memoria basado en pila que es potencialmente utilizable para la ejecución remota de código a través de valores especialmente manipulados.
Aunque no existe un exploit por el momento, Charlie ha indicado que cualquier código vulnerable produce el desbordamiento de memoria al utilizar métodos o funciones que conviertan tipos desde orígenes desconocidos a coma flotante, como «to_f» o el habitual «JSON.parse«:
Cadena_vulnerable.to_f
JSON.parse Cadena_vulnerable
Se trataría de una vulnerabilidad similar a la ya corregida en el CVE-2009-0689.
Las versiones afectadas que deben ser actualizadas urgentemente son:
- Rama 1.9.x anterior a 1.9.3 p484
- Rama 2.0.x anterior a 2.0.0 p353
- Rama 2.1.x anterior a 2.1.0 preview2
Aquellos usuarios que todavía utilicen la rama 1.8 deberán migrar sus sistemas a las nuevas, ya que no hay soporte oficial para la misma.
Más información:
Heap Overflow in Floating Point Parsing (CVE-2013-4164)
José Mesa Orihuela
Anónimo dice
¡Que inseguridad!