Vulnerabilidad en Git (CVE-2022-41903)
Gravedad CVSS v3.1:
CRÍTICA
Tipo:
CWE-190
Desbordamiento o ajuste de enteros
Fecha de publicación:
17/01/2023
Última modificación:
27/12/2023
Descripción
Git es un sistema de control de revisiones distribuido. `git log` puede mostrar confirmaciones en un formato arbitrario usando sus especificadores `--format`. Esta funcionalidad también está expuesta a "git archive" a través del atributo git "export-subst". Al procesar los operadores de relleno, hay un desbordamiento de enteros en `pretty.c::format_and_pad_commit()` donde `size_t` se almacena incorrectamente como `int` y luego se agrega como un desplazamiento a `memcpy()`. Este desbordamiento puede ser desencadenado directamente por un usuario que ejecuta un comando que invoca la maquinaria de formato de commit (por ejemplo, `git log --format=...`). También se puede activar indirectamente a través del archivo git mediante el mecanismo export-subst, que expande los especificadores de formato dentro de los archivos dentro del repositorio durante un archivo git. Este desbordamiento de enteros puede dar lugar a escrituras arbitrarias en el almacenamiento dinámico, lo que puede dar lugar a la ejecución de código arbitrario. El problema ha sido solucionado en las versiones publicadas el 17-01-2023, remontándose a la v2.30.7. Se recomienda a los usuarios que actualicen. Los usuarios que no puedan actualizar deben desactivar "git archive" en repositorios que no sean de confianza. Si expone el archivo git a través de `git daemon`, desactívelo ejecutando `git config --global daemon.uploadArch false`.
Impacto
Puntuación base 3.x
9.80
Gravedad 3.x
CRÍTICA
Productos y versiones vulnerables
CPE | Desde | Hasta |
---|---|---|
cpe:2.3:a:git-scm:git:*:*:*:*:*:*:*:* | 2.30.6 (incluyendo) | |
cpe:2.3:a:git-scm:git:*:*:*:*:*:*:*:* | 2.31.0 (incluyendo) | 2.31.5 (incluyendo) |
cpe:2.3:a:git-scm:git:*:*:*:*:*:*:*:* | 2.32.0 (incluyendo) | 2.32.4 (incluyendo) |
cpe:2.3:a:git-scm:git:*:*:*:*:*:*:*:* | 2.33.0 (incluyendo) | 2.33.5 (incluyendo) |
cpe:2.3:a:git-scm:git:*:*:*:*:*:*:*:* | 2.34.0 (incluyendo) | 2.34.5 (incluyendo) |
cpe:2.3:a:git-scm:git:*:*:*:*:*:*:*:* | 2.35.0 (incluyendo) | 2.35.5 (incluyendo) |
cpe:2.3:a:git-scm:git:*:*:*:*:*:*:*:* | 2.36.0 (incluyendo) | 2.36.3 (incluyendo) |
cpe:2.3:a:git-scm:git:*:*:*:*:*:*:*:* | 2.37.0 (incluyendo) | 2.37.4 (incluyendo) |
cpe:2.3:a:git-scm:git:*:*:*:*:*:*:*:* | 2.38.0 (incluyendo) | 2.38.2 (incluyendo) |
cpe:2.3:a:git-scm:git:2.39.0:*:*:*:*:*:*:* |
Para consultar la lista completa de nombres de CPE con productos y versiones, ver esta página
Referencias a soluciones, herramientas e información
- https://git-scm.com/book/en/v2/Customizing-Git-Git-Attributes#_export_subst
- https://git-scm.com/docs/pretty-formats#Documentation/pretty-formats.txt-emltltNgttruncltruncmtruncem
- https://github.com/git/git/commit/508386c6c5857b4faa2c3e491f422c98cc69ae76
- https://github.com/git/git/security/advisories/GHSA-475x-2q3q-hvwq
- https://security.gentoo.org/glsa/202312-15