Hallada una vulnerabilidad grave en RubyGems que permite la ejecución de código en remoto

Share this…

RubyGems es un paquete de herramientas de software que sirve para instalar, actualizar y configurar bibliotecas y programas de Ruby. Los encargados de desarrollar este paquete han anunciado que el lunes parchearon una vulnerabilidad grave que afectaba a su producto.

La vulnerabilidad, que era una deserialización de objetos inseguros, permitía a un hacker apoyarse en ella para llevar a cabo una ejecución de código en remoto. Para ello el atacante tendría que ser capaz de inyectar una instancia de un objeto sobre un sistema vulnerable, abriendo así la puerta a la ejecución de código en remoto.

Los desarrolladores de RubyGems comentan que han auditado todas las Gems y no han encontrado ninguna que haya sido afectada por la explotación de la vulnerabilidad descubierta. Sin embargo, matizan su afirmación (ya que solo mencionan a lo que han podido abarcar) diciendo que “no podemos dar por seguro que ninguna Gem haya sido impactada”, ya que el fallo fue introducido en 2012 y ha estado presente durante cinco años, no habiendo sido descubierto hasta el viernes de la semana pasada.

Según Max Justicz, descubridor de la vulnerabilidad, los ficheros YAML de las Gems contienen información relacionada con su nombre, autor, versión, el código fuente y los hash criptográficos. Al subirse una Gem a rubygems.org se usa llamadas inseguras para cargar ficheros YAML a la Gem. Por otro lado, ha especulado que los autores del sitio web conocían esto y habrían parcheando YAML y las biblioteca de análisis para permitir la deserialización de clases sobre una lista blanca.

Max Justicz explica junto a la prueba de concepto que ha aportado que “una de las ventajas de YAML es que es muy potente, y a veces se usa en contextos donde los formatos de intercambio menos expresivos (pero más seguros) como JSON son más apropiados. Quizá en el futuro YAML.load podría ser modificado para tomar una lista blanca de clases como un parámetro opcional, haciendo que la deserializacion de objetos complejos sea un comportamiento optativo”. El investigador también dijo que se “sorprendió al ver que el análisis de YAML no confiable resultaba peligroso. Siempre había pensado que era un formato de intercambio benigno como JSON. De hecho, YAML permite la codificación de objetos arbitrarios, al igual que pickle (objeto de serialización) de Python.”

Los mantenedores y desarrolladores de RubyGems han parcheado la vulnerabilidad añadiendo un código para permitir solo la deserialización de tipos seguros.

Fuente:https://www.muyseguridad.net/2017/10/13/vulnerabilidad-grave-rubygems-codigo-remoto/