Skip to main content

Gitea CVE-2026-101023

| EUVDEUVD-2026-94061 CRITICAL
Improper Authentication (CWE-287)
2026-10-06 88ee5874-cf24-4952-aea0-31affedb7ff2
Critical
Disputed · 9.1 Vendor: 88ee5874-cf24-4952-aea0-31affedb7ff2
View

Attack ChainAIDerived

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

  1. Access
    Obtain valid OAuth2 access token
  2. Exploit
    Submit token via refresh_token grant
  3. Execution
    Gitea issues new access and refresh tokens
  4. Impact
    Maintain persistent access beyond original expiry

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Authentication mechanism validation
MITRE ATT&CK

2 techniques across 2 tactics: Defense Evasion, Initial Access

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

Exploitation Conditions

Attacker must already possess an unexpired, valid OAuth2 access token issued for the same OAuth2 application and grant on a Gitea instance at version ≤28.0.0 with the OAuth2 provider in use. The flaw is that the token endpoint accepted any such valid access token under the refresh_token grant without checking it was actually a refresh token. Key limiting factor: there is NO path to exploitation without a pre-existing valid access token - this extends/persists already-granted access rather than granting new access, and does not by itself let an unauthenticated outsider in. No user interaction is required.

Impact

Signals conflict sharply here. The published CVSS is 9.1 Critical (AV:N/AC:L/PR:N/UI:N/C:H/I:H), and SSVC rates Technical Impact as 'total' and Automatable as 'yes' - which on paper argues for urgency. However, SSVC Exploitation is 'none', there is no CISA KEV listing, no public exploit code is identified, and EPSS is only 0.17% (6th percentile), indicating very low near-term exploitation probability. More importantly, the CVSS PR:N rating appears to overstate real-world attacker preconditions: per the description, exploitation requires the attacker to ALREADY hold a valid, unexpired OAuth2 access token for the same application and grant. This is not a path to initial compromise - it is a token-persistence/lifetime-extension flaw that undermines token expiry and revocation after a token has already leaked. Net assessment: this is a legitimate authentication/session-management defect worth patching on a normal cycle, but it is not a drop-everything, internet-facing pre-auth RCE despite the 9.1 label. Treat as medium-priority unless you have evidence of leaked OAuth2 tokens.

Exploit ScenarioDerived

An attacker who has obtained a valid but soon-to-expire OAuth2 access token (e.g. leaked from logs, a compromised client, or intercepted) submits it to Gitea's token endpoint using the refresh_token grant type. Because the endpoint validated the signature and grant but not the token's kind, Gitea issues a fresh access token and a new refresh token, letting the attacker retain access indefinitely past the original token's lifetime and survive expiry. No public exploit code is identified at time of analysis.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
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

OAuth2 token-endpoint misuse in Gitea 28.0.0 and earlier allows anyone holding a valid, unexpired OAuth2 access token to submit it under the refresh_token grant and receive a brand-new access token plus refresh token, effectively extending access past the credential's original expiry. Exploitation requires a pre-existing valid access token issued for the same OAuth2 application and grant, so this is a persistence/escalation-of-lifetime flaw rather than an entry point for an unauthenticated outsider; the assessed vector is CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N (NVD rates it 9.1 with PR:N). Multi-source signals conflict: NVD's score and CISA's SSVC rating of total technical impact are severe, while EPSS is only 0.17% (6th percentile) and SSVC lists exploitation as none - no public exploit code has been identified at time of analysis and the issue is not in CISA KEV.

RemediationAI

Upgrade to Gitea 28.1.0 or later (vendor-released patch: 28.1.0), available from https://github.com/go-gitea/gitea/releases/tag/v28.1.0 with details at https://blog.gitea.com/release-of-28.1.0/ and the advisory https://github.com/go-gitea/gitea/security/advisories/GHSA-469m-x4mw-38r3. Because the flaw only extends the life of credentials that already exist, an upgrade alone does not undo tokens an attacker may have refreshed: after patching, revoke and rotate all OAuth2 access and refresh tokens issued by the instance (deleting and re-authorizing the affected OAuth2 applications achieves this) and audit token-endpoint activity for refresh_token grant requests, especially from IPs or clients that never legitimately held a refresh token. The trade-off is that rotation invalidates every downstream integration and forces re-consent, so schedule it as a coordinated window. As a temporary compensating control where patching must be deferred, reduce access-token lifetime to the minimum the environment tolerates so a stolen token's usable window shrinks, and disable the OAuth2 provider entirely if no OAuth2 clients depend on it - noting that doing so breaks all OAuth2-based logins and integrations on the instance.

Affected VersionsENISA

Gitea 0 ≤28.0.0

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 ships an OAuth2 provider whose token endpoint implements the RFC 6749 refresh-token flow. Internally, tokens carry a 'kind' discriminator (oauth2_provider.KindRefreshToken) alongside their grant; the vulnerable handler validated the token's signature and its associated grant but never confirmed that the presented token was actually of the refresh-token kind. The upstream fix is a single guard in routers/web/auth/oauth2_provider.go - 'if err != nil || token.Kind != oauth2_provider.KindRefreshToken' - which closes the type-confusion path that let an access token masquerade as a refresh token. The root cause class is CWE-287 (Improper Authentication): a credential was accepted for a use it was not issued for. The referenced pull requests bundle this OAuth2 fix with unrelated hardening (LFS raw-file header handling, issue-attachment scoping, push-mirror permission checks, feed visibility, release/tag deletion, ForcePrivate handling), so operators should not assume every hunk in PR 39501/39507 maps to this CVE. No CPE strings were supplied by the sources, but EUVD scopes the flaw to Gitea 0 through 28.0.0, with 28.1.0 as the first fixed release.

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

Sources disagree (Medium–Critical)
Vendor (88ee5874-cf24-4952-aea0-31affedb7ff2) PRIMARY 9.1 CRITICAL
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
vuln.today AI 8.1 HIGH

Exploitation requires possession of a valid OAuth2 access token (a bearer credential), so PR:L rather than the published PR:N; network vector and low complexity hold, and token-scope access drives C:H/I:H.

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

vuln.today treats the vendor’s rating as authoritative. A higher third-party CVSS (e.g. CISA-ADP) is shown for transparency but does not drive the headline severity.

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
None

Lifecycle Timeline

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

DescriptionCVE.org

Gitea's OAuth2 token endpoint verified the signature and grant of a token submitted with the refresh_token grant type, but not that the token was a refresh token. An unexpired access token for the same OAuth2 application and grant could be exchanged for a new access token and refresh token. Whoever holds such an access token could keep access beyond the token's original lifetime.

Technical POC Analysis

Bug class: CWE-287 Improper Authentication.

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 28.0.0 and earlier is affected by a critical OAuth2 token-lifetime flaw that can let an existing token holder obtain new access and refresh tokens and extend access beyond the credential's original expiry. Organizations using affected Gitea instances for source code, CI/CD, or OAuth2-integrated services should treat this as a high-priority exposure because it can undermine token-expiry controls and prolong unauthorized access. No public exploit identified at time of analysis, and no vendor-released patch identified at time of analysis; leadership should prioritize immediate credential containment and vendor-watch while limiting OAuth2 grant exposure.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: audit and revoke/rotate all existing OAuth2 access and refresh tokens for Gitea 28.0.0 and earlier; restrict OAuth2 application registration and refresh_token grant use to trusted administrators and integrations; shorten OAuth2 token lifetimes and scopes; monitor authentication and OAuth2 logs for anomalous refresh_token grant issuance or post-expiry token use; consider disabling refresh_token grant for affected applications until a vendor patch is available.

Threat Intelligence Overview

EPSS Score
0.2%
Top 94% exploitable
Prevalence
Medium
popular self-hosted Git forge, common in dev and self-hosting setups, not ubiquitous
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.2%
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
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Total

Priority Score

46
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +46
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

Vendor StatusVendor

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