vciy

Git, path traversal: 22 records, one defect family

Git has been reported 22 separate times for the same kind of mistake, CWE-22, between 2020-11-17 and 2026-08-28. A defect family is our own grouping of the CVE corpus: every record naming one product and one weakness class, collected so a repeat is visible as a repeat. No public source publishes this, and what this page counts is how often this one product has gone wrong in this one way.

What this page is, and what it is not

The records are public. This grouping is not, and this one took more than a lookup. Every record here carries CWE-22, which matches exactly. The product name does not: the authorities wrote it 5 different ways, and no text match joins those strings, so a search for any one spelling finds a fraction of what exists and gives no sign the rest is there. Our own embedding, pro@dim2000, read those 5 groups, of 9, 5, 4, 2, 2 records, and found they name one product. That is how 22 records no public source connects came to be on one page, and it is the part you cannot look up. Every spelling stays printed beside its own records, because a judgement you cannot inspect is a judgement you should not cite, and if one of them is a different product this family is wrong and its count is wrong with it.

One record is an incident. 22 filings, between 2020-11-17 and 2026-08-28, all landing on the same weakness class in the same product, is a habit in what gets reported here, and a habit is something you can plan around. This is what we held on 2026-09-20.

A repeat is evidence about where to look. If you are reviewing Git, the records below say which mistake has already been found more than once, which is the cheapest place a reviewer can start. If you are asking the vendor a question, a count under one weakness class is a better question than any single record is.

What this page cannot tell you is decided by what was joined. A product name and a weakness class settled membership, so those two values are the whole of what the page asserts. Records here may sit in the same line of code or in unrelated parts of the product, and we hold no value that separates those cases. A fixed version named in one record closes that record and says nothing about the others. And nothing here describes anyone's systems, because no value in this family connects a product name to an installation.

CVE-2021-22190CVE-2022-2531CVE-2022-3060CVE-2023-2825CVE-2023-3385CVE-2024-0402CVE-2024-2434CVE-2024-8647CVE-2026-10053CVE-2023-41040CVE-2026-44243CVE-2026-73620CVE-2026-76222CVE-2026-78677CVE-2023-23946CVE-2023-25652CVE-2024-32002CVE-2024-32465CVE-2020-13355CVE-2020-26405CVE-2026-82251CVE-2026-82253
This family arrived in 5 groups between 2020-11-17 and 2026-08-28. The largest holds 9 of the 22 records and the next holds 5, so no single announcement accounts for most of it.

The names the authorities used

5 different ways, each written by whoever filed the records under it. They are printed as written rather than tidied, because the tidying is the step that would hide what was merged.

git
gitlab
gitlab ce/ee
gitoxidelabs gitoxide
gitpython-developers gitpython

These records name more than one weakness class each. All 16 carry CWE-22, which is what this family was grouped on, and one of them also names CWE-434, unrestricted upload of file with dangerous type. The roster below shows what each record names; both readings are the record's own, filed together by the same authority.

Family membership: computed, pro@dim2000

What pulled them together

These records reached one family from 5 separate groups. A join on the product name alone could not see they were the same, because the authorities wrote the product and its versions differently each time. The grouping was computed by pro@dim2000.

9 recordsCVE-2021-22190, CVE-2022-2531, CVE-2022-3060, CVE-2023-2825, CVE-2023-3385, CVE-2024-0402, CVE-2024-2434, CVE-2024-8647, CVE-2026-10053
5 recordsCVE-2023-41040, CVE-2026-44243, CVE-2026-73620, CVE-2026-76222, CVE-2026-78677
4 recordsCVE-2023-23946, CVE-2023-25652, CVE-2024-32002, CVE-2024-32465
2 recordsCVE-2020-13355, CVE-2020-26405
2 recordsCVE-2026-82251, CVE-2026-82253

What the records offer

10 of 22 records publish a fixed version. For the other 12, held sources name none.

The earliest was published 2020-11-17 and the latest 2026-08-28. That span is how long this product kept producing this weakness, not how long any one record took to fix.

What this page does not cover

This is a family of records that read alike. It is not a shared vulnerability, not an inventory, and not a statement that one fix closes the rest. Each record's own state, its own dates and its own receipts are on its own page.

Grouped by shared product and weakness, not by shared vulnerability. Each record's own state is on its own page.

Everything this vendor has, including records outside this family:

CVE-2020-13355no title heldImproper limitation of a pathname to a…
CVE-2020-26405no title heldImproper limitation of a pathname to a…
CVE-2021-22190no title heldImproper handling of url encoding (hex…
CVE-2022-2531no title heldImproper limitation of a pathname to a…
CVE-2022-3060no title heldImproper control of resource identifiers…
CVE-2023-23946Git's `git apply` overwriting paths outside the working treeCWE-22: Improper Limitation of a Pathname to a…
CVE-2023-25652"git apply --reject" partially-controlled arbitrary file writeCWE-22: Improper Limitation of a Pathname to a…
CVE-2023-2825no title heldImproper limitation of a pathname to a…
CVE-2023-3385Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal') in GitLabCWE-22: Improper Limitation of a Pathname to a…
CVE-2023-41040GitPython blind local file inclusionCWE-22: Improper Limitation of a Pathname to a…
CVE-2024-0402Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal') in GitLabCWE-22: Improper Limitation of a Pathname to a…
CVE-2024-2434Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal') in GitLabCWE-22: Improper Limitation of a Pathname to a…
CVE-2024-32002Git's recursive clones on case-insensitive filesystems that support symlinks are susceptible to Remote Code ExecutionCWE-22: Improper Limitation of a Pathname to a…
CVE-2024-32465Git's protections for cloning untrusted repositories can be bypassedCWE-22: Improper Limitation of a Pathname to a…
CVE-2024-8647Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal') in GitLabCWE-22: Improper Limitation of a Pathname to a…
CVE-2026-10053Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal') in GitLabCWE-22: Improper Limitation of a Pathname to a…
CVE-2026-44243GitPython: Path traversal in GitPython reference APIs allows arbitrary file write and delete outside the repositoryCWE-22: Improper Limitation of a Pathname to a…
CVE-2026-73620GitPython before 3.1.57 Arbitrary File Overwrite and ReadCWE-22 Improper Limitation of a Pathname to a…
CVE-2026-76222GitPython before 3.1.58 Path Traversal via .gitmodules Submodule NameCWE-22 Improper Limitation of a Pathname to a…
CVE-2026-78677GitPython before 3.1.59 Path Traversal via separate-git-dirCWE-22 Improper Limitation of a Pathname to a…
CVE-2026-82251gitoxide before 0.52.1 Path Traversal via Submodule NameCWE-22 Improper Limitation of a Pathname to a…
CVE-2026-82253gitoxide before 0.82.0 Path Traversal via Submodule Name Validation BypassCWE-22 Improper Limitation of a Pathname to a…

22 records, read from the index as it stood on 20 Sep 2026. Every row opens the record it names, and every value on that record opens its own receipt.

Everything on this page is free. Public data. Withholding it protects nothing.