Multiple security vulnerabilities have been found in GitHub Desktop and other Git projects. If exploited, these could allow attackers to access a user’s Git credentials without permission.
“Git implements a protocol called Git Credential Protocol to retrieve credentials from the credential helper,” GMO Flatt Security researcher Ry0taK, who discovered the flaws, said in an analysis published Sunday. “Because of improper handling of messages, many projects were vulnerable to credential leakage in various ways.”
The list of identified vulnerabilities is as follows:
CVE-2025-23040 (CVSS score: 6.6) – Malicious URLs could cause credential leaks in GitHub Desktop
CVE-2024-50338 (CVSS score: 7.4) – Carriage-return in URLs can allow malicious repositories to expose credentials in Git Credential Manager.
CVE-2024-53263 (CVSS score: 8.5) – Git LFS can expose credentials through specially crafted URLs
CVE-2024-53858 (CVSS score: 6.5) – Recursive cloning in GitHub CLI can expose authentication tokens.
The credential helper should return credentials separated by newlines (“\n”). However, research shows that GitHub Desktop can be exploited through carriage return (“\r”) injection in a crafted URL, which may leak credentials to an attacker.
“Using a maliciously crafted URL it’s possible to cause the credential request coming from Git to be misinterpreted by Github Desktop such that it will send credentials for a different host than the host that Git is currently communicating with thereby allowing for secret exfiltration,” GitHub said in an advisory.
A vulnerability has been found in the Git Credential Manager NuGet package, which can expose credentials to unrelated hosts. Additionally, Git LFS does not check for embedded control characters, allowing for CRLF injection through crafted HTTP URLs.
On the other hand, the vulnerability impacting GitHub CLI takes advantage of the fact that the access token is configured to be sent to hosts other than github[.]com and ghe[.]com as long as the environment variables GITHUB_ENTERPRISE_TOKEN, GH_ENTERPRISE_TOKEN, and GITHUB_TOKEN are set, and CODESPACES is set to “true” in the case of the latter.
“While both enterprise-related variables are not common, the CODESPACES environment variable is always set to true when running on GitHub Codespaces,” Ry0taK said.
“So, cloning a malicious repository on GitHub Codespaces using GitHub CLI will always leak the access token to the attacker’s hosts.”
This could allow an attacker to use the leaked tokens to gain access to sensitive resources. The Git project has recognized the credential leak from carriage return smuggling as a separate vulnerability (CVE-2024-52006, CVSS score: 2.1) and fixed it in version v2.48.1.
“This vulnerability is related to CVE-2020-5260, but relies on behavior where single carriage return characters are interpreted by some credential helper implementations as newlines,” GitHub software engineer Taylor Blau said in a post about CVE-2024-52006.
The latest version fixes CVE-2024-50349 (CVSS score: 2.1), which could allow someone to create URLs with escape sequences to trick users into giving their credentials to other sites.
Users should update to the latest version to safeguard against vulnerabilities. If an immediate update isn’t possible, avoid using “git clone –recurse-submodules” on untrusted repositories. Additionally, refrain from using the credential helper and only clone publicly available repositories.