Se han publicado versiones corregidas del sistema de control de versiones distribuido Git 2.40.1, 2.39.3, 2.38.5, 2.37.7, 2.36.6, 2.35.8, 2.34.8, 2.33.8, 2.32.7, 2.31.8 y 2.30.9, en las que se han eliminado cinco vulnerabilidades. El seguimiento de las actualizaciones de los paquetes en las distribuciones se puede realizar en las páginas de Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch y FreeBSD. Como medida de mitigación para protegerse contra las vulnerabilidades, se recomienda evitar ejecutar el comando "git apply --reject" al trabajar con parches externos no verificados y verificar el contenido de $GIT_DIR/config antes de ejecutar los comandos "git submodule deinit", "git config --rename-section" y "git config --remove-section" al trabajar con repositorios no confiables.
La vulnerabilidad CVE-2023-29007 permite la sustitución de configuraciones en el archivo de configuración $GIT_DIR/config, que pueden ser utilizadas para ejecutar código en el sistema al especificar rutas a archivos ejecutables en las directivas core.pager, core.editor y core.sshCommand. La vulnerabilidad es causada por un error lógico que hace que los valores de configuración extremadamente largos puedan ser procesados como el inicio de una nueva sección durante las operaciones de renombrado o eliminación de secciones del archivo de configuración. En la práctica, se puede explotar esta vulnerabilidad especificando URLs de submódulos muy largas, que se guardan en el archivo $GIT_DIR/config durante la inicialización. Estas URLs pueden ser interpretadas como nuevas configuraciones al intentar eliminarlas mediante "git submodule deinit".
La vulnerabilidad CVE-2023-25652 permite sobrescribir el contenido de archivos fuera del árbol de trabajo al manejar parches especialmente diseñados con el comando "git apply --reject". Cuando se intenta ejecutar un parche malicioso que intenta escribir en un archivo a través de un enlace simbólico, la operación será rechazada. En Git 2.39.1, la protección contra manipulaciones mediante enlaces simbólicos se complementó con el bloqueo de parches que crean enlaces simbólicos e intentan realizar escrituras a través de ellos. La esencia de la vulnerabilidad en cuestión es que Git no tuvo en cuenta que un usuario podría ejecutar el comando "git apply --reject" para escribir las partes rechazadas del parche como archivos con la extensión ".rej", y un atacante podría utilizar esta oportunidad para escribir contenido en un directorio arbitrario, según lo permitan los permisos actuales.
Además, se han solucionado tres vulnerabilidades que solo se presentaban en la plataforma Windows: CVE-2023-29012 (búsqueda del ejecutable doskey.exe en el directorio de trabajo del repositorio al ejecutar el comando «Git CMD», lo que permite la ejecución de código propio en el sistema del usuario), CVE-2023-25815 (desbordamiento de búfer al procesar archivos de localización especialmente diseñados en gettext) y CVE-2023-29011 (posibilidad de reemplazar el archivo connect.exe al trabajar a través de SOCKS5).
Fuente: opennet.ru
