IT SBIT Services
Schneeberger
DEEN
CVE tracker

Gitea: Review and execution mismatch through duplicate Git tree entries

CVE-2026-95106Critical 9.1

← All vulnerabilities

Summary

Gitea accepted pushed Git commits whose trees contain two entries with the same file name, which git fsck rejects. Gitea's web views show the first entry, while git checkout, Gitea Actions and release archives use the last. A contributor can therefore get a pull request approved that displays harmless code while CI runs different, attacker-controlled code from the same commit SHA, potentially exposing CI secrets.

Affected

  • Gitea up to and including 1.27.3
  • The advisory reproduced the issue on 1.27.2; the shared Forgejo codebase is likely affected as well

Fixed in

  • Gitea 28.0.0 (the release previously numbered 1.28.0), which rejects fsck-invalid objects on push (PR #39472)
  • Later releases (28.1.0, 28.2.0) include this fix
  • Upgrading does not clean up malformed trees already stored in existing repositories

Workaround

Unknown. The vendor documents no workaround. The advisory suggests showing a visible warning on trees with duplicate entries as an interim measure.

Exploitation

  • CISA SSVC: exploitation none, automatable yes, technical impact total
  • Not listed in CISA KEV
  • No public proof of concept or in-the-wild exploitation known; the advisory describes the mechanism in detail

Our recommendation

  • Update Gitea to 28.0.0 or later
  • Run git fsck on repositories with external contributions, focusing on commits pushed before the upgrade, because the fix does not rescan existing objects
  • Until patched, limit CI runs on untrusted pull requests and do not expose CI secrets to them
  • Review who can open pull requests and who can approve them; prioritise public or internet-facing instances with CI secrets

Public exploits

PoC-in-GitHub, Metasploit and Exploit-DB list nothing for this CVE.

Research sources

Researched and written up in English and German by an AI (Claude by Anthropic) based on NVD, CISA, EPSS and the sources listed. The vendor information is authoritative. Researched on 31 Oct 2026, 07:22.

Original description (NVD)

Gitea accepted pushed Git trees containing two entries with the same name, which Git's own consistency checks reject. Gitea's web views resolved such a path to the first entry, while `git checkout`, Gitea Actions, and release archives use the last. A contributor could open a pull request whose diff and file views show benign content while CI and checkouts at the same commit use different, attacker-controlled content. Incoming objects are now checked for consistency; objects already stored in existing repositories are not rescanned.

NVD references (4)

Sources

The tracker combines official, freely usable data sources – updated continuously:

This product uses data from the NVD API but is not endorsed or certified by the NVD. EPSS data © FIRST.org.

Affected? We can help.

We check whether your systems are affected, install updates and close the gap – continuously with the System Health Checker if you wish.