Git allows arbitrary code execution through broken config quoting
Git is a fast, scalable, distributed revision control system with an unusually rich command set that provides both high-level operations and full access to internals. When reading a config value, Git strips any trailing carriage return and line feed (CRLF). When writing a config entry, values with a trailing CR are not quoted, causing the CR to be lost when the config is later read. When initializing a submodule, if the submodule path contains a trailing CR, the altered path is read resulting in the submodule being checked out to an incorrect location. If a symlink exists that points the altered path to the submodule hooks directory, and the submodule contains an executable post-checkout hook, the script may be unintentionally executed after checkout. This vulnerability is fixed in v2.43.7, v2.44.4, v2.45.4, v2.46.4, v2.47.3, v2.48.2, v2.49.1, and v2.50.1.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2025-48384
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 2 Nov 2026, 22:35 UTC · Revision 1
Source evidence
Git allows arbitrary code execution through broken config quoting
core-osv · Original sourcePublished 8 Jul 2025, 18:23 UTC
Git is a fast, scalable, distributed revision control system with an unusually rich command set that provides both high-level operations and full access to internals. When reading a config value, Git strips any trailing carriage return and line feed (CRLF). When writing a config entry, values with a trailing CR are not quoted, causing the CR to be lost when the config is later read. When initializing a submodule, if the submodule path contains a trailing CR, the altered path is read resulting in the submodule being checked out to an incorrect location. If a symlink exists that points the altered path to the submodule hooks directory, and the submodule contains an executable post-checkout hook, the script may be unintentionally executed after checkout. This vulnerability is fixed in v2.43.7, v2.44.4, v2.45.4, v2.46.4, v2.47.3, v2.48.2, v2.49.1, and v2.50.1.
osv:CVE-2025-48384
Complete source record
{
"id": "264625336a947efdea058c103d0246609eaeeb2ced7cd6fa300eb2c88237867e",
"url": "https://osv.dev/vulnerability/CVE-2025-48384",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "Git allows arbitrary code execution through broken config quoting",
"summary": "Git is a fast, scalable, distributed revision control system with an unusually rich command set that provides both high-level operations and full access to internals. When reading a config value, Git strips any trailing carriage return and line feed (CRLF). When writing a config entry, values with a trailing CR are not quoted, causing the CR to be lost when the config is later read. When initializing a submodule, if the submodule path contains a trailing CR, the altered path is read resulting in the submodule being checked out to an incorrect location. If a symlink exists that points the altered path to the submodule hooks directory, and the submodule contains an executable post-checkout hook, the script may be unintentionally executed after checkout. This vulnerability is fixed in v2.43.7, v2.44.4, v2.45.4, v2.46.4, v2.47.3, v2.48.2, v2.49.1, and v2.50.1.",
"evidence": "osv:CVE-2025-48384",
"products": [],
"severity": "high",
"structured": {
"id": "CVE-2025-48384",
"aliases": [
"BIT-git-2025-48384",
"CVE-2025-48384",
"GHSA-vwqx-4fm8-6qc9"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:C/C:H/I:H/A:H"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/git-for-windows/git",
"type": "GIT",
"events": [
{
"introduced": "0"
},
{
"fixed": "9022eb323edaad8654d79b9d325d9429a53763d9"
},
{
"fixed": "4d32d83913170b86f9753fca10e75cdb2223d1cc"
},
{
"introduced": "cca1f38702730b35f52c29efd62864b85e85ddcc"
},
{
"fixed": "6cba5081d357807b9d132c68423ad561b7f153e2"
}
],
"database_specific": {
"extracted_events": [
{
"cpe": "cpe:2.3:a:git-scm:git:*:*:*:*:*:*:*:*",
"range": [
{
"introduced": "2.47.0"
},
{
"fixed": "2.47.3"
}
],
"source": "CPE_RANGE"
},
{
"cpe": "cpe:2.3:a:git-scm:git:*:*:*:*:*:*:*:*",
"range": [
{
"introduced": "2.50.0"
},
{
"fixed": "2.50.1"
}
],
"source": "CPE_RANGE"
},
{
"cpe": "cpe:2.3:a:git-scm:git:*:*:*:*:*:*:*:*",
"range": [
{
"introduced": "2.49.0"
},
{
"fixed": "2.49.1"
}
],
"source": "CPE_RANGE"
}
]
}
},
{
"repo": "https://github.com/git/git",
"type": "GIT",
"events": [
{
"introduced": "0"
},
{
"fixed": "7a1903ad46b5cc7524c0734a5034dccaec07209b"
},
{
"introduced": "3c2a3fdc388747b9eaf4a4a4f2035c1c9ddb26d0"
},
{
"fixed": "080b728d4b2bbdd2c0b9eb9ed6a41195f8303088"
},
{
"introduced": "786a3e4b8d754d2b14b1208b98eeb0a554ef19a8"
},
{
"fixed": "f94b90ad6e49cc7f15c4171c5a434aa459e82d2d"
},
{
"introduced": "39bf06adf96da25b87c9aa7d35a32ef3683eb4a4"
},
{
"fixed": "47d3b506d48b7971080f09770f5b06b42569c967"
},
{
"introduced": "777489f9e09c8d0dd6b12f9d90de6376330577a2"
},
{
"fixed": "a52a24e03c8c711f1d5e252fba78f9276908129b"
},
{
"introduced": "fbe8d3079d4a96aeb4e4529cc93cc0043b759a05"
},
{
"fixed": "fbae1f06cbb04a6592c32f465e9bc28149039358"
},
{
"introduced": "683c54c999c301c2cd6f715c411407c413b1d84e"
},
{
"fixed": "aadf8ae518afd80b73d49eff8aff475161aa5157"
},
{
"introduced": "16bd9f20a403117f2e0d9bcda6c6e621d3763e77"
},
{
"fixed": "d82adb61ba2fd11d8f2587fca1b6bd7925ce4044"
}
],
"database_specific": {
"extracted_events": [
{
"cpe": "cpe:2.3:a:git-scm:git:*:*:*:*:*:*:*:*",
"range": [
{
"introduced": "0"
},
{
"fixed": "2.43.7"
}
],
"source": "CPE_RANGE"
},
{
"cpe": "cpe:2.3:a:git-scm:git:*:*:*:*:*:*:*:*",
"range": [
{
"introduced": "2.44.0"
},
{
"fixed": "2.44.4"
}
],
"source": "CPE_RANGE"
},
{
"cpe": "cpe:2.3:a:git-scm:git:*:*:*:*:*:*:*:*",
"range": [
{
"introduced": "2.45.0"
},
{
"fixed": "2.45.4"
}
],
"source": "CPE_RANGE"
},
{
"cpe": "cpe:2.3:a:git-scm:git:*:*:*:*:*:*:*:*",
"range": [
{
"introduced": "2.46.0"
},
{
"fixed": "2.46.4"
}
],
"source": "CPE_RANGE"
},
{
"cpe": "cpe:2.3:a:git-scm:git:*:*:*:*:*:*:*:*",
"range": [
{
"introduced": "2.47.0"
},
{
"fixed": "2.47.3"
}
],
"source": "CPE_RANGE"
},
{
"cpe": "cpe:2.3:a:git-scm:git:*:*:*:*:*:*:*:*",
"range": [
{
"introduced": "2.48.0"
},
{
"fixed": "2.48.2"
}
],
"source": "CPE_RANGE"
},
{
"cpe": "cpe:2.3:a:git-scm:git:*:*:*:*:*:*:*:*",
"range": [
{
"introduced": "2.49.0"
},
{
"fixed": "2.49.1"
}
],
"source": "CPE_RANGE"
},
{
"cpe": "cpe:2.3:a:git-scm:git:*:*:*:*:*:*:*:*",
"range": [
{
"introduced": "2.50.0"
},
{
"fixed": "2.50.1"
}
],
"source": "CPE_RANGE"
}
]
}
}
],
"versions": [
"v2.50.0.windows.2",
"v2.50.0.windows.1",
"v2.49.0.windows.1",
"v2.47.1.windows.2",
"v2.47.1.windows.1",
"v2.41.0-rc0",
"v2.30.0-rc2",
"v2.27.0-rc1",
"v2.21.0",
"v2.22.0-rc0",
"v2.15.0",
"v2.17.0",
"v2.18.0",
"v2.19.0",
"v2.19.0-rc2",
"v2.19.0-rc1",
"v2.19.0-rc0",
"v2.18.0-rc2",
"v2.18.0-rc1",
"v2.18.0-rc0",
"v2.17.0-rc2",
"v2.17.0-rc1",
"v2.17.0-rc0",
"v2.16.0-rc0",
"v2.16.0",
"v2.16.0-rc1",
"v2.16.0-rc2",
"v2.15.0-rc2",
"v2.15.0-rc1",
"v2.15.0-rc0",
"v2.14.0",
"v2.14.0-rc1",
"v2.11.0",
"v2.12.0",
"v2.13.0",
"v2.14.0-rc0",
"v2.13.0-rc2",
"v2.13.0-rc1",
"v2.13.0-rc0",
"v2.10.0",
"v2.12.0-rc2",
"v2.12.0-rc1",
"v2.12.0-rc0",
"v2.11.0-rc3",
"v2.9.0",
"v2.11.0-rc2",
"v2.11.0-rc1",
"v2.11.0-rc0",
"v2.10.0-rc2",
"v2.10.0-rc1",
"v2.10.0-rc0",
"v2.7.0",
"v2.9.0-rc2",
"v2.8.0",
"v2.9.0-rc1",
"v2.9.0-rc0",
"v2.8.0-rc4",
"v2.8.0-rc1",
"v2.8.0-rc3",
"v2.8.0-rc2",
"v2.8.0-rc0",
"v2.6.0",
"v2.7.0-rc3",
"v2.4.0",
"v2.7.0-rc1",
"v2.7.0-rc2",
"v2.0.0",
"v2.7.0-rc0",
"v2.6.0-rc1",
"v2.6.0-rc3",
"v2.6.0-rc2",
"v2.5.0",
"v2.6.0-rc0",
"v2.2.0",
"v2.5.0-rc3",
"v2.5.0-rc0",
"v2.5.0-rc2",
"v2.5.0-rc1",
"v2.4.0-rc0",
"v2.4.0-rc3",
"v2.4.0-rc2",
"v2.4.0-rc1",
"v2.3.0",
"v2.3.0-rc2",
"v2.3.0-rc1",
"v2.3.0-rc0",
"v1.8.5",
"v2.2.0-rc1",
"v2.2.0-rc3",
"v2.2.0-rc2",
"v2.1.0",
"v2.2.0-rc0",
"v2.1.0-rc2",
"v2.1.0-rc1",
"v2.1.0-rc0",
"v1.9.0",
"v2.0.0-rc2",
"v2.0.0-rc4",
"v2.0.0-rc3",
"v2.0.0-rc1",
"v2.0.0-rc0",
"v1.9-rc0",
"v1.9.0-rc3",
"v1.9-rc2",
"v1.9-rc1",
"v1.8.5-rc3",
"v1.8.5-rc2",
"v1.8.5-rc0",
"v1.8.5-rc1",
"v1.8.4",
"v1.8.3",
"v1.8.4-rc4",
"v1.8.4-rc3",
"v1.8.4-rc2",
"v1.8.4-rc1",
"v1.8.4-rc0",
"v1.8.2",
"v1.8.1",
"v1.7.11",
"v1.8.3-rc0",
"v1.8.3-rc3",
"v1.8.3-rc2",
"v1.8.3-rc1",
"v1.8.2-rc3",
"v1.8.2-rc2",
"v1.8.2-rc1",
"v1.8.2-rc0",
"v1.8.0",
"v1.8.1-rc2",
"v1.8.1-rc3",
"v1.7.12",
"v1.7.9",
"v1.8.1-rc1",
"v1.8.1-rc0",
"v1.8.0-rc3",
"v1.8.0-rc2",
"v1.8.0-rc1",
"v1.8.0-rc0",
"v1.7.3",
"v1.7.12-rc3",
"v1.7.12-rc2",
"v1.7.11-rc1",
"v1.7.12-rc1",
"v1.7.12-rc0",
"v1.7.11-rc3",
"v1.7.11-rc0",
"v1.7.11-rc2",
"v1.7.10",
"v1.7.8",
"v1.7.10-rc3",
"v1.7.10-rc4",
"v1.7.10-rc2",
"v1.7.10-rc1",
"v1.7.10-rc0",
"v1.7.7",
"v1.7.9-rc2",
"v1.7.9-rc1",
"v1.7.9-rc0",
"v1.7.4",
"v1.7.5",
"v1.7.8-rc2",
"v1.7.8-rc4",
"v1.7.8-rc3",
"v1.7.0",
"v1.7.8-rc1",
"v1.7.6",
"v1.7.8-rc0",
"v1.7.7-rc1",
"v1.7.7-rc3",
"v1.7.7-rc2",
"v1.7.7-rc0",
"v1.6.0",
"v1.7.6-rc3",
"v1.7.6-rc2",
"v1.7.2-rc1",
"v1.7.6-rc1",
"v1.7.6-rc0",
"v1.6.6",
"v1.7.5-rc3",
"v1.7.5-rc2",
"v1.7.5-rc1",
"v1.7.5-rc0",
"v1.7.4-rc1",
"v1.7.4-rc3",
"v1.7.4-rc2",
"v1.7.4-rc0",
"v1.7.1",
"v1.7.3.1",
"v1.7.3-rc2",
"v1.7.3-rc1",
"v1.7.3-rc0",
"v1.7.2",
"v1.7.2-rc3",
"v1.7.2-rc2",
"v1.7.2-rc0",
"v1.7.1-rc2",
"v1.7.1-rc1",
"v1.7.1-rc0",
"v1.7.0-rc2",
"v1.6.3",
"v1.6.5",
"v1.7.0-rc1",
"v1.7.0-rc0",
"v1.6.6-rc1",
"v1.6.1-rc1",
"v1.6.6-rc4",
"v1.6.6-rc3",
"v1.6.6-rc2",
"v1.6.6-rc0",
"v1.6.5-rc3",
"v1.6.5-rc2",
"v1.6.5-rc1",
"v1.6.5-rc0",
"v1.6.4",
"v1.6.4-rc3",
"v1.6.4-rc2",
"v1.6.4-rc1",
"v1.6.4-rc0",
"v1.6.2",
"v1.6.3-rc4",
"v1.6.3-rc2",
"v1.6.3-rc1",
"v1.6.3-rc0",
"v1.6.3-rc3",
"v1.6.1",
"v1.6.2-rc2",
"v1.6.2-rc1",
"v1.6.2-rc0",
"v1.6.1-rc4",
"v1.6.1-rc3",
"v1.6.1-rc2",
"v1.6.0-rc3",
"v1.6.0-rc2",
"v1.6.0-rc1",
"v1.6.0-rc0",
"v1.5.6",
"v1.5.6-rc3",
"v1.5.6-rc2",
"v1.5.6-rc1",
"v1.5.6-rc0",
"v1.5.5",
"v1.5.5-rc3",
"v1.5.5-rc2",
"v1.5.5-rc1",
"v1.5.5-rc0",
"v1.5.4",
"v1.5.4-rc5",
"v1.5.4-rc4",
"v1.5.4-rc3",
"v1.5.4-rc2",
"v1.5.4-rc1",
"v1.5.4-rc0",
"v1.5.3.1",
"v1.5.3",
"v1.5.3-rc7",
"v1.5.3-rc6",
"v1.5.3-rc5",
"v1.5.3-rc4",
"v1.5.3-rc3",
"v1.5.3-rc2",
"v1.5.3-rc1",
"v1.5.3-rc0",
"v1.5.2",
"v1.5.2-rc3",
"v1.5.2-rc2",
"v1.5.2-rc1",
"v1.5.2-rc0",
"v1.5.1",
"v1.5.1-rc3",
"v1.5.1-rc2",
"v1.5.1-rc1",
"v1.5.0",
"v1.5.0-rc4",
"v1.5.0-rc2",
"v1.5.0-rc3",
"v1.5.0-rc1",
"v1.5.0-rc0",
"v1.4.4.1",
"v1.4.4",
"v1.4.4-rc2",
"v1.4.4-rc1",
"v1.4.3",
"v1.4.3-rc3",
"v1.4.3-rc2",
"v1.4.3-rc1",
"v1.4.2",
"v1.4.2-rc4",
"v1.4.2-rc3",
"v1.4.2-rc2",
"v1.4.2-rc1",
"v1.4.1",
"v1.4.1-rc2",
"v1.4.1-rc1",
"v1.3.0-rc1",
"v1.2.0",
"v1.1.0",
"v1.0.0",
"v1.0rc6",
"v0.99.9n",
"v1.0rc5",
"v0.99.9m",
"v1.0rc4",
"v0.99.9l",
"v0.99.9k",
"v1.0rc3",
"v0.99.9j",
"v1.0rc2",
"v0.99.9i",
"v1.0rc1",
"v0.99.9h",
"v0.99.9g",
"v0.99.9f",
"v0.99.9e",
"v0.99.9d",
"v0.99.9c",
"v0.99.9b",
"v0.99.9a",
"v0.99.8g",
"v0.99.8f",
"v0.99.8e",
"v0.99.8d",
"v0.99.8c",
"v0.99.8b",
"v0.99.8a",
"v0.99.8",
"v0.99.7",
"v0.99.6",
"v0.99.5",
"v0.99.4",
"v0.99.3",
"v0.99.2",
"v0.99.1",
"v0.99",
"v2.50.0",
"v2.33.0",
"v2.49.0",
"v2.48.0",
"v2.47.0",
"v2.48.1",
"v2.44.3",
"v2.47.2",
"v2.46.3",
"v2.45.3",
"v2.43.6",
"v2.47.1",
"v2.46.0",
"v2.46.2",
"v2.44.2",
"v2.43.5",
"v2.46.1",
"v2.45.0",
"v2.43.0",
"v2.44.0",
"v2.45.2",
"v2.45.1",
"v2.44.1",
"v2.43.4",
"v2.43.3",
"v2.43.2",
"v2.42.0",
"v2.43.0-rc1",
"v2.43.1",
"v2.43.0-rc2",
"v2.43.0-rc0",
"v2.41.0",
"v2.40.0",
"v2.42.0-rc0",
"v2.42.0-rc1",
"v2.42.0-rc2",
"v2.41.0-rc2",
"v2.41.0-rc1",
"v2.39.0-rc0",
"v2.40.0-rc2",
"v2.40.0-rc1",
"v2.40.0-rc0",
"v2.39.0",
"v2.39.0-rc1",
"v2.39.0-rc2",
"v2.38.0",
"v2.38.0-rc2",
"v2.38.0-rc1",
"v2.38.0-rc0",
"v2.37.0-rc0",
"v2.37.0",
"v2.36.0",
"v2.37.0-rc2",
"v2.37.0-rc1",
"v2.36.0-rc2",
"v2.36.0-rc1",
"v2.36.0-rc0",
"v2.32.0",
"v2.34.0",
"v2.35.0",
"v2.35.0-rc2",
"v2.35.0-rc1",
"v2.35.0-rc0",
"v2.30.0",
"v2.34.0-rc2",
"v2.34.0-rc1",
"v2.34.0-rc0",
"v2.33.0-rc1",
"v2.33.0-rc2",
"v2.33.0-rc0",
"v2.31.0",
"v2.32.0-rc3",
"v2.32.0-rc2",
"v2.32.0-rc1",
"v2.32.0-rc0",
"v2.31.0-rc2",
"v2.31.0-rc1",
"v2.31.0-rc0",
"v2.28.0",
"v2.27.0",
"v2.30.0-rc1",
"v2.30.0-rc0",
"v2.29.0",
"v2.29.0-rc2",
"v2.29.0-rc1",
"v2.29.0-rc0",
"v2.28.0-rc1",
"v2.28.0-rc2",
"v2.26.0",
"v2.28.0-rc0",
"v2.27.0-rc2",
"v2.27.0-rc0",
"v2.25.0",
"v2.24.0",
"v2.26.0-rc2",
"v2.26.0-rc1",
"v2.26.0-rc0",
"v2.25.0-rc2",
"v2.25.0-rc1",
"v2.25.0-rc0",
"v2.22.0",
"v2.23.0",
"v2.24.0-rc1",
"v2.24.0-rc2",
"v2.24.0-rc0",
"v2.23.0-rc2",
"v2.23.0-rc1",
"v2.23.0-rc0",
"v2.22.0-rc3",
"v2.22.0-rc2",
"v2.22.0-rc1",
"v2.20.0",
"v2.21.0-rc2",
"v2.21.0-rc1",
"v2.21.0-rc0",
"v2.20.0-rc2",
"v2.20.0-rc1",
"v2.20.0-rc0"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2025-48384.json"
}
}
],
"modified": "2026-10-28T02:30:23.923259911Z",
"provider": "osv",
"references": [
"https://lists.debian.org/debian-lts-announce/2025/10/msg00003.html",
"https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2025-48384",
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/48xxx/CVE-2025-48384.json",
"https://github.com/git/git/security/advisories/GHSA-vwqx-4fm8-6qc9",
"https://nvd.nist.gov/vuln/detail/CVE-2025-48384"
],
"provider_metadata": {
"cwe_ids": [
"CWE-436",
"CWE-59"
],
"cna_assigner": "GitHub_M",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/48xxx/CVE-2025-48384.json"
}
},
"related_cves": [
{
"value": "CVE-2025-48384",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 490596,
"published_at": "2025-07-08T18:23:48.71+00:00"
}