GitPython es una librería de Python que posibilita la interacción con repositorios de Git.
Al resolver un programa, Python/Windows busca el directorio de trabajo actual y luego el entorno PATH. GitPython utiliza de forma predeterminada el comando git, por lo que si un usuario ejecuta GitPython desde un directorio que contiene un ejecutable git.exe o git, ese programa se ejecutará en lugar del que está en el PATH del usuario.
La vulnerabilidad identificada con código CVSS CVE-2023-40590 de nivel de riesgo 7.8, catalogada como Alta, podría permitir a un atacante crear un git ejecutable malicioso y engañar a un usuario para que lo descargue y ejecute GitPython desde el directorio que contiene el ejecutable malicioso.
Cabe destacar que esta vulnerabilidad se presenta en cómo Python interactúa solo con sistemas Windows.
Productos Afectados
- GitPython GitPython 3.1.32
Solución
- Actualmente, no existe una solución definitiva para usuarios de Windows.
Recomendaciones
Se recomiendan algunas medidas preventivas como:
- Establecer una ruta absoluta predeterminada para el programa git en Windows, por ejemplo, C:\\Program Files\\Git\\cmd\\git.EXE (la ruta predeterminada de instalación de git).
- Requerir que los usuarios configuren la variable de entorno GIT_PYTHON_GIT_EXECUTABLE en sistemas Windows.
- Destacar este problema en la documentación y aconsejar a los usuarios que eviten ejecutar GitPython desde repositorios no confiables, o que configuren la variable de entorno GIT_PYTHON_GIT_EXECUTABLE con una ruta absoluta.
- Se propone manejar la resolución del ejecutable manualmente, consultando solo la variable de entorno PATH.
Referencias
- https://securityonline.info/cve-2023-40590-gitpython-flaw-could-allow-attackers-to-execute-arbitrary-code-on-windows-systems/#google_vignette
- https://www.redpacketsecurity.com/gitpython-code-execution-cve-2023-40590/
- https://www.ramanean.com/cve-2023-40590-gitpython/
- https://nvd.nist.gov/vuln/detail/CVE-2023-40590