libgit2 — security advisory
libgit2 is a portable C implementation of the Git core methods provided as a linkable library with a solid API, allowing to build Git functionality into your application. Prior to 1.8.6 and 1.9.5, the built-in HTTP transport in src/libgit2/transports/http.c follows an offsite initial redirect, and handle_remote_auth and handle_auth pass transport->owner->url instead of transport->server.url to the credential callback when the redirected host returns 401 Unauthorized. A callback that scopes credentials to the original trusted URL can therefore return GIT_CREDENTIAL_USERPASS_PLAINTEXT credentials that libgit2 stores in transport->server.cred and sends as an Authorization header to the redirected host. An attacker who controls a trusted Git host or an open redirect on that host can disclose HTTP Basic credentials, personal access tokens, or equivalent credentials. This issue is fixed in versions 1.8.6 and 1.9.5.
- Products
- libgit2
- Affected versions
- 1.5.1+ds-1, 1.5.1+ds-1+deb12u1, 1.9.0+ds-2, 1.9.1+ds-1, 1.9.2+ds-1, 1.9.2+ds-2, 1.9.2+ds-3, 1.9.2+ds-4, 1.9.2+ds-5, 1.9.2+ds-6, 1.9.2+ds-7, 1.9.2+ds-8, 1.9.2+ds-9, 1.9.3+ds-1, 1.9.4+ds-1
- Fixed versions
- 1.5.1+ds-1+deb12u2, 1.9.0+ds-2+deb13u1, 1.9.6+ds-1
- CVEs
- CVE-2026-53586
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 1 Nov 2026, 17:41 UTC · Revision 1
Source evidence
libgit2 is a portable C implementation of the Git core methods provided as a linkable library with a solid API, allowing to build Git functionality into your application. Prior to 1.8.6 and 1.9.5, the built-in HTTP transport in src/libgit2/transports/http.c follows an offsite initial redirect, and handle_remote_auth and handle_auth pass transport->owner->url instead of transport->server.url to the credential callback when the redirected host returns 401 Unauthorized. A callback that scopes credentials to the original trusted URL can therefore return GIT_CREDENTIAL_USERPASS_PLAINTEXT credentials that libgit2 stores in transport->server.cred and sends as an Authorization header to the redirected host. An attacker who controls a trusted Git host or an open redirect on that host can disclose HTTP Basic credentials, personal access tokens, or equivalent credentials. This issue is fixed in versions 1.8.6 and 1.9.5.
osv:DEBIAN-CVE-2026-53586
libgit2
Fixed versions: 1.5.1+ds-1+deb12u2
libgit2
Fixed versions: 1.9.0+ds-2+deb13u1
libgit2
Fixed versions: 1.9.6+ds-1
Complete source record
{
"id": "b5446c68bccb633f9932e68ba3478509d754c783d2fb18b5d2b3403a536a02b6",
"url": "https://osv.dev/vulnerability/DEBIAN-CVE-2026-53586",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "DEBIAN-CVE-2026-53586",
"summary": "libgit2 is a portable C implementation of the Git core methods provided as a linkable library with a solid API, allowing to build Git functionality into your application. Prior to 1.8.6 and 1.9.5, the built-in HTTP transport in src/libgit2/transports/http.c follows an offsite initial redirect, and handle_remote_auth and handle_auth pass transport->owner->url instead of transport->server.url to the credential callback when the redirected host returns 401 Unauthorized. A callback that scopes credentials to the original trusted URL can therefore return GIT_CREDENTIAL_USERPASS_PLAINTEXT credentials that libgit2 stores in transport->server.cred and sends as an Authorization header to the redirected host. An attacker who controls a trusted Git host or an open redirect on that host can disclose HTTP Basic credentials, personal access tokens, or equivalent credentials. This issue is fixed in versions 1.8.6 and 1.9.5.",
"evidence": "osv:DEBIAN-CVE-2026-53586",
"products": [
{
"name": {
"value": "libgit2",
"evidence": "/affected/0/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "1.5.1+ds-1+deb12u2",
"evidence": "/affected/0/ranges"
}
],
"affected_versions": [
{
"value": "1.5.1+ds-1",
"evidence": "/affected/0/versions"
},
{
"value": "1.5.1+ds-1+deb12u1",
"evidence": "/affected/0/versions"
}
]
},
{
"name": {
"value": "libgit2",
"evidence": "/affected/1/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "1.9.0+ds-2+deb13u1",
"evidence": "/affected/1/ranges"
}
],
"affected_versions": [
{
"value": "1.9.0+ds-2",
"evidence": "/affected/1/versions"
}
]
},
{
"name": {
"value": "libgit2",
"evidence": "/affected/2/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "1.9.6+ds-1",
"evidence": "/affected/2/ranges"
}
],
"affected_versions": [
{
"value": "1.9.0+ds-2",
"evidence": "/affected/2/versions"
},
{
"value": "1.9.1+ds-1",
"evidence": "/affected/2/versions"
},
{
"value": "1.9.2+ds-1",
"evidence": "/affected/2/versions"
},
{
"value": "1.9.2+ds-2",
"evidence": "/affected/2/versions"
},
{
"value": "1.9.2+ds-3",
"evidence": "/affected/2/versions"
},
{
"value": "1.9.2+ds-4",
"evidence": "/affected/2/versions"
},
{
"value": "1.9.2+ds-5",
"evidence": "/affected/2/versions"
},
{
"value": "1.9.2+ds-6",
"evidence": "/affected/2/versions"
},
{
"value": "1.9.2+ds-7",
"evidence": "/affected/2/versions"
},
{
"value": "1.9.2+ds-8",
"evidence": "/affected/2/versions"
},
{
"value": "1.9.2+ds-9",
"evidence": "/affected/2/versions"
},
{
"value": "1.9.3+ds-1",
"evidence": "/affected/2/versions"
},
{
"value": "1.9.4+ds-1",
"evidence": "/affected/2/versions"
}
]
}
],
"severity": "medium",
"structured": {
"id": "DEBIAN-CVE-2026-53586",
"aliases": [
"DEBIAN-CVE-2026-53586"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N"
}
],
"affected": [
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "0"
},
{
"fixed": "1.5.1+ds-1+deb12u2"
}
]
}
],
"package": {
"name": "libgit2",
"purl": "pkg:deb/debian/libgit2?arch=source&distro=bookworm",
"ecosystem": "Debian:12"
},
"versions": [
"1.5.1+ds-1",
"1.5.1+ds-1+deb12u1"
],
"database_specific": {
"source": "https://storage.googleapis.com/debian-osv/debian-cve-osv/DEBIAN-CVE-2026-53586.json"
},
"ecosystem_specific": {
"urgency": "not yet assigned"
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "0"
},
{
"fixed": "1.9.0+ds-2+deb13u1"
}
]
}
],
"package": {
"name": "libgit2",
"purl": "pkg:deb/debian/libgit2?arch=source&distro=trixie",
"ecosystem": "Debian:13"
},
"versions": [
"1.9.0+ds-2"
],
"database_specific": {
"source": "https://storage.googleapis.com/debian-osv/debian-cve-osv/DEBIAN-CVE-2026-53586.json"
},
"ecosystem_specific": {
"urgency": "not yet assigned"
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "0"
},
{
"fixed": "1.9.6+ds-1"
}
]
}
],
"package": {
"name": "libgit2",
"purl": "pkg:deb/debian/libgit2?arch=source&distro=forky",
"ecosystem": "Debian:14"
},
"versions": [
"1.9.0+ds-2",
"1.9.1+ds-1",
"1.9.2+ds-1",
"1.9.2+ds-2",
"1.9.2+ds-3",
"1.9.2+ds-4",
"1.9.2+ds-5",
"1.9.2+ds-6",
"1.9.2+ds-7",
"1.9.2+ds-8",
"1.9.2+ds-9",
"1.9.3+ds-1",
"1.9.4+ds-1"
],
"database_specific": {
"source": "https://storage.googleapis.com/debian-osv/debian-cve-osv/DEBIAN-CVE-2026-53586.json"
},
"ecosystem_specific": {
"urgency": "not yet assigned"
}
}
],
"modified": "2026-10-27T09:47:32.100763219Z",
"provider": "osv",
"upstream": [
"CVE-2026-53586"
],
"references": [
"https://security-tracker.debian.org/tracker/CVE-2026-53586"
]
},
"related_cves": [
{
"value": "CVE-2026-53586",
"evidence": "/upstream"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 460986,
"published_at": "2026-08-20T19:16:54.983+00:00"
}