Critical
Security advisory
An issue was discovered in libgit2 before 0.28.4 and 0.9x before 0.99.0. checkout.c mishandles equivalent filenames that exist because of NTFS short names. This may allow remote code execution when cloning a repository. This issue is similar to CVE-2019-1353.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2020-12279
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 31 Oct 2026, 12:29 UTC · Revision 1
Source evidence
An issue was discovered in libgit2 before 0.28.4 and 0.9x before 0.99.0. checkout.c mishandles equivalent filenames that exist because of NTFS short names. This may allow remote code execution when cloning a repository. This issue is similar to CVE-2019-1353.
osv:CVE-2020-12279
Complete source record
{
"id": "d0496e43a5b658cc9d9103412d3d723b99610649660862fd96e57aebc3130fa4",
"url": "https://osv.dev/vulnerability/CVE-2020-12279",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "CVE-2020-12279",
"summary": "An issue was discovered in libgit2 before 0.28.4 and 0.9x before 0.99.0. checkout.c mishandles equivalent filenames that exist because of NTFS short names. This may allow remote code execution when cloning a repository. This issue is similar to CVE-2019-1353.",
"evidence": "osv:CVE-2020-12279",
"products": [],
"severity": "critical",
"structured": {
"id": "CVE-2020-12279",
"aliases": [
"CVE-2020-12279",
"GHSA-589j-mmg9-733v"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/libgit2/libgit2",
"type": "GIT",
"events": [
{
"introduced": "0"
},
{
"fixed": "106a5f27586504ea371528191f0ea3aac2ad432b"
},
{
"fixed": "64c612cc3e25eff5fb02c59ef5a66ba7a14751e4"
},
{
"fixed": "172239021f7ba04fe7327647b213799853a9eb89"
}
],
"database_specific": {
"extracted_events": [
{
"cpe": "cpe:2.3:a:libgit2:libgit2:*:*:*:*:*:*:*:*",
"range": [
{
"introduced": "0"
},
{
"fixed": "0.28.4"
}
],
"source": "CPE_RANGE"
},
{
"range": [
{
"fixed": "64c612cc3e25eff5fb02c59ef5a66ba7a14751e4"
}
],
"source": "REFERENCES_COMMIT"
},
{
"range": [
{
"fixed": "106a5f27586504ea371528191f0ea3aac2ad432b"
}
],
"source": "REFERENCES_TAG",
"original_tag": "v0.28.4"
},
{
"range": [
{
"fixed": "172239021f7ba04fe7327647b213799853a9eb89"
}
],
"source": "REFERENCES_TAG",
"original_tag": "v0.99.0"
}
]
}
}
],
"versions": [
"v0.28.3",
"v0.28.2",
"v0.28.1",
"v0.28.0-rc1",
"v0.28.0",
"v0.27.0",
"v0.27.0-rc3",
"v0.26.0-rc2",
"v0.26.0",
"v0.27.0-rc1",
"v0.27.0-rc2",
"v0.26.0-rc1",
"v0.24.0",
"v0.24.0-rc1",
"v0.23.0",
"v0.23.0-rc2",
"v0.23.0-rc1",
"v0.22.0",
"v0.22.0-rc2",
"v0.22.0-rc1",
"v0.21.0",
"v0.18.0",
"v0.17.0",
"v0.16.0",
"v0.15.0",
"v0.14.0",
"v0.13.0",
"v0.12.0",
"v0.11.0",
"v0.10.0",
"v0.8.0",
"v0.3.0",
"v0.2.0",
"v0.1.0"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2020-12279.json",
"vanir_signatures": [
{
"id": "CVE-2020-12279-18c21614",
"digest": {
"length": 109,
"function_hash": "54554569915003734768761110712720175172"
},
"source": "https://github.com/libgit2/libgit2/commit/64c612cc3e25eff5fb02c59ef5a66ba7a14751e4",
"target": {
"file": "tests/checkout/nasty.c",
"function": "test_checkout_nasty__git_tilde1"
},
"deprecated": false,
"signature_type": "Function",
"signature_version": "v1"
},
{
"id": "CVE-2020-12279-577666bb",
"digest": {
"threshold": 0.9,
"line_hashes": [
"34151097703912068279059189515774524754",
"640971338307182747042490539310138101",
"261090504824042527251622828911835319539",
"190820267254834495437436494656192599698",
"109452042279548290592481542638704603152",
"183873679057880809488074463187073290050"
]
},
"source": "https://github.com/libgit2/libgit2/commit/64c612cc3e25eff5fb02c59ef5a66ba7a14751e4",
"target": {
"file": "tests/checkout/nasty.c"
},
"deprecated": false,
"signature_type": "Line",
"signature_version": "v1"
},
{
"id": "CVE-2020-12279-9b82710e",
"digest": {
"length": 636,
"function_hash": "270919345757994032373988505154932358300"
},
"source": "https://github.com/libgit2/libgit2/commit/64c612cc3e25eff5fb02c59ef5a66ba7a14751e4",
"target": {
"file": "src/checkout.c",
"function": "checkout_verify_paths"
},
"deprecated": false,
"signature_type": "Function",
"signature_version": "v1"
},
{
"id": "CVE-2020-12279-fa1bf32c",
"digest": {
"threshold": 0.9,
"line_hashes": [
"91163887863019740474463251087811095055",
"163293920236655175007224761102751500986",
"304947559022233408970519915295579978259",
"337098278619693989970552484739974126394"
]
},
"source": "https://github.com/libgit2/libgit2/commit/64c612cc3e25eff5fb02c59ef5a66ba7a14751e4",
"target": {
"file": "src/checkout.c"
},
"deprecated": false,
"signature_type": "Line",
"signature_version": "v1"
}
],
"vanir_signatures_modified": "2026-10-20T13:44:01Z"
}
}
],
"modified": "2026-10-20T13:44:01.157681137Z",
"provider": "osv",
"references": [
"https://lists.debian.org/debian-lts-announce/2023/02/msg00034.html",
"https://github.com/libgit2/libgit2/releases/tag/v0.28.4",
"https://github.com/libgit2/libgit2/releases/tag/v0.99.0",
"https://lists.debian.org/debian-lts-announce/2022/03/msg00031.html",
"https://github.com/git/git/security/advisories/GHSA-589j-mmg9-733v",
"https://github.com/libgit2/libgit2/commit/64c612cc3e25eff5fb02c59ef5a66ba7a14751e4"
],
"provider_metadata": {
"unresolved_ranges": [
{
"cpes": [
"cpe:2.3:o:debian:debian_linux:9.0:*:*:*:*:*:*:*"
],
"vendor_product": "debian:debian_linux",
"extracted_events": [
{
"range": [
{
"introduced": "9.0"
},
{
"last_affected": "9.0"
}
],
"source": "CPE_STRING"
}
]
}
]
}
},
"related_cves": [
{
"value": "CVE-2020-12279",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 388001,
"published_at": "2020-04-27T17:15:13.47+00:00"
}