CVE-2025-48384highunder attackCWE-436CWE-59

CVE-2025-48384: high-severity vulnerability in git

Git allows arbitrary code execution through broken config quoting

Published · Updated

E-mail alert when it lands in KEV, gets a public PoC or its score goes up.

73Vexday Risk Score

Prioritize patching. It under exploitation confirmed by CISA and has a public proof of concept.

ssvc Actcvss 8.1epss 4.4%
from disclosure to weaponsame day
Published on NVDJul 8
1st PoCJul 8
CISA KEV+48d
What the vendors declare (VEX)

Official vendor statements in CSAF/VEX format: whether their product is affected, already fixed, or ruled out — and why. These are the vendor's assertions, not Vexday's judgment.

Affected
2 products (14 components)
Red Hat Enterprise Linux 6 · Red Hat OpenShift Container Platform 4
workaround: To mitigate this issue, avoid using --recurse-submodules when cloning repositories from untrusted sources; instead, clone normally and only initialize or update submodules manually after reviewing them.
Fixed
27 products (587 components)
Red Hat Enterprise Linux AppStream (v. 8) · Red Hat Enterprise Linux AppStream (v. 9) · Red Hat Enterprise Linux AppStream E4S (v.8.6) · Red Hat Enterprise Linux AppStream E4S (v.9.0) · Red Hat Enterprise Linux AppStream E4S (v.9.2) · and others 22
Not affected
2 products (655 components) — because the vulnerable code is not present in the product
Red Hat OpenShift Container Platform 4.18 · Red Hat OpenShift Dev Spaces
Action required by CISAfederal deadline: 2025-09-15

Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.

In short

Git fails to properly quote config values with trailing carriage returns, causing submodules to be checked out to wrong locations. If a symlink redirects to Git hooks, an attacker could trick Git into executing malicious scripts during submodule setup.

Technical detail

When Git reads config values, it strips CRLF characters, but fails to quote values containing trailing CR on write, causing path misinterpretation during submodule initialization. An attacker can craft a repository with a submodule path containing trailing CR that, combined with a symlink pointing to the hooks directory, triggers unintended execution of post-checkout hooks. Requires user to clone a malicious repository or update submodules (CWE-436: Interpretation Conflict, CWE-59: Improper Link Resolution).

Summary generated and translated by AI from the official description.

The full analysis of this CVE is available in Portuguese →

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.
CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:C/C:H/I:H/A:H
Affected products
git · git
public PoCs found — 69
githubgithub.com/acheong08/CVE-2025-48384★ 52githubgithub.com/liamg/CVE-2025-48384★ 21githubgithub.com/zr0n/CVE-2025-48384-main★ 1githubgithub.com/IK-20211125/CVE-2025-48384★ 1githubgithub.com/zr0n/CVE-2025-48384-sub★ 1githubgithub.com/vinieger/vinieger-CVE-2025-48384-Dockerfile★ 1githubgithub.com/beishanxueyuan/CVE-2025-48384-test★ 1githubgithub.com/ppd520/CVE-2025-48384★ 0githubgithub.com/NigelX/CVE-2025-48384★ 0githubgithub.com/greatyy/CVE-2025-48384-p★ 0githubgithub.com/testdjshan/CVE-2025-48384★ 0githubgithub.com/altm4n/cve-2025-48384★ 0githubgithub.com/altm4n/cve-2025-48384-hub★ 0githubgithub.com/ECHO6789/CVE-2025-48384-submodule★ 0githubgithub.com/simplyfurious/CVE-2025-48384-submodule_test★ 0githubgithub.com/Anezatraa/CVE-2025-48384-submodule★ 0githubgithub.com/elprogramadorgt/CVE-2025-48384★ 0githubgithub.com/f1shh/CVE-2025-48384★ 0githubgithub.com/fluoworite/CVE-2025-48384★ 0githubgithub.com/fluoworite/CVE-2025-48384-sub★ 0githubgithub.com/beishanxueyuan/CVE-2025-48384★ 0githubgithub.com/replicatorbot/CVE-2025-48384★ 0githubgithub.com/replicatorbot/CVE-2025-48384-POC★ 0githubgithub.com/eliox01/CVE-2025-48384★ 0githubgithub.com/jacobholtz/CVE-2025-48384-poc★ 0githubgithub.com/jacobholtz/CVE-2025-48384-submodule★ 0githubgithub.com/butyraldehyde/CVE-2025-48384-PoC-Part2★ 0githubgithub.com/butyraldehyde/CVE-2025-48384-PoC★ 0githubgithub.com/arun1033/CVE-2025-48384★ 0githubgithub.com/s41r4j/CVE-2025-48384★ 0githubgithub.com/s41r4j/CVE-2025-48384-submodule★ 0githubgithub.com/p1026/CVE-2025-48384★ 0githubgithub.com/nguyentranbaotran/cve-2025-48384-poc★ 0githubgithub.com/admin-ping/CVE-2025-48384-RCE★ 0githubgithub.com/fishyyh/CVE-2025-48384★ 0githubgithub.com/kallydev/cve-2025-48384-hook★ 0githubgithub.com/fishyyh/CVE-2025-48384-POC★ 0githubgithub.com/liamg/CVE-2025-48384-submodule★ 0githubgithub.com/vignesh21-git/CVE-2025-48384★ 0githubgithub.com/vignesh21-git/CVE-2025-48384-submodule★ 0githubgithub.com/DayDayDayDreaming/backup-exec-cve-48384★ 0githubgithub.com/sathish46-lab/CVE-2025-48384-submodule★ 0githubgithub.com/Fomovet/cve-2025-48384★ 0vulncheckvulncheck.com/xdb/85ecac734ebaunverifiedvulncheckvulncheck.com/xdb/583eeb993f62unverifiedvulncheckvulncheck.com/xdb/696491bce452unverifiedvulncheckvulncheck.com/xdb/820b0dfc1e72unverifiedvulncheckvulncheck.com/xdb/e8327a39e5a8unverifiedvulncheckvulncheck.com/xdb/c44ed6b9f03bunverifiedvulncheckvulncheck.com/xdb/4b879217fcabunverifiedvulncheckvulncheck.com/xdb/a0f8a326d3daunverifiedvulncheckvulncheck.com/xdb/5e1fdf8f7625unverifiedvulncheckvulncheck.com/xdb/4e8aef84594cunverifiedvulncheckvulncheck.com/xdb/7af8ce70961bunverifiedvulncheckvulncheck.com/xdb/7144f44519e1unverifiedvulncheckvulncheck.com/xdb/524ca30fc382unverifiedvulncheckvulncheck.com/xdb/93bba35073c8unverifiedvulncheckvulncheck.com/xdb/fe9eebc482d0unverifiedvulncheckvulncheck.com/xdb/1f087a80ac05unverifiedvulncheckvulncheck.com/xdb/3f2582c2d65bunverifiedvulncheckvulncheck.com/xdb/072dd40624a7unverifiedvulncheckvulncheck.com/xdb/23fc2dbed681unverifiedvulncheckvulncheck.com/xdb/1b8612e9755bunverifiedvulncheckvulncheck.com/xdb/83191f028f8dunverifiedvulncheckvulncheck.com/xdb/a11e31566701unverifiedvulncheckvulncheck.com/xdb/4d2d6d214e95unverifiedvulncheckvulncheck.com/xdb/d7a347c87e0cunverifiedvulncheckvulncheck.com/xdb/3a7d4c49b3c9unverifiedvulncheckvulncheck.com/xdb/e40fcc37d9a0unverified
⚠ Public resources, to assess the exposure of systems you control or are authorized to test. Test only with authorization.