curl and git: small tools, big security updates

Updated November 2026

curl and git look like simple command-line tools, but libcurl is loaded by many long-running services and git runs on every build server that clones code. Update both through your package manager, then restart services that use libcurl. Git needs no restart.

What they are and where they hide

curl is the command-line tool for transferring data over HTTP, FTP, SFTP and many other protocols. Its engine is the library libcurl, which other software links to: PHP’s curl extension, git’s HTTPS transport, package managers, monitoring agents and many language bindings. The curl project itself warns that libcurl is often embedded in applications without being obviously identified. Updating the curl command alone is not enough; the library package must be updated too, and programs that already loaded the old library keep using it.

git is the version control system. On servers it runs in deploy scripts, CI runners, Git hosting and configuration management. Many git vulnerabilities trigger when you clone or check out a repository someone else controls, which is exactly what build servers do all day.

Check the installed versions

curl --version | head -1
git --version

# Debian, Ubuntu
dpkg-query -W curl 'libcurl4*' git

# RHEL family, Fedora, SUSE
rpm -qa 'curl*' 'libcurl*' 'git*'

# Alpine
apk info -v | grep -E '^(curl|libcurl|git)-'

# FreeBSD
pkg info curl git

The first line of curl --version shows both the tool and the libcurl version it uses. Package names differ: recent Debian and Ubuntu releases call the library libcurl4t64, older ones libcurl4; on RHEL-family systems you may see curl-minimal and libcurl-minimal instead of curl and libcurl. As with any distribution package, a fixed CVE may be backported into an older upstream version, so compare against your distribution’s tracker, not the upstream release number (see backport). More on this in Check installed versions.

To find running processes that still have an old, deleted libcurl loaded after an update:

sudo lsof -n 2>/dev/null | grep DEL | grep libcurl

Upstream releases, as of November 2026

Recent curl and git releases
ProjectVersionDateNotes
curl8.23.02026-10-14Latest; no known vulnerabilities at the time of writing
curl8.22.02026-09-0221 known vulnerabilities, all fixed in 8.23.0
curl8.21.02026-06-2433 known vulnerabilities
git2.56.02026-09-28Latest source release

curl releases come roughly every six to ten weeks; the next one is planned for 2026-12-09. Neither project publishes end-of-life dates for old versions. Git usually ships a security fix for several older release series at once: the July 2025 fix for CVE-2025-48384 came out as 2.43.7, 2.44.4, 2.45.4, 2.46.4, 2.47.3, 2.48.2, 2.49.1 and 2.50.1. Recent curl advisories likewise list fixed patch versions on some older branches.

Distribution packages vs upstream

Use your distribution’s packages on servers. Stable distributions keep one curl and one git version for the life of a release and backport security fixes into it, which avoids surprises from new behavior. The git website notes that Red Hat Enterprise Linux and related distributions “typically ship older versions of git”; that is fine for security as long as you install the vendor updates.

If you need a newer git on Ubuntu, the git project’s download page points to the ppa:git-core/ppa PPA. A PPA or self-built version becomes your responsibility to keep updated. Building curl from source is rarely worth it on a server: you would also have to rebuild or relink everything that uses libcurl.

Update commands

# Debian, Ubuntu (all pending updates, including curl, libcurl and git)
sudo apt update
sudo apt upgrade

# RHEL, AlmaLinux, Rocky, Oracle Linux, Fedora
sudo dnf upgrade 'curl*' 'libcurl*' 'git*'

# SUSE, openSUSE
sudo zypper refresh
sudo zypper update curl 'libcurl*' 'git*'

# Alpine (as root)
apk -U upgrade

# FreeBSD (as root)
pkg update
pkg upgrade curl git

# Ubuntu with the git-core PPA
sudo add-apt-repository ppa:git-core/ppa
sudo apt update
sudo apt install git

For container images, update the base image and rebuild; running apt upgrade inside a running container is lost on the next deploy. See Containers.

What to restart

sudo needrestart -r l              # Debian, Ubuntu
sudo dnf needs-restarting -s       # RHEL family, Fedora
sudo zypper ps -s                  # SUSE

# example: restarts PHP-FPM (the unit name depends on your PHP version)
sudo systemctl restart php8.4-fpm

Test service configuration first where the service supports it (for example sudo php-fpm8.4 -t on Debian-style packages). See Restarts and reboots for details.

Verify

Notable recent vulnerabilities

Selected curl and git issues
ProjectIssueAffectedFixed
curlCVE-2026-92392: HTTP/2 upload use-after-free (a memory bug where freed memory is used again; severity high). The advisory says it could be turned into code execution by a malicious server under specific conditions.8.12.0 to 8.22.0, libcurl and the tool8.23.0 (2026-10-14)
curl20 lower-severity issues fixed in the same release, including credential leaks to proxies and redirected origins, and connection reuse mix-upsUp to 8.22.08.23.0
gitCVE-2025-48384: a submodule path ending in a carriage return could make a cloned repository run a hook (severity high)2.50.0 and earlier releases in each series2.43.7 to 2.50.1 (July 2025)
gitArbitrary file writes via bundle-uri parameter injection (high), published the same daySee advisoryJuly 2025 releases
gitSideband payload passed unfiltered to the terminal (high, January 2025)2.48.1 and earlierOnly Git for Windows 2.47.1(2) at publication; the core fix was still under discussion

If you cannot update at once, use a mitigation: the git advisory’s workaround for CVE-2025-48384 is to avoid recursive clones of submodules from untrusted repositories, and the curl advisory for CVE-2026-92392 suggests avoiding HTTP/2 (for example curl --http1.1). See also the vulnerability list.

Where advisories are published

Safe-use tips

Sources