2024-09-15 02:03:16 +00:00

72 lines
7.3 KiB
JSON

{
"id": "CVE-2024-45405",
"sourceIdentifier": "security-advisories@github.com",
"published": "2024-09-06T13:15:05.830",
"lastModified": "2024-09-06T16:46:26.830",
"vulnStatus": "Awaiting Analysis",
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "`gix-path` is a crate of the `gitoxide` project (an implementation of `git` written in Rust) dealing paths and their conversions. Prior to version 0.10.11, `gix-path` runs `git` to find the path of a configuration file associated with the `git` installation, but improperly resolves paths containing unusual or non-ASCII characters, in rare cases enabling a local attacker to inject configuration leading to code execution. Version 0.10.11 contains a patch for the issue.\n\nIn `gix_path::env`, the underlying implementation of the `installation_config` and `installation_config_prefix` functions calls `git config -l --show-origin` to find the path of a file to treat as belonging to the `git` installation. Affected versions of `gix-path` do not pass `-z`/`--null` to cause `git` to report literal paths. Instead, to cover the occasional case that `git` outputs a quoted path, they attempt to parse the path by stripping the quotation marks. The problem is that, when a path is quoted, it may change in substantial ways beyond the concatenation of quotation marks. If not reversed, these changes can result in another valid path that is not equivalent to the original.\n\nOn a single-user system, it is not possible to exploit this, unless `GIT_CONFIG_SYSTEM` and `GIT_CONFIG_GLOBAL` have been set to unusual values or Git has been installed in an unusual way. Such a scenario is not expected. Exploitation is unlikely even on a multi-user system, though it is plausible in some uncommon configurations or use cases. In general, exploitation is more likely to succeed if users are expected to install `git` themselves, and are likely to do so in predictable locations; locations where `git` is installed, whether due to usernames in their paths or otherwise, contain characters that `git` quotes by default in paths, such as non-English letters and accented letters; a custom `system`-scope configuration file is specified with the `GIT_CONFIG_SYSTEM` environment variable, and its path is in an unusual location or has strangely named components; or a `system`-scope configuration file is absent, empty, or suppressed by means other than `GIT_CONFIG_NOSYSTEM`. Currently, `gix-path` can treat a `global`-scope configuration file as belonging to the installation if no higher scope configuration file is available. This increases the likelihood of exploitation even on a system where `git` is installed system-wide in an ordinary way. However, exploitation is expected to be very difficult even under any combination of those factors."
},
{
"lang": "es",
"value": "`gix-path` es un paquete del proyecto `gitoxide` (una implementaci\u00f3n de `git` escrita en Rust) que se ocupa de rutas y sus conversiones. Antes de la versi\u00f3n 0.10.11, `gix-path` ejecuta `git` para encontrar la ruta de un archivo de configuraci\u00f3n asociado con la instalaci\u00f3n de `git`, pero resuelve incorrectamente las rutas que contienen caracteres inusuales o que no son ASCII, lo que en casos excepcionales permite que un atacante local inyecte una configuraci\u00f3n que lleve a la ejecuci\u00f3n del c\u00f3digo. La versi\u00f3n 0.10.11 contiene un parche para el problema. En `gix_path::env`, la implementaci\u00f3n subyacente de las funciones `installation_config` e `installation_config_prefix` llama a `git config -l --show-origin` para encontrar la ruta de un archivo que se tratar\u00e1 como perteneciente a la instalaci\u00f3n de `git`. Las versiones afectadas de `gix-path` no pasan `-z`/`--null` para hacer que `git` informe las rutas literales. En cambio, para cubrir el caso ocasional en el que `git` genera una ruta entre comillas, intentan analizar la ruta quitando las comillas. El problema es que, cuando se entrecomilla una ruta, puede cambiar de manera sustancial m\u00e1s all\u00e1 de la concatenaci\u00f3n de comillas. Si no se revierten, estos cambios pueden dar como resultado otra ruta v\u00e1lida que no sea equivalente a la original. En un sistema de un solo usuario, no es posible explotar esto, a menos que `GIT_CONFIG_SYSTEM` y `GIT_CONFIG_GLOBAL` se hayan configurado con valores inusuales o Git se haya instalado de una manera inusual. Tal escenario no se espera. La explotaci\u00f3n es poco probable incluso en un sistema multiusuario, aunque es plausible en algunas configuraciones o casos de uso poco comunes. En general, es m\u00e1s probable que la explotaci\u00f3n tenga \u00e9xito si se espera que los usuarios instalen `git` ellos mismos, y es probable que lo hagan en ubicaciones predecibles; las ubicaciones donde est\u00e1 instalado `git`, ya sea debido a nombres de usuario en sus rutas o por cualquier otro motivo, contienen caracteres que `git` cita de forma predeterminada en las rutas, como letras que no est\u00e1n en ingl\u00e9s y letras acentuadas; se especifica un archivo de configuraci\u00f3n personalizado de \u00e1mbito `system` con la variable de entorno `GIT_CONFIG_SYSTEM`, y su ruta est\u00e1 en una ubicaci\u00f3n inusual o tiene componentes con nombres extra\u00f1os; o un archivo de configuraci\u00f3n de \u00e1mbito `system` est\u00e1 ausente, vac\u00edo o suprimido por medios distintos a `GIT_CONFIG_NOSYSTEM`. Actualmente, `gix-path` puede tratar un archivo de configuraci\u00f3n de \u00e1mbito `global` como perteneciente a la instalaci\u00f3n si no hay disponible un archivo de configuraci\u00f3n de \u00e1mbito superior. Esto aumenta la probabilidad de explotaci\u00f3n incluso en un sistema donde `git` est\u00e1 instalado en todo el sistema de forma normal. Sin embargo, se espera que la explotaci\u00f3n sea muy dif\u00edcil incluso bajo cualquier combinaci\u00f3n de esos factores."
}
],
"metrics": {
"cvssMetricV31": [
{
"source": "security-advisories@github.com",
"type": "Secondary",
"cvssData": {
"version": "3.1",
"vectorString": "CVSS:3.1/AV:L/AC:H/PR:L/UI:R/S:U/C:H/I:H/A:N",
"attackVector": "LOCAL",
"attackComplexity": "HIGH",
"privilegesRequired": "LOW",
"userInteraction": "REQUIRED",
"scope": "UNCHANGED",
"confidentialityImpact": "HIGH",
"integrityImpact": "HIGH",
"availabilityImpact": "NONE",
"baseScore": 6.0,
"baseSeverity": "MEDIUM"
},
"exploitabilityScore": 0.8,
"impactScore": 5.2
}
]
},
"weaknesses": [
{
"source": "security-advisories@github.com",
"type": "Secondary",
"description": [
{
"lang": "en",
"value": "CWE-41"
},
{
"lang": "en",
"value": "CWE-427"
}
]
}
],
"references": [
{
"url": "https://github.com/Byron/gitoxide/blob/1cfe577d461293879e91538dbc4bbfe01722e1e8/gix-path/src/env/git/mod.rs#L138-L142",
"source": "security-advisories@github.com"
},
{
"url": "https://github.com/Byron/gitoxide/commit/650a1b5cf25e086197cc55a68525a411e1c28031",
"source": "security-advisories@github.com"
},
{
"url": "https://github.com/Byron/gitoxide/security/advisories/GHSA-m8rp-vv92-46c7",
"source": "security-advisories@github.com"
}
]
}