Vulnerabilidad: ejecución de código arbitrario en Git

Se ha hecho público un fallo en el sistema de versiones Git que podría permitir la ejecución de código arbitrario en la máquina de la víctima y tiene asignado el identificador CVE-2017-1000117.

Acerca del control de versiones

El control de versiones es un sistema que registra los cambios realizados sobre un archivo o conjunto de archivos a lo largo del tiempo, de modo que puedas recuperar versiones específicas más adelante. Estas herramientas son muy importantes y utilizadas en cualquier tipo de desarrollo.

Un sistema de control de versiones debe proporcionar:

  • Mecanismo de almacenamiento de los elementos que deba gestionar (ej.: archivos de texto, imágenes, documentación, etc.).
  • Posibilidad de realizar cambios sobre los elementos almacenados (ej.: modificaciones parciales, añadir, borrar, renombrar o mover elementos).
  • Registro histórico de las acciones realizadas con cada elemento o conjunto de elementos (normalmente pudiendo volver o extraer un estado anterior del producto).

Esta vulnerabilidad también esta afectado a los sistemas de control de versiones Mercurial (CVE-2017-1000116) y Subversion (CVE-2017-9800).

El fallo es provocado por un error en el procesado de los comandos “ssh://“, el cual puede ser explotado si un repositorio remoto envía una URL especialmente manipulada a la víctima cuando esta ejecuta un comando “clone“, permitiendo la ejecución de cualquier programa existente en la máquina de la víctima.

La vulnerabilidad fue reportada por Recurity-labs y podemos ver un ejemplo de la explotación aquí. Esta vulnerabilidad ya fue corregida en las últimas versiones de Git publicada.