gix-path improperly resolves configuration path reported by Git
Key facts
- Attack vector
- Local
- Privileges required
- Low
- User interaction
- Required
- Attack complexity
- High
- Impact type
- Code execution
- Confidentiality · integrity · availability
- High · High · None
- Fix status
- Fixed
Attack profile from CVSS 3.1 · CNA. Fix status from CNA and GitHub. Impact type from CWE-427.
Summary
`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. In `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. On 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.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- Poc
- Automatable
- No
- Technical impact
- Total
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| Byron | gitoxide | before 0.10.11 | 0.10.11 | Patch available | CNA |
| — | gix-path (crates.io) | before 0.10.11 | 0.10.11 | Patch available | GHSA-m8rp-vv92-46c7 |
- gitoxide VendorByron Affected before 0.10.11 Fixed in 0.10.11 Patch available CNA
- gix-path (crates.io) Vendor— Affected before 0.10.11 Fixed in 0.10.11 Patch available GHSA-m8rp-vv92-46c7
Remediation
- Fix · CNA gitoxide (Byron) Fixed in 0.10.11
- Fix · GHSA-m8rp-vv92-46c7 gix-path (crates.io) Fixed in 0.10.11 Advisory →
Vendor assessments
Timeline
- 2026-10-02 Threatist record created from CVE-2024-45405
- 2026-10-03 Alias added: GHSA-m8rp-vv92-46c7
References
Other 5
- https://github.com/Byron/gitoxide/security/advisories/GHSA-m8rp-vv92-46c7
- https://github.com/Byron/gitoxide/commit/650a1b5cf25e086197cc55a68525a411e1c28031
- https://github.com/Byron/gitoxide/blob/1cfe577d461293879e91538dbc4bbfe01722e1e8/gix-path/src/env/git/mod.rs#L138-L142
- https://github.com/Byron/gitoxide
- https://rustsec.org/advisories/RUSTSEC-2024-0371.html
More Byron vulnerabilities
- TI-2024-23260 gix traversal outside working tree enables arbitrary code execution CVSS 3.1HIGH 8.8
- TI-2024-27055 gitoxide's gix-path can use a fake program files location CVSS 3.1MEDIUM 6.8
- TI-2024-21756 gix-transport indirect code execution via malicious username CVSS 3.1MEDIUM 6.4
- TI-2024-23269 gix refs and paths with reserved Windows device names access the devices CVSS 3.1MEDIUM 5.4
- TI-2024-30376 gix-path uses local config across repos when it is the highest scope CVSS 3.1LOW 2.5
- TI-2024-29380 gitoxide-core does not neutralize special characters for terminals CVSS 3.1LOW 2.5
Sources
- CVE-2024-45405 · CVE Program
- CVE-2024-45405 · NVD
- FIRST EPSS
- GHSA-m8rp-vv92-46c7 · GitHub Advisory Database · CC BY 4.0
- CVE-2024-45405 · Red Hat security data · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences