Se han publicado las versiones corregidas del sistema de control de versiones distribuido Git 2.45.1, 2.44.1, 2.43.4, 2.42.2, 2.41.1, 2.40.2 y 2.39.4, en las que se han solucionado cinco vulnerabilidades. La vulnerabilidad más grave (CVE-2024-32002), que se clasifica como crítica, permite que un atacante ejecute código cuando se clona un repositorio controlado por él mediante el comando «git clone».
La vulnerabilidad solo se presenta en sistemas de archivos que no distinguen entre mayúsculas y minúsculas y que admiten enlaces simbólicos, como los que se utilizan por defecto en Windows y macOS. La explotación se realiza al crear un submódulo de un directorio y un enlace simbólico que solo se diferencian en el caso de las letras, lo que permite escribir archivos en el directorio .git/, en lugar del directorio de trabajo del submódulo. Al obtener acceso de escritura en .git/, el atacante puede sobrescribir las llamadas de hooks a través de .git/hooks y lograr la ejecución de código arbitrario durante la operación de «git clone».
Otras vulnerabilidades:
- CVE-2024-32004 — en un sistema multiusuario, un atacante puede preparar un repositorio local malicioso y lograr que se ejecute código al clonarlo. En particular, el atacante puede crear un repositorio local que parezca un clon parcial, en el que falta un objeto específico. Clonar este repositorio provocará la ejecución de código con los privilegios del usuario que realiza la operación de clonación.
- CVE-2024-32465 — clonar archivos zip que contengan un repositorio git completo, incluidos los hooks en el directorio .git/, resultará en la ejecución de esos hooks.
- CVE-2024-32020 — crear clones locales de un repositorio en el mismo disco en un sistema multiusuario permite que otros usuarios modifiquen archivos que utilizan enlaces duros.
- CVE-2024-32021 — clonar un repositorio local con enlaces simbólicos puede usarse para crear enlaces duros a archivos arbitrarios en el directorio objects/.
Además de solucionar vulnerabilidades en las nuevas versiones, se han propuesto varios cambios enfocados en mejorar la protección contra vulnerabilidades que conducen a la ejecución remota de código y que manipulan enlaces simbólicos al realizar clonaciones. Por ejemplo, git ahora emite una advertencia si hay enlaces simbólicos en el directorio .git/. Las rutas a los submódulos ahora solo pueden contener directorios reales. Al cruzar enlaces simbólicos y directorios, se procesan los directorios. Se ha añadido una protección para evitar la ejecución de hooks durante la clonación y se han reforzado las verificaciones del parámetro core.hooksPath.
Fuente: opennet.ru
