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.

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