Gitea stored XSS through legacy Actions artifact Content-Encoding
Affects Gitea versions before 28.3.0 that use the legacy (v3) Actions artifact upload path. Fixed in Gitea 28.3.0.
Written by anthropic/claude-haiku-5.5 from the sources below. Verify against them.
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- Published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- A 0-100 score for how much a CVE matters across the industry: exploitation, exposure, how widely the software is used, severity and whether a fix exists.What do these mean? →
- 8/100 · provisional
- How many real-world setups can hit the bug, from the vendor's advisory and CISA data. It does not know your setup.What do these mean? →
- Specific setups only
- Fix
- Fixed in 28.3.0
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
Gitea, the self-hosted Git service, is affected through its Actions artifact download feature. An attacker who can run a CI job could upload a file that executes malicious scripts in a victim's browser when they open the download link, which could let the attacker take over the victim's account, including an administrator's and therefore the whole Gitea instance.
Read the original description
Legacy (v1 to v3) Actions artifact uploads stored the request's `Content-Encoding` header unchecked in the column that is served as the artifact's `Content-Type` on download, and a value starting with `video/` or `audio/` also removed the sandboxing Content-Security-Policy. A user who can run an Actions job could upload an artifact that a browser renders as HTML on the Gitea origin when the direct artifact download URL is opened, and the URL is reachable anonymously on public repositories. A victim who opens the link runs the attacker's script with their own session, which for an administrator means control of the instance. Legacy uploads now store only the `gzip` marker, and the special serve headers are chosen only for valid media types.
What to do
Check whether your setup matches what the bug needs.
Legacy (v3) Actions artifact upload path is used Content-Encoding value starts with video/ or audio/ (removes the sandbox CSP) Victim must open the direct artifact download URLUpgrade to a fixed version: 28.3.0.
Timeline
- CVE published
- First seen by cve.now
Affected versions
- gitea.dev
fixed in 28.3.0
Evidence 5
- Advisory
- Patch
- Patch
- Repository
- Link
Corrections
None so far.
Something wrong on this page? Report an error. Every fix is listed here.
Questions about CVE-2026-113429
What does this mean?
The legacy Actions artifact upload stores the Content-Encoding request header without checking it. When that value starts with video/ or audio/, Gitea also removes the sandbox Content-Security-Policy, so an attacker's JavaScript can run on the Gitea origin when a user opens the direct artifact download URL. The script runs with that user's session, and for an administrator this means control of the instance.Source: github.com
Am I affected, and how do I check?
Gitea versions before 28.3.0 are affected, and the bug needs the legacy (v3) Actions artifact upload path in use with a Content-Encoding value starting with video/ or audio/. The facts do not give a command or setting to confirm whether the v3 upload path is in use, so check the Gitea version and the Actions artifact configuration against these conditions.Source: github.com
What should I do about it?
Upgrade Gitea to 28.3.0 or later, which is the fixed version listed for this vulnerability.Source: github.com
Is it being exploited?
It is not in CISA's Known Exploited Vulnerabilities catalog, and CISA's SSVC assessment does not mark exploitation as active. That does not mean it has not been attacked: vendors and researchers can report attacks before CISA lists them. No public exploit code is tracked.Source: cve.now feed data