Hace poco se dio a conocer la publicación de diversas versiones correctivas del sistema de control de código fuente distribuido Git que abarcan desde la versión 2.38.4 a la versión 2.30.8, en los que se encuentran dos correcciones que eliminan las vulnerabilidades detectadas que afecta las optimizaciones de clones locales y el comando ‘git apply’.
Como tal, se menciona que estas versiones de mantenimiento son para abordar dos problemas de seguridad identificados bajoCVE-2023-22490 y CVE-2023-23946. Ambas vulnerabilidades afectan gamas de versiones existentes y se recomienda encarecidamente a los usuarios que realicen la actualización correspondiente.
«Un atacante puede explotar de forma remota una vulnerabilidad para detectar información. Además, un atacante puede explotar una vulnerabilidad localmente para manipular archivos.
Se requieren privilegios normales para explotar las vulnerabilidades. Ambas vulnerabilidades requieren la interacción del usuario«
La primera vulnerabilidad identificada es CVE-2023-22490, la cual permite que un atacante que controla el contenido de un repositorio clonado obtenga acceso a datos confidenciales en el sistema de un usuario. Dos defectos contribuyen a la aparición de la vulnerabilidad:
- La primera falla permite, cuando se trabaja con un repositorio especialmente diseñado, lograr el uso de optimizaciones de clonación local incluso cuando se usa un transporte que interactúa con sistemas externos.
- La segunda falla permite colocar un enlace simbólico en lugar del directorio $GIT_DIR/objects, similar a la vulnerabilidad CVE-2022-39253, en la que se bloqueó la ubicación de enlaces simbólicos en el directorio $GIT_DIR/objects, pero el hecho que el directorio $GIT_DIR/objects en sí mismo no se verificó puede ser un enlace simbólico.
En el modo de clonación local, git mueve $GIT_DIR/objects al directorio de destino eliminando las referencias de los enlaces simbólicos, lo que hace que los archivos a los que se hace referencia se copien directamente en el directorio de destino. Cambiar al uso de optimizaciones de clones locales para el transporte no local permite explotar una vulnerabilidad cuando se trabaja con repositorios externos (por ejemplo, la inclusión recursiva de submódulos con el comando ‘git clone –recurse-submodules’ puede conducir a la clonación de un repositorio malicioso empaquetado como un submódulo en otro repositorio).
«Usando un repositorio especialmente diseñado, se puede engañar a Git para que use su optimización de clones locales incluso cuando se utiliza un transporte no local.
Aunque Git cancelará los clones locales cuya fuente $GIT_DIR/objects directorio contiene enlaces simbólicos (cf, CVE-2022-39253), los objetos del directorio en sí pueden seguir siendo un enlace simbólico.
Estos dos pueden combinarse para incluir archivos arbitrarios basados en rutas en el sistema de archivos de la víctima dentro del repositorio malicioso y la copia de trabajo, lo que permite la exfiltración de datos de manera similar a CVE-2022-39253«
La segunda vulnerabilidad detectada es CVE-2023-23946 y esta permite sobrescribir el contenido de los archivos fuera del directorio de trabajo al pasar una entrada con formato especial al comando ‘git apply’.
Por ejemplo, se puede realizar un ataque cuando los parches preparados por un atacante se procesan en ‘git apply’. Para evitar que los parches creen archivos fuera de la copia de trabajo, ‘git apply’ bloquea el procesamiento de parches que intentan escribir un archivo usando enlaces simbólicos. Pero esta protección resultó ser eludida al crear un enlace simbólico en primer lugar.
«Fedora 36 y 37 tienen actualizaciones de seguridad en estado ‘testing’ que actualizan ‘git’ a la versión 2.39.2.
Las vulnerabilidades también se abordan con GitLab 15.8.2, 15.7.7 y 15.6.8 en Community Edition (CE) y Enterprise Edition (EE).
GitLab clasifica las vulnerabilidades como críticas porque CVE-2023-23946 permite la ejecución de código de programa arbitrario en el entorno Gitaly (servicio Git RPC).
Al mismo tiempo, Python incorporado se actualiza a la versión 3.9.16 para corregir más vulnerabilidades«