home / blog

2026-11-03 · high

CVE-2025-48384: Git submodule hook execution flaw

Git CRLF handling flaw enables unintended post-checkout hook execution in submodules via symlink. CVSS 8.0.

CVE-2025-48384: Git submodule hook execution flaw

Git CVE-2025-48384 is a vulnerability in the submodule initialization process that exploits a flaw in CRLF (carriage return line feed) handling. When Git reads a config value, it strips trailing CRLF; when it writes one, however, values with trailing CR are not properly quoted, causing the CR to be lost when read again. This behavior creates a discrepancy: a submodule path containing trailing CR is altered during checkout.

Rated CVSS 8.0, the vulnerability is classified as high. Concrete risk activates only under specific conditions: a symlink pointing the altered path to the submodule hooks directory, combined with an executable post-checkout hook present. If these elements align, the hook script is executed unintentionally, enabling arbitrary code execution. The flaw has been confirmed for some time; patches have been available from Git maintenance branches since 2025. Active research signals were detected on GitHub on November 3, 2026.

Administrators must first verify the Git version in production and CI/CD systems, updating to v2.50.1 or the correct version for the branch in use. Review submodule configurations and identify paths with non-printable characters or trailing CR. Check for anomalous symlinks in hook directories. Audit post-checkout hooks to identify unauthorized activity or suspicious code. Implement integrity checks on critical repositories and restrict access to submodule configuration.

Although the CVE dates to 2025 and patches have been available for some time, the persistence of unpatched systems remains a real risk in environments with slow patch cycles or complex deployments. Active research suggests this vulnerability continues to receive security community attention, making timely verification of update status important.

At a glance

What
Git CVE-2025-48384 is a vulnerability in CRLF path handling during submodule initialization. When Git writes a config entry with trailing CR, the value is not quoted; when read later, the CR is stripped, altering the path. If a submodule path contains trailing CR and a symlink points the altered path to the hooks directory, an executable post-checkout hook may be unintentionally executed.
Severity
CVSS 8.0 (high). Requires specific conditions: trailing CR in submodule path, existing symlink pointing to hooks directory, executable post-checkout hook. Potential impact is arbitrary code execution during submodule checkout.
Affected versions
All Git versions prior to: v2.43.7, v2.44.4, v2.45.4, v2.46.4, v2.47.3, v2.48.2, v2.49.1, v2.50.1.
Fix
Update Git to a corrected version: v2.43.7 or later in the 2.43 branch, v2.44.4 or later in the 2.44 branch, up to v2.50.1 or later in the 2.50 branch.
Status
Vulnerability confirmed and patches released since 2025. Active research signals detected on GitHub (MSRC research fixture, 2026-11-03).
Action
Verify Git version in production and CI/CD systems, update if necessary. Review submodule configurations for trailing CR characters. Identify anomalous symlinks in hook directories. Audit post-checkout hooks for unauthorized activity. Implement integrity checks on critical repositories.

Sources: NVD, CVE-2025-48384

← All articles