Cloudanix VulnDB

CVE-2025-48385

None

CVSS

—

EPSS

1.1%

Published

Jul 8, 2025

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

A problem in the Git tool could let a malicious code repository trick your computer into running attacker-chosen commands when you download the project.

Exploitation
Requires User Interaction
Attacker needs
User Interaction
Complexity
Moderate
Impact
Remote Code Execution
Component
Application
Class
Improper Input Validation
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

Insufficient validation of advertised bundle URIs during Git clone operations allows a remote server to perform protocol injection, causing the client to write attacker-controlled bundle content to an arbitrary filesystem location under the adversary's control, which can result in arbitrary code execution.

Why it matters to the business

Successful exploitation can lead to arbitrary code execution on developer workstations during repository cloning operations, enabling supply-chain compromise, credential theft, or persistent malware in source-code environments; the issue has been public for over a year with low but rising exploit probability.

How an attack unfolds

An attacker hosts a malicious Git server that advertises a crafted bundle URI. When a victim performs a clone (potentially after social engineering or via recursive submodule clones), the client fetches the bundle without adequate validation. Protocol injection writes the attacker-controlled content to a location chosen by the adversary, achieving code execution. The vulnerability is known as the Git Link Following Vulnerability.

How to fix it

Upgrade Git to one of the fixed versions: v2.43.7, v2.44.4, v2.45.4, v2.46.4, v2.47.3, v2.48.2, v2.49.1, or v2.50.1. Disable the bundle.heuristic configuration option and avoid recursive clones with submodules where possible.

How to confirm the fix worked

Verify installed Git version is at or above a fixed release; confirm bundle.heuristic is disabled in global and repository configs; test cloning a repository that advertises bundles to ensure no unexpected file writes occur outside the intended clone directory.

Typical attack path

  1. Attacker configures a malicious Git remote that advertises a bundle URI via the bundle.heuristic mechanism
  2. Victim is induced to clone the repository (via social engineering or recursive submodule clone)
  3. Git client fetches the advertised bundle without sufficient validation
  4. Protocol injection causes the fetched bundle to be written to an adversary-controlled filesystem path
  5. Execution of attacker-supplied content results in arbitrary code execution on the client

How to detect it

Review Git client logs for unexpected bundle-uri fetch operations or protocol commands; inspect filesystem artifacts written outside expected clone directories during clone operations; correlate with process execution of git immediately following network activity to external repositories.

  • bundle-uri
  • bundle.heuristic
  • git clone.*--recursive

What your security team should do

  • Immediately upgrade all developer and CI/CD systems to a fixed Git version
  • Audit and disable bundle.heuristic where not required
  • Disable recursive submodule clones in organizational policies and tooling
  • Monitor internal package repositories and developer workstations for outdated Git binaries

The record

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 cloning a repository Git knows to optionally fetch a bundle advertised by the remote server, which allows the server-side to offload parts of the clone to a CDN. The Git client does not perform sufficient validation of the advertised bundles, which allows the remote side to perform protocol injection. This protocol injection can cause the client to write the fetched bundle to a location controlled by the adversary. The fetched content is fully controlled by the server, which can in the worst case lead to arbitrary code execution. The use of bundle URIs is not enabled by default and can be controlled by the bundle.heuristic config option. Some cases of the vulnerability require that the adversary is in control of where a repository will be cloned to. This either requires social engineering or a recursive clone with submodules. These cases can thus be avoided by disabling recursive clones. 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.

Affected packages

Ecosystem Package Introduced Fixed
AlmaLinux:10 git 0 2.47.3-1.el10_0
AlmaLinux:10 git-all 0 2.47.3-1.el10_0
AlmaLinux:10 git-core 0 2.47.3-1.el10_0
AlmaLinux:10 git-core-doc 0 2.47.3-1.el10_0
AlmaLinux:10 git-credential-libsecret 0 2.47.3-1.el10_0
AlmaLinux:10 git-daemon 0 2.47.3-1.el10_0
AlmaLinux:10 git-email 0 2.47.3-1.el10_0
AlmaLinux:10 git-gui 0 2.47.3-1.el10_0
AlmaLinux:10 git-instaweb 0 2.47.3-1.el10_0
AlmaLinux:10 git-subtree 0 2.47.3-1.el10_0
AlmaLinux:10 git-svn 0 2.47.3-1.el10_0
AlmaLinux:10 gitk 0 2.47.3-1.el10_0
AlmaLinux:10 gitweb 0 2.47.3-1.el10_0
AlmaLinux:10 perl-Git 0 2.47.3-1.el10_0
AlmaLinux:10 perl-Git-SVN 0 2.47.3-1.el10_0
AlmaLinux:8 git 0 2.43.7-1.el8_10
AlmaLinux:8 git-all 0 2.43.7-1.el8_10
AlmaLinux:8 git-core 0 2.43.7-1.el8_10
AlmaLinux:8 git-core-doc 0 2.43.7-1.el8_10
AlmaLinux:8 git-credential-libsecret 0 2.43.7-1.el8_10
AlmaLinux:8 git-daemon 0 2.43.7-1.el8_10
AlmaLinux:8 git-email 0 2.43.7-1.el8_10
AlmaLinux:8 git-gui 0 2.43.7-1.el8_10
AlmaLinux:8 git-instaweb 0 2.43.7-1.el8_10
AlmaLinux:8 git-subtree 0 2.43.7-1.el8_10
AlmaLinux:8 git-svn 0 2.43.7-1.el8_10
AlmaLinux:8 gitk 0 2.43.7-1.el8_10
AlmaLinux:8 gitweb 0 2.43.7-1.el8_10
AlmaLinux:8 perl-Git 0 2.43.7-1.el8_10
AlmaLinux:8 perl-Git-SVN 0 2.43.7-1.el8_10
AlmaLinux:9 git 0 2.47.3-1.el9_6
AlmaLinux:9 git-all 0 2.47.3-1.el9_6
AlmaLinux:9 git-core 0 2.47.3-1.el9_6
AlmaLinux:9 git-core-doc 0 2.47.3-1.el9_6
AlmaLinux:9 git-credential-libsecret 0 2.47.3-1.el9_6
AlmaLinux:9 git-daemon 0 2.47.3-1.el9_6
AlmaLinux:9 git-email 0 2.47.3-1.el9_6
AlmaLinux:9 git-gui 0 2.47.3-1.el9_6
AlmaLinux:9 git-instaweb 0 2.47.3-1.el9_6
AlmaLinux:9 git-subtree 0 2.47.3-1.el9_6
AlmaLinux:9 git-svn 0 2.47.3-1.el9_6
AlmaLinux:9 gitk 0 2.47.3-1.el9_6
AlmaLinux:9 gitweb 0 2.47.3-1.el9_6
AlmaLinux:9 perl-Git 0 2.47.3-1.el9_6
AlmaLinux:9 perl-Git-SVN 0 2.47.3-1.el9_6
Alpine:v3.19 git 0 2.43.7-r0
Alpine:v3.20 git 0 2.45.4-r0
Alpine:v3.21 git 0 2.47.3-r0
Alpine:v3.22 git 0 2.49.1-r0
Bitnami git 0 2.50.1
Debian:11 git 0 No fix
Debian:12 git 0 No fix
Debian:13 git 0 No fix
Debian:14 git 0 1:2.50.1-0.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 git 0 2.51.0-150600.3.12.1
SUSE:Linux Enterprise Module for Basesystem 15 SP7 git 0 2.51.0-150600.3.12.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 git 0 2.51.0-150600.3.12.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 git-lfs 0 3.7.0-150600.13.3.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 obs-scm-bridge 0 0.7.4-150600.14.4.1
SUSE:Linux Enterprise Module for Development Tools 15 SP7 git 0 2.51.0-150600.3.12.1
SUSE:Linux Enterprise Module for Development Tools 15 SP7 git-lfs 0 3.7.0-150600.13.3.1
SUSE:Linux Enterprise Module for Development Tools 15 SP7 obs-scm-bridge 0 0.7.4-150600.14.4.1
SUSE:Linux Enterprise Module for Python 3 15 SP6 python-PyYAML 0 6.0.2-150600.10.3.1
SUSE:Linux Enterprise Module for Python 3 15 SP7 python-PyYAML 0 6.0.2-150600.10.3.1
openSUSE:Leap 15.6 git 0 2.51.0-150600.3.12.1
openSUSE:Leap 15.6 git-lfs 0 3.7.0-150600.13.3.1
openSUSE:Leap 15.6 obs-scm-bridge 0 0.7.4-150600.14.4.1
openSUSE:Leap 15.6 python-PyYAML 0 6.0.2-150600.10.3.1
openSUSE:Tumbleweed git 0 2.50.1-1.1

Related vulnerabilities