Revista Informática

Asegurando Git: Abordando 5 Nuevas Vulnerabilidades

Publicado el 17 agosto 2024 por Lauratuero @incubaweb

¡Hola, usuarios de Git!

Hoy les escribo no en mi capacidad como mantenedor de Git para Windows, sino como coordinador comunitario del último lanzamiento de corrección de errores de seguridad de Git.

En el panorama en constante evolución del desarrollo de software, la seguridad sigue siendo una preocupación primordial, especialmente para el proyecto Git. Junto a nuestras otras prioridades comerciales, mantenemos la fortaleza cuando se trata de proteger su trabajo. Con este firme compromiso con la seguridad, traemos a su atención la última versión de Git, v2.45.1, lanzada el 14 de mayo de 2024, que aborda no una sino cinco vulnerabilidades. Las plataformas afectadas son Windows, macOS, Linux e incluso *BSD, por lo que estas correcciones son importantes para todos. Esta versión está coordinada con Visual Studio y GitHub Desktop, que incluyen un subconjunto de Git. También estamos publicando varias actualizaciones de defensa en profundidad para abordar temas que hemos observado en las últimas versiones de corrección.

Actualizar a la última versión de Git es esencial para protegerse contra estas vulnerabilidades. Si no puede actualizar de inmediato, tenga cuidado de dónde clona los repositorios.

Nota: la protección de defensa en profundidad en esta actualización causa un retroceso cuando se clonan repositorios habilitados con Git LFS. La clonación fallará con un mensaje de error. La solución es llamar a git lfs pull en la clonación nueva.

El tema principal de estas correcciones es mejorar la seguridad de la clonación de repositorios Git. Git ha mantenido durante mucho tiempo que clonar repositorios incluso no confiables debe ser una operación segura y que debe ser posible "limpiar" repositorios de configuraciones y hooks potencialmente maliciosos—y en esta versión, esto se documenta claramente.

Vamos a adentrarnos en los detalles.

Ejecutión de código remoto en clones recursivos en sistemas de archivos insensibles a mayúsculas que soportan enlaces simbólicos (CVE-2024-32002, crítico). Los repositorios con submódulos pueden estar diseñados de manera que exploten un error en Git, engañándolo para que escriba archivos no en el espacio de trabajo del submódulo, sino en un directorio .git/. Esto es posible mediante una combinación de confundir a Git con un directorio y un enlace simbólico que difieren solo en mayúsculas y minúsculas para que Git pueda escribir en uno u otro, pero no en ambos. Esta confusión puede ser utilizada para manipular a Git para que escriba un hook que se ejecutará mientras la operación de clonación aún se está ejecutando, sin dar al usuario la oportunidad de inspeccionar el código que se está ejecutando.

Ejecutión de código remoto al clonar repositorios locales especialmente diseñados (CVE-2024-32004, alto). En máquinas multiusuario, un atacante puede preparar un repositorio local para que parezca un clon parcial que falta un objeto, de modo que, cuando se clona este repositorio, Git ejecutará código arbitrario durante la operación con todos los permisos del usuario que realiza la clonación.

Las protecciones para clonar repositorios no confiables pueden ser eludidas (CVE-2024-32465, alto). Hay circunstancias en las que las correcciones para CVE-2024-32004 no son suficientes. Por ejemplo, al obtener un archivo .zip que contiene una copia completa de un repositorio Git, no debe confiarse por defecto que sea seguro, ya que, por ejemplo, los hooks podrían estar configurados para ejecutarse dentro del contexto de ese repositorio. El proyecto Git no recomienda obtener repositorios Git mediante archivos .zip que contengan una copia completa del espacio de trabajo y el directorio .git/ ¡! Dicho esto, la postura del proyecto Git es que tal repositorio no confiable puede "sanitizarse" clonándolo localmente, como se aclara en la documentación de Git como parte de esta versión. En tal escenario, Git es susceptible a las mismas manipulaciones que se describen en CVE-2024-32004.

Clonación de repositorio local por usuario no confiable permite que el usuario no confiable modifique objetos en el repositorio clonado a voluntad (CVE-2024-32020, bajo). Cuando el repositorio fuente y el objetivo residen en el mismo disco, los clones locales pueden terminar creando enlaces rígidos de archivos en la base de datos de objetos del repositorio objetivo. Si el repositorio fuente es propiedad de un usuario diferente, esto significa que esos archivos recién enlazados pueden ser reescritos en cualquier momento por ese otro usuario, lo que puede sorprender fácilmente a usuarios que no están familiarizados con este detalle de implementación de Git.

Clonación local puede crear enlaces rígidos de archivos legibles por el usuario arbitrarios en el directorio de objetos del nuevo repositorio (CVE-2024-32021, bajo). Al clonar un repositorio fuente local que contiene enlaces simbólicos, Git puede crear enlaces rígidos en el directorio objects/ a archivos arbitrarios en el mismo sistema de archivos que el repositorio objetivo. Esto puede ser utilizado en ataques sofisticados para manipular a Git para que escriba archivos fuera del espacio de trabajo de Git y fuera del directorio .git/.

Defensa en profundidad. No ha pasado desapercibido para el proyecto Git que ha habido un tema común en las vulnerabilidades que se han corregido en versiones anteriores de corrección de errores de seguridad, así como en esta: el soporte para submódulos parece estar involucrado, y los hooks escalan la severidad de las vulnerabilidades encontradas a alta o crítica.

En esta ocasión, por lo tanto, agregamos más cambios que no solo solucionan problemas de seguridad existentes, sino que también intentan reducir la gravedad de cualquier vulnerabilidad relacionada que pueda encontrarse en el futuro:

  • Git ha introducido varias mejoras de seguridad para proteger contra la ejecución remota de código (RCE), que es cuando un atacante podría potencialmente ejecutar código dañino en su computadora.
  • Estas actualizaciones incluyen un mejor manejo de enlaces simbólicos y directorios durante las operaciones de clonación para evitar que Git sea engañado para escribir archivos en lugares incorrectos.
  • Ahora Git tiene una forma más segura de ejecutar hooks, que son scripts que pueden ejecutarse automáticamente durante ciertas operaciones de Git. Esto ayuda a prevenir la ejecución de código no autorizado durante una clonación.
  • La configuración para el directorio de plantillas de Git, que podría influir en qué hooks se ejecutan durante una clonación, ahora está protegida para evitar cambios accidentales o malintencionados.
  • Además, Git ahora advertirá sobre enlaces simbólicos que apunten dentro del directorio .git/, lo cual podría ser un riesgo de seguridad. Los usuarios que deseen ser más cautelosos pueden configurar estas advertencias como errores.

Estos cambios son parte de los continuos esfuerzos de Git para mejorar la seguridad y garantizar que el proceso de clonación esté libre de vulnerabilidades potenciales.

Estas vulnerabilidades fueron encontradas y corregidas por varios colaboradores destacados de la comunidad Git. ¡Permanezcan seguros, manténganse actualizados y sigamos construyendo software asombroso juntos!

vía: Github Open Source


Volver a la Portada de Logo Paperblog