Skip to main content

Gitea Actions CVE-2026-104632

| EUVDEUVD-2026-93905 HIGH
Improper Authorization (CWE-285)
2026-10-06 88ee5874-cf24-4952-aea0-31affedb7ff2
8.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
    Gain Actions write access on repo
  2. Delivery
    Identify fork PR run awaiting approval
  3. Exploit
    Cancel the pending-approval run
  4. Execution
    Re-run, recreating jobs as waiting not blocked
  5. Persist
    Fork-supplied workflow executes on runner
  6. Impact
    Access CI secrets and compromise runner

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization verification
MITRE ATT&CK

1 technique across 1 tactic: Defense Evasion

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires all of the following concrete conditions, drawn from the description: (1) Gitea Actions must be enabled on the repository and at least one matching runner must be registered; (2) a pull request must originate from a first-time fork contributor so that the maintainer-approval gate is actually engaged (run.NeedApproval set); (3) the attacker must hold Actions write access on the repository (CVSS PR:L), enabling them to cancel and re-run the run; and (4) a run must be in the awaiting-approval state to be cancelled and re-run. The limiting factors are the Actions-write privilege requirement and the need for the fork-approval workflow to be in use - repositories that disable Actions, use no self-hosted/registered runners, or do not accept external fork pull requests are not exposed. No end-user interaction is required (UI:N).

Impact

Signals point to a genuine but not emergency-grade issue. The CVSS 3.1 base score of 8.8 (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H) reflects total technical impact - arbitrary fork-supplied workflow code executing on the repository's runners - which aligns with the SSVC 'Technical Impact: total' rating. However, the exploitation-probability signals all point low: EPSS is 0.16% (4th percentile), SSVC records 'Exploitation: none' and 'Automatable: no', the CVE is not listed in CISA KEV, and no public exploit code was identified (the only code artifact provided is the upstream fix, PR #39399, not an exploit). The key limiting factor is PR:L: the CVSS vector confirms the actor must already hold Actions write access on the repository, so this is an authorization-control bypass exploitable by a semi-trusted insider/contributor rather than an anonymous internet attacker. Net: a real priority for organizations running Gitea Actions with external fork contributors and self-hosted runners, but the required privilege and absence of any exploitation evidence make targeted misuse far more likely than widespread automated attack. No signals are in direct conflict; the high CVSS and low EPSS are reconcilable because CVSS measures impact while EPSS measures likelihood, and the PR:L precondition explains the low likelihood.

Exploit ScenarioDerived

A contributor who has been granted Actions write access on a Gitea repository notices a first-time fork pull request whose CI run is paused awaiting maintainer approval. They cancel that pending run and immediately re-run it; because the rerun path only checked that the prior run had finished, the new jobs are created as waiting instead of blocked, and the fork's workflow code executes on the repository's self-hosted runners with no approval. This lets untrusted pull-request code reach CI secrets and the runner environment. No public exploit code was identified at time of analysis.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
No patch listed yet 0.2% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 07, 2026

Gitea Actions in versions up to and including 1.27.3 can execute workflow code from an untrusted fork pull request head on the repository's runners without the maintainer approval that the first-time-contributor gate is supposed to require. An authenticated user holding Actions write permission can cancel a run that is still awaiting approval and then re-run it; the rerun path recreated the attempt's jobs as waiting instead of blocked while the run still recorded that approval was required, so the jobs were released without an approval decision. Signals point to a genuine but not emergency-grade issue: exploitation requires Actions enabled, a registered matching runner, a fork pull request from a first-time contributor, and Actions write access (CVSS PR:L), no public exploit code was identified at time of analysis, and EPSS is low at 0.16% (4th percentile).

RemediationAI

Upgrade Gitea to 28.0.0 or later, which is the vendor-released fix identified in the advisory, the vendor release blog (https://blog.gitea.com/release-of-28.0.0/), and the release tag (https://github.com/go-gitea/gitea/releases/tag/v28.0.0); the code-level fix is the upstream pull request https://github.com/go-gitea/gitea/pull/39399, which adds the IsAwaitingApproval() check so re-run attempts cannot be released without an approval decision. If immediate upgrade is not possible, the actionable compensating controls are: disable Gitea Actions on repositories that accept pull requests from external forks (this removes the execution path entirely but also disables all CI for those repositories), restrict Actions write permission to trusted maintainers only, since the bypass requires a user who can cancel and re-run a run, and avoid registering broadly accessible self-hosted runners that untrusted fork code could reach (limiting runner scope reduces the value of the bypass but does not remove it). Because the underlying defect is an authorization-logic gap rather than a configuration error, no configuration change fully replaces the patch; where approval-required workflows must remain enabled, treat any pre-28.0.0 cancellation-and-rerun of an unapproved fork run as a potential unreviewed code execution and review runner logs and workflow artifacts for those runs. Additional detail is available in the GitHub advisory GHSA-pvjf-7jrm-6w9g and the VulDB entry https://vuldb.com/vuln/414536.

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

The root cause is CWE-285 (Improper Authorization): Gitea's fork pull request approval gate is tracked on an ActionRun via the NeedApproval flag, but the logic that rebuilds jobs on a re-run only checked whether the run was finished and never re-evaluated whether approval was still pending. The upstream fix introduces an IsAwaitingApproval() helper on ActionRun (NeedApproval && !Status.IsDone()) and uses it consistently in the API approve handler, the web run view, ApproveAllChecks, and the merge-box status check, so that a cancelled-and-re-run attempt whose approval requirement is still outstanding produces jobs in the blocked state rather than the waiting state. The patch (PR 39399, models/actions/run.go, services/actions/approve.go, routers/api/v1/repo/actions_run.go, routers/web/repo/actions/view.go, routers/web/repo/pull.go) also adjusts concurrency handling so that approval releases only genuinely blocked jobs and excludes sibling jobs cancelled by the same concurrency group. The affected component is Gitea's built-in CI/CD subsystem, Gitea Actions, which pulls workflow definitions from the pull request head commit; when the approval check is skipped, the runner executes attacker-controlled workflow YAML in the context of the repository's registered runners. Per EUVD, all Gitea releases from 0 through 1.27.3 are affected; the issue is resolved in 28.0.0. The assessed CVSS vector CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H (8.8) reflects network-reachable exploitation by an authenticated Actions-write user with no user interaction, and total technical impact (CISA SSVC technical impact: total), consistent with code execution on CI runners that typically hold repository credentials.

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 8.8 HIGH
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
vuln.today AI 8.8 HIGH

Remotely reachable (AV:N), routine cancel-and-rerun (AC:L), requires Actions write access so PR:L, no user interaction; arbitrary workflow code on runners yields full C/I/A impact.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

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

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

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

Lifecycle Timeline

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

DescriptionCVE.org

Gitea Actions blocks the jobs of workflow runs from first-time fork pull request contributors until a maintainer approves the run. The rerun path only required a run to be finished and built the new attempt's jobs without considering the pending approval, so when a user with Actions write access cancelled a run that was awaiting approval and then re-ran it, the new jobs were created as waiting rather than blocked while the run still recorded that approval was required. Cancelling and re-running stale fork checks is a routine action that does not involve the approval control, so where Actions is enabled and a matching runner is registered, workflow code taken from the fork pull request head could run on the repository's runners without an explicit approval.

Technical POC Analysis

CWE-285 (Improper Authorization) per the CVE record; the GHSA itself lists no CWE and scores 9.0 Critical versus the CVE's 8.8 High.

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 Actions, the self-hosted CI/CD engine in Gitea deployments (affected through version 1.27.3), can be induced to run workflow code from an untrusted fork pull request on the organization's own runners without the maintainer approval the platform is supposed to enforce, meaning third-party code could execute on infrastructure that typically holds deployment credentials, registry tokens, and network access to internal systems. The flaw is triggered by an authenticated user holding Actions write permission - a low bar inside many engineering organizations - though it requires Actions to be enabled, a matching runner to be registered, and a fork pull request from a first-time contributor, so exposure is limited to teams that accept external contributions or run Actions on credentialed runners. Leadership should treat this as a supply-chain integrity gap rather than an active breach: there is no public exploit identified at time of analysis and exploitation is confirmed to require authenticated privileges, but the dependency on a vendor fix (none released at time of analysis) means interim policy controls are the only near-term defense.

Business Impact: Medium
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: disable automatic workflow execution from fork pull requests and require maintainer approval for all outside contributors; restrict or remove Actions write permission from non-essential accounts, as the issue is only reachable by authenticated users with that permission and no public exploit was identified at time of analysis (CISA KEV: not listed); audit Actions logs for cancel-then-rerun sequences that bypass the approval gate; rotate secrets and tokens accessible to runners if such reruns are found; scope workflow secrets to protected environments not exposed to fork-originated runs; and segment runner network access to limit lateral movement if untrusted code does execute.

Threat Intelligence Overview

EPSS Score
0.2%
Top 96% exploitable
Prevalence
Medium
popular self-hosted Git forge, common but not ubiquitous enterprise footprint
Data Quality
7 sources
Confidence: High

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 HIGH
CISA KEV No
Public POC No
EPSS 0.2%
Patch available No
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
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
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
Medium
Technical Impact
Total

Priority Score

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

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

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

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