Skip to main content

Gitea Actions EUVDEUVD-2026-93919

| CVE-2026-94205 CRITICAL
Unintended Proxy or Intermediary ('Confused Deputy') (CWE-441)
2026-10-06 88ee5874-cf24-4952-aea0-31affedb7ff2
9.8
CVSS 3.1 · Vendor: 88ee5874-cf24-4952-aea0-31affedb7ff2
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Open fork PR with malicious workflow
  2. Delivery
    Maintainer adds label during triage
  3. Exploit
    pull_request run created without approval
  4. Execution
    Fork workflow executes on base runner
  5. Impact
    Steal CI secrets and compromise pipeline

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V4 - API and Web Service Proxy/intermediary controls
Exploitation Conditions

Requires all of: Gitea Actions enabled on the base repository, a matching Actions runner registered for it, an attacker-submitted pull request from a fork whose head contains the malicious workflow, and a repository maintainer who triggers a pull_request activity (such as adding a label) during routine triage. The approval check is keyed to the triggering maintainer instead of the fork author, so maintainer triage inadvertently releases the fork-controlled run. Limiting factors: exploitation cannot proceed without that privileged maintainer action, Actions and a runner must be configured (non-default for many deployments), and only Gitea versions ≤1.27.3 are affected (fixed in 28.0.0).

Impact

Signals conflict sharply. The supplied CVSS 9.8 (AV:N/AC:L/PR:N/UI:N) frames this as trivially remote and unauthenticated, but the description makes clear exploitation hinges on a repository maintainer performing a triage action (e.g. adding a label) on an attacker's fork PR, plus Actions being enabled and a runner registered - so PR:N/UI:N overstates reachability. The lower-urgency signals are more consistent with reality: EPSS is 0.15% (3rd percentile), CISA SSVC records Exploitation=none, there is no CISA KEV listing, and no public exploit is identified at time of analysis. Offsetting that, SSVC rates Automatable=yes and Technical Impact=total, and the outcome - fork-controlled workflow code running on the base repository's runners - is genuinely severe, exposing CI secrets and enabling pipeline compromise. Net: this is a real, high-impact confused-deputy flaw that should be patched promptly on Internet-exposed Gitea instances that use Actions, but it is not a drop-everything mass-exploitation event; the maintainer-interaction and configuration preconditions make it opportunistic/targeted rather than widely wormable, and the headline 9.8 should be treated as inflated relative to the actual preconditions.

Exploit ScenarioDerived

An attacker opens a pull request from a fork that embeds a malicious workflow in the fork head. When a maintainer performs ordinary triage such as adding a label, Gitea evaluates the approval requirement against the maintainer rather than the fork author, so the fork-controlled workflow runs on the base repository's registered runners without approval and executes attacker code with access to runner secrets. No public exploit is identified at time of analysis.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
No patch listed yet 0.1% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 07, 2026

Fork-originated Gitea Actions workflows can run on a base repository's registered runners without the required approval when a repository maintainer performs ordinary pull request triage, such as adding a label, because the approval decision was keyed to the user who triggered the event rather than the fork pull request author, allowing fork-controlled workflow code to execute in the base repository's CI context. Gitea versions up to and including 1.27.3 are affected when Actions is enabled and a matching runner is registered; the issue is fixed in Gitea 28.0.0. No public exploit code was identified at time of analysis and EPSS is low (0.15%, 3rd percentile), but exploitation is not autonomous: the assessed vector (CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:U/C:H/I:H/A:H) requires an attacker-submitted fork pull request plus a privileged maintainer action, and CISA SSVC rates the technical impact as total, so the outcome when the prerequisite chain is met is full compromise of confidentiality, integrity, and availability of the workflow execution environment.

RemediationAI

Upgrade to Gitea 28.0.0 or later; this is the vendor-released fix (upstream PR/commit 39399, release tag v28.0.0, announcement at https://blog.gitea.com/release-of-28.0.0/ and advisory https://github.com/go-gitea/gitea/security/advisories/GHSA-xh39-mxw9-34pp). Where an immediate upgrade is not possible on a self-hosted instance, apply compensating controls against the specific prerequisite chain: disable Gitea Actions for repositories that accept pull requests from forks (or globally) so no fork-controlled workflow can be scheduled - the trade-off is the loss of CI/CD for those repositories; if Actions must stay on, do not register long-lived runners against repositories that accept fork pull requests, or use ephemeral, credential-scoped runners with no access to production secrets, accepting that code execution still occurs on the runner host; and restrict who may perform pull_request-triggering triage actions such as adding labels, editing titles, or re-opening fork pull requests to a small trusted group, understanding that this only reduces, not eliminates, the window because any maintainer action during triage is sufficient. In all cases, audit Actions run history for fork pull request workflows that started without an explicit approval, revoke and rotate any repository, environment, or registry secrets reachable from those runs, and review runner logs for unexpected outbound network activity, since the technical impact when the chain is completed is total.

Affected VersionsENISA

Gitea 0 ≤1.27.3

Affected Packages

euvd gitea no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Gitea Actions is a CI/CD engine compatible with the GitHub Actions workflow format, where workflow definitions (for example in .gitea/workflows or .github/workflows) are read from the pull request head and jobs are dispatched to runner agents registered against the repository. The root cause maps to CWE-441 (Unintended Proxy or Intermediary, i.e. a confused-deputy condition): Gitea treated the maintainer who triggered a pull_request activity as the trusted principal, implicitly authorizing a workflow whose content was attacker-controlled from the fork head, instead of evaluating approval against the fork pull request author. The upstream fix in PR 39399 introduces ActionRun.IsAwaitingApproval() (NeedApproval && !run.Status.IsDone()) so the approval state is derived from the run itself rather than a stale flag, and it is propagated through the web and API approval paths (routers/web/repo/actions/view.go, routers/web/repo/pull.go, routers/api/v1/repo/actions_run.go, services/actions/approve.go). The same pull request also hardens concurrency handling during approval by cancelling sibling jobs in a shared concurrency group (slices.DeleteFunc on jobs whose RunID matches the attempt, PrepareToStartRunWithConcurrency returning StatusBlocked, and skipping jobs cancelled by a sibling), and it changes the API conflict message to 'run is not waiting for approval'. The advisory notes that only versions up to 1.27.3 are affected; 28.0.0 is the first fixed release, and the public base score of 9.8 (AV:N/AC:L/PR:N/UI:N) should be read as a worst-case framing that the assessed vector tempers with AC:H, PR:L, and UI:R given the mandatory maintainer interaction.

Know when Gitea gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (88ee5874-cf24-4952-aea0-31affedb7ff2) PRIMARY 9.8 CRITICAL
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
vuln.today AI 7.1 HIGH

Attacker needs an account to open a fork PR (PR:L) and depends on a maintainer's triage action plus Actions+runner config (UI:R, AC:H); runner code execution yields full C/I/A.

3.1 AV:N/AC:H/PR:L/UI:R/S:U/C:H/I:H/A:H
4.0 AV:N/AC:H/AT:P/PR:L/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Red Hat 8.0 HIGH

Primary rating from Vendor (88ee5874-cf24-4952-aea0-31affedb7ff2).

CVSS VectorVendor: 88ee5874-cf24-4952-aea0-31affedb7ff2

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

3
CVSS changed
Oct 07, 2026 - 21:23 NVD
9.8 (None) 9.8 (CRITICAL)
CVE Published
Oct 06, 2026 - 20:17 cve.org
UNKNOWN (no severity yet)
CVE Published
Oct 06, 2026 - 20:17 cve.org
CRITICAL 9.8

DescriptionCVE.org

Gitea Actions decided whether a fork pull request run needed approval based on the user who triggered the event rather than the pull request author. For pull_request activity triggered by a maintainer during ordinary triage, such as adding a label, the run was created without requiring approval, while the workflow definition was still taken from the fork head. Where Actions is enabled and a matching runner is registered, fork-controlled workflow code could run on the base repository's runners without an explicit approval.

Technical POC Analysis

CWE-441, Confused Deputy.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

Gitea deployments up to and including 1.27.3 with Actions enabled and a registered runner are exposed to a critical workflow approval bypass that can allow fork-controlled code to execute in the base repository's CI context. Routine maintainer triage of a fork pull request, such as adding a label, can inadvertently authorize the run because approval is keyed to the triggering user rather than the fork author. No public exploit identified at time of analysis, but successful exploitation can lead to full compromise of confidentiality, integrity, and availability when the prerequisite chain is met.

Business Impact: Severe
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.1%
Top 97% exploitable
Prevalence
Medium
popular self-hosted Git service, moderate production footprint, far below GitHub
Data Quality
7 sources
Confidence: High
EUVD 🇯🇵JVN NVD CVE.org EPSS Vulnrichment Vendor GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity CRITICAL
CISA KEV No
Public POC No
EPSS 0.1%
Patch available No
Active threat No
Deciding rule
CRITICAL severity
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Out-of-Cycle
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
Very High
Technical Impact
Total

Priority Score

49
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +49
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

More in Gitea

View all
CVE-2026-60004 CRITICAL POC
9.8

Remote code execution in Gitea (self-hosted Git service) via a code-injection flaw (CWE-94) allows attackers to run arbi

CVE-2026-27771 HIGH POC
8.2 Jul 03

Broken access control in Gitea's Composer package registry (versions up to and including 1.26.1) lets remote attackers r

CVE-2022-30781 HIGH POC
7.5 May 16

Gitea before 1.16.7 does not escape git fetch remote. Rated high severity (CVSS 7.5), this vulnerability is remotely exp

CVE-2020-14144 HIGH POC
7.2 Oct 16

The git hook feature in Gitea 1.1.0 through 1.12.5 might allow for authenticated remote code execution in customer envir

CVE-2024-6886 CRITICAL POC
10.0 Aug 06

Improper Neutralization of Input During Web Page Generation (XSS or 'Cross-site Scripting') vulnerability in Gitea Gitea

CVE-2026-72867 CRITICAL POC
9.9 Aug 10

Authenticated command injection in Dokploy (self-hostable PaaS) versions 0.29.3 through 0.29.12 lets a low-privileged us

CVE-2026-20896 CRITICAL POC
9.8 Jul 03

Reverse-proxy authentication bypass in the official Gitea Docker image (versions up to and including 1.26.2) allows any

CVE-2026-59774 CRITICAL POC
9.8

Path traversal in Gitea's Org-mode (`.org`) markup renderer allows an attacker who can get Org-mode content rendered by

CVE-2026-58053 CRITICAL POC
9.4 Jun 28

Container escape in Gitea act_runner (Docker backend, through act 0.262.0) lets an authenticated user with workflow-exec

CVE-2019-11229 HIGH POC
8.8 Apr 15

models/repo_mirror.go in Gitea before 1.7.6 and 1.8.x before 1.8-RC3 mishandles mirror repo URL settings, leading to rem

CVE-2026-57894 HIGH POC
8.5 Jul 21

Server-side request forgery and internal repository exfiltration in Gitea before 1.27.0 lets a low-privileged authentica

CVE-2026-24791 HIGH POC
8.1 Jun 17

Authorization bypass in Gitea versions 1.22.3 through 1.26.1 allows holders of `public-only` access tokens or OAuth gran

Vendor StatusVendor

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy