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.
Published: 2026-11-01
Score: n/a
EPSS: n/a
KEV: No
Impact: Stored Cross‑Site Scripting with potential full system compromise
Action: Immediate Patch
AI Analysis

Impact

Legacy Actions artifact uploads stored the request's Content‑Encoding header unchecked, causing the value to be served as the artifact's Content‑Type during download. When the value began with video/ or audio/, the browser’s sandboxing Content‑Security‑Policy was also removed. A user able to run an Actions job can upload content that, when a browser retrieves the artifact’s direct download URL, is rendered as HTML and executes arbitrary JavaScript in the context of the victim’s session. The attacker’s script runs with the victim’s privileges; for an admin account this results in full control of the Gitea instance. The flaw is classified as CWE‑79.

Affected Systems

The vulnerability affects Gitea installations that use legacy Actions artifact uploads (versions 1 to 3 of the artifact API) and run any Gitea release prior to 28.3.0. Public repositories that allow Actions jobs provide a direct, anonymous download URL for artifacts, so any public‑facing repository that has Actions enabled is susceptible. All Gitea versions before the 28.3.0 release are impacted; the 28.3.0 release applies a filter that keeps only the gzip marker and selects appropriate serve headers for valid media types.

Risk and Exploitability

The flaw is a severe stored XSS; it does not require additional authentication beyond the ability to trigger an Actions job. If an attacker can run a job (for example, through a public workflow or an exposed workflow file), they can upload a malicious artifact that will be rendered when any user opens the download link. The exploit can be performed anonymously against public repositories, so the risk is high for publicly exposed instances. The EPSS score is not available, and the vulnerability is not listed in CISA’s KEV catalog, but the severe impact and broad attack surface warrant immediate action.

Generated by OpenCVE AI on November 1, 2026 at 11:52 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade Gitea to version 28.3.0 or later
  • If an upgrade is not immediately possible, disable or restrict Actions jobs to administrators only and limit public repository access
  • Audit existing artifact download URLs in public repositories and remove or remediate any that contain suspect Content‑Type headers

Generated by OpenCVE AI on November 1, 2026 at 11:52 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Sun, 01 Nov 2026 10:00:00 +0000

Type Values Removed Values Added
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.
Title Gitea stored XSS through legacy Actions artifact Content-Encoding
Weaknesses CWE-79
References

Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: Gitea

Published:

Updated: 2026-11-01T09:48:32.206Z

Reserved: 2026-11-01T08:48:41.162Z

Link: CVE-2026-113429

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Deferred

Published: 2026-11-01T10:18:34.557

Modified: 2026-11-01T10:18:34.670

Link: CVE-2026-113429

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-11-01T12:00:08Z

Weaknesses
  • CWE-79

    Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')